Skip to content

Commit

Permalink
Add initial tests for api()
Browse files Browse the repository at this point in the history
  • Loading branch information
stevieb9 committed Apr 20, 2022
1 parent e015859 commit dfad89b
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 24 deletions.
53 changes: 53 additions & 0 deletions t/500-api.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
use warnings;
use strict;

use lib 't/';

use Data::Dumper;
use Mock::Sub;
use Tesla::API;
use Test::More;
use TestSuite;

my $ms = Mock::Sub->new;
my $ts = TestSuite->new;

my $access_token_sub = $ms->mock('Tesla::API::_access_token');
my $tesla_api_sub = $ms->mock('Tesla::API::_tesla_api_call');

my $end_non_id = 'VEHICLE_LIST';
my $end_with_id = 'VEHICLE_SUMMARY';

# default config - no ID
{
my $t= Tesla::API->new;
my $response_data = $ts->json('api_vehicle_list_data');

$tesla_api_sub->return_value(1, 200, $ts->json('api_vehicle_list_data'));

my $api_data = $t->api(endpoint => $end_non_id);
my $test_data = $ts->data->{api_vehicle_list_data}{response};

is scalar @$api_data, scalar @$test_data, "API returns proper num of values";

is
keys %{ $api_data->[0] },
keys %{ $test_data->[0] },
"API return has proper number of keys ok";

my %cache = $t->_api_cache_data;
my $cache_data = $cache{$end_non_id}{0}->{data};

is scalar @$cache_data, scalar @$test_data, "API cache returns proper num of values";

is
keys %{ $cache_data->[0] },
keys %{ $test_data->[0] },
"API cache return has proper number of keys ok";
}

sub check_cache {

}

done_testing();
13 changes: 13 additions & 0 deletions t/TestSuite.pm
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package TestSuite;
use warnings;
use strict;

use Data::Dumper;
use JSON;

my $file = 't/test_data/test_data.json';
Expand All @@ -22,6 +23,18 @@ sub data {

return $perl;
}
sub json {
my ($self, $want) = @_;

my $data = data();

if (! $want) {
return encode_json($data);
}
else {
return encode_json($data->{$want});
}
}
sub access_token_file {
my ($self, $tesla) = @_;
my $token_data = $self->data->{token_data};
Expand Down
72 changes: 48 additions & 24 deletions t/test_data/test_data.json
Original file line number Diff line number Diff line change
@@ -1,35 +1,59 @@
{
"auth_url_extract": "https://auth.tesla.com/void/callback?code=2B51b8031f2b4ad4db52873da125b729497593e6c15c4a2dd591e698777f&state=123&issuer=https%3A%2F%2Fauth.tesla.com%2Foauth2%2Fv3",
"token_data": {
"access_token":"EYJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlR3bjV2bmNQUHhYNmprc2w5SUYyNnF4VVFfdyJ9.eyJpc3MiOiJodHRwczovL2F1dGgudGVzbGEuY29tL29hdXRoMi92MyIsImF1ZCI6WyJodHRwczovL293bmVyLWFwaS50ZXNsYW1vdG9ycy5jb20vIiwiaHR0cHM6Ly9hdXRoLnRlc2xhLmNvbS9vYXV0aDIvdjMvdXNlcmluZm8iXSwiYXpwIjoib3duZXJhcGkiLCJzdWIiOiI0ZjdlZmQ0My0zZTZjLTRhNjUtYWE2NC0yM2UxN2VmMzZiZjMiLCJzY3AiOlsib3BlbmlkIiwiZW1haWwiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicHdkIl0sImV4cCI6MTY1MDQxMTIyMiwiaWF0IjoxNjUwMzgyNDIyLCJhdXRoX3RpbWUiOjE2NTAzODI0MTF9.E4I_MqVZRDbIbQQ3dHHYZrUgecnxjaQQ40BXUuy3VdHCB_3VhxAUmRibBkfm7fKQaRoKwCYapQ_L9CfvYCQ7-Vp1o80Ytjig5BLkV0aZ2Ju2eE79uwd7ZOfHwcbq8BFW5gd2rorqfB5IQPUtz_1wiS8Qb9pGj-PnZ0E8wuU9sJBRTr9UzZc7Tma_PNfGgXL71iq-TNuT9TS89BkouyV39IVyic005Uj2rhSumMqT4rmW_TFes993zA0BZIBSq85z826Dp3H7LFuhnLU-4uEuti5Ur3PtNkyeG6zGh9AFS1u4CApA1UC3gfRxdMTxHgUspkN5g3vggJkPGxWVdyRh_A",
"refresh_token":"EYJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlR3bjV2bmNQUHhYNmprc2w5SUYyNnF4VVFfdyJ9.eyJpc3MiOiJodHRwczovL2F1dGgudGVzbGEuY29tL29hdXRoMi92MyIsImF1ZCI6Imh0dHBzOi8vYXV0aC50ZXNsYS5jb20vb2F1dGgyL3YzL3Rva2VuIiwiaWF0IjoxNjUwMzgyNDIyLCJzY3AiOlsib3BlbmlkIiwib2ZmbGluZV9hY2Nlc3MiXSwiZGF0YSI6eyJ2IjoiMSIsImF1ZCI6Imh0dHBzOi8vb3duZXItYXBpLnRlc2xhbW90b3JzLmNvbS8iLCJzdWIiOiI0ZjdlZmQ0My0zZTZjLTRhNjUtYWE2NC0yM2UxN2VmMzZiZjMiLCJzY3AiOlsib3BlbmlkIiwiZW1haWwiLCJvZmZsaW5lX2FjY2VzcyJdLCJhenAiOiJvd25lcmFwaSIsImFtciI6WyJwd2QiXSwiYXV0aF90aW1lIjoxNjUwMzgyNDExfX0.u0YlmMDg9-x5vJ3COYH5GlE1Qkt7a5jHe3bquYwsA2kdFlJo4SEvkr7AI4rxfQpxnZC0TSvcQQrG4zHJyNQ9PM8Xz11ieq4bEEPA-EwbOVSzarMk4CQPI0Dpf2C6FZuMmA7jwkESliD2B8Ppdj7e4MPpU1POAaZHT_PaAEr1rjfwYe6LDwhfOUY9oPrOSojxi7sZIJpUtQlhWMBQPyrrw0BqoRxN3m7WxJq8CRjTHWNkRonpJHlglsQtqYU5-VPdQ9CvPrSRs0PBFO3iQbBjFWNMveZ4tIKygdEFK9w2tLLFm0ofT1_TS4Kl44EU6vPkYhChEpibmbyOGQIKQGK07w",
"id_token":"EYJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlR3bjV2bmNQUHhYNmprc2w5SUYyNnF4VVFfdyJ9.eyJpc3MiOiJodHRwczovL2F1dGgudGVzbGEuY29tL29hdXRoMi92MyIsImF1ZCI6Im93bmVyYXBpIiwic3ViIjoiNGY3ZWZkNDMtM2U2Yy00YTY1LWFhNjQtMjNlMTdlZjM2YmYzIiwiZXhwIjoxNjUwNDExMjIyLCJpYXQiOjE2NTAzODI0MjIsImF1dGhfdGltZSI6MTY1MDM4MjQxMSwiZW1haWwiOiJ3ZXdhdGVyc0BzaGF3LmNhIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJ1cGRhdGVkX2F0IjoxNjM5NjQwMTYyfQ.JM1o8DrIwvcZ-iPqvGGp9vzfjrNCjHVP_dddluhvi8OT_NrCpuFMLHaowVZuPOFIN6-hqzc-x8Q2U8jSb0ZdZf4mVUPEoT3er7MeFrOxljGbAkUIHEw0NcOnzsazndRSPwtfoZCVRCXYmnvCBXLTAcbuZhRTyuMLfux8Fewb1qnfLrIC8UjaVzTjI-zMql4layPUE2twiJeA_EMyvgHAdRtY-a9DBbIKz8bQxALx5kbTeZcU_5fQpS2kxMWL-vGEAd9RjVQSkyRfCrA_iFcdHhK-7C9MbEdI48h9_J9mWUPI_M1pELCjymzm5j1nmjz6UINY-uctJM-nH_WmuTEQPg",
"expires_in":28800,
"state":"123",
"token_type":"Bearer"
"access_token": "EYJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlR3bjV2bmNQUHhYNmprc2w5SUYyNnF4VVFfdyJ9.eyJpc3MiOiJodHRwczovL2F1dGgudGVzbGEuY29tL29hdXRoMi92MyIsImF1ZCI6WyJodHRwczovL293bmVyLWFwaS50ZXNsYW1vdG9ycy5jb20vIiwiaHR0cHM6Ly9hdXRoLnRlc2xhLmNvbS9vYXV0aDIvdjMvdXNlcmluZm8iXSwiYXpwIjoib3duZXJhcGkiLCJzdWIiOiI0ZjdlZmQ0My0zZTZjLTRhNjUtYWE2NC0yM2UxN2VmMzZiZjMiLCJzY3AiOlsib3BlbmlkIiwiZW1haWwiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicHdkIl0sImV4cCI6MTY1MDQxMTIyMiwiaWF0IjoxNjUwMzgyNDIyLCJhdXRoX3RpbWUiOjE2NTAzODI0MTF9.E4I_MqVZRDbIbQQ3dHHYZrUgecnxjaQQ40BXUuy3VdHCB_3VhxAUmRibBkfm7fKQaRoKwCYapQ_L9CfvYCQ7-Vp1o80Ytjig5BLkV0aZ2Ju2eE79uwd7ZOfHwcbq8BFW5gd2rorqfB5IQPUtz_1wiS8Qb9pGj-PnZ0E8wuU9sJBRTr9UzZc7Tma_PNfGgXL71iq-TNuT9TS89BkouyV39IVyic005Uj2rhSumMqT4rmW_TFes993zA0BZIBSq85z826Dp3H7LFuhnLU-4uEuti5Ur3PtNkyeG6zGh9AFS1u4CApA1UC3gfRxdMTxHgUspkN5g3vggJkPGxWVdyRh_A",
"refresh_token": "EYJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlR3bjV2bmNQUHhYNmprc2w5SUYyNnF4VVFfdyJ9.eyJpc3MiOiJodHRwczovL2F1dGgudGVzbGEuY29tL29hdXRoMi92MyIsImF1ZCI6Imh0dHBzOi8vYXV0aC50ZXNsYS5jb20vb2F1dGgyL3YzL3Rva2VuIiwiaWF0IjoxNjUwMzgyNDIyLCJzY3AiOlsib3BlbmlkIiwib2ZmbGluZV9hY2Nlc3MiXSwiZGF0YSI6eyJ2IjoiMSIsImF1ZCI6Imh0dHBzOi8vb3duZXItYXBpLnRlc2xhbW90b3JzLmNvbS8iLCJzdWIiOiI0ZjdlZmQ0My0zZTZjLTRhNjUtYWE2NC0yM2UxN2VmMzZiZjMiLCJzY3AiOlsib3BlbmlkIiwiZW1haWwiLCJvZmZsaW5lX2FjY2VzcyJdLCJhenAiOiJvd25lcmFwaSIsImFtciI6WyJwd2QiXSwiYXV0aF90aW1lIjoxNjUwMzgyNDExfX0.u0YlmMDg9-x5vJ3COYH5GlE1Qkt7a5jHe3bquYwsA2kdFlJo4SEvkr7AI4rxfQpxnZC0TSvcQQrG4zHJyNQ9PM8Xz11ieq4bEEPA-EwbOVSzarMk4CQPI0Dpf2C6FZuMmA7jwkESliD2B8Ppdj7e4MPpU1POAaZHT_PaAEr1rjfwYe6LDwhfOUY9oPrOSojxi7sZIJpUtQlhWMBQPyrrw0BqoRxN3m7WxJq8CRjTHWNkRonpJHlglsQtqYU5-VPdQ9CvPrSRs0PBFO3iQbBjFWNMveZ4tIKygdEFK9w2tLLFm0ofT1_TS4Kl44EU6vPkYhChEpibmbyOGQIKQGK07w",
"id_token": "EYJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlR3bjV2bmNQUHhYNmprc2w5SUYyNnF4VVFfdyJ9.eyJpc3MiOiJodHRwczovL2F1dGgudGVzbGEuY29tL29hdXRoMi92MyIsImF1ZCI6Im93bmVyYXBpIiwic3ViIjoiNGY3ZWZkNDMtM2U2Yy00YTY1LWFhNjQtMjNlMTdlZjM2YmYzIiwiZXhwIjoxNjUwNDExMjIyLCJpYXQiOjE2NTAzODI0MjIsImF1dGhfdGltZSI6MTY1MDM4MjQxMSwiZW1haWwiOiJ3ZXdhdGVyc0BzaGF3LmNhIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJ1cGRhdGVkX2F0IjoxNjM5NjQwMTYyfQ.JM1o8DrIwvcZ-iPqvGGp9vzfjrNCjHVP_dddluhvi8OT_NrCpuFMLHaowVZuPOFIN6-hqzc-x8Q2U8jSb0ZdZf4mVUPEoT3er7MeFrOxljGbAkUIHEw0NcOnzsazndRSPwtfoZCVRCXYmnvCBXLTAcbuZhRTyuMLfux8Fewb1qnfLrIC8UjaVzTjI-zMql4layPUE2twiJeA_EMyvgHAdRtY-a9DBbIKz8bQxALx5kbTeZcU_5fQpS2kxMWL-vGEAd9RjVQSkyRfCrA_iFcdHhK-7C9MbEdI48h9_J9mWUPI_M1pELCjymzm5j1nmjz6UINY-uctJM-nH_WmuTEQPg",
"expires_in": 28800,
"state": "123",
"token_type": "Bearer"
},
"api_cache_data": {
"data" : {
"id_s" : "492932005972429",
"calendar_enabled" : true,
"backseat_token_updated_at" : null,
"state" : "online",
"id" : 1492932005972429,
"api_version" : 36,
"tokens" : [
"data": {
"id_s": "492932005972429",
"calendar_enabled": true,
"backseat_token_updated_at": null,
"state": "online",
"id": 1492932005972429,
"api_version": 36,
"tokens": [
"089956bbfcfe61ef",
"fd418789dffe54fc"
],
"access_type" : "OWNER",
"in_service" : false,
"vehicle_id" : 896783052,
"option_codes" : "AD15,MDL3,PBSB,RENA,BT37,ID3W,RF3G,S3PB,DRLH,DV2W,W39B,APF0,COUS,BC3B,CH07,PC30,FC3P,FG31,GLFR,HL31,HM31,IL31,LTPB,MR31,FM3B,RS3H,SA3P,STCP,SC04,SU3C,T3CA,TW00,TM00,UT3P,WR00,AU3P,APH3,AF00,ZCST,MI00,CDM0",
"vin" : "999999999999999",
"color" : null,
"backseat_token" : null,
"display_name" : "Dream machine"
"access_type": "OWNER",
"in_service": false,
"vehicle_id": 896783052,
"option_codes": "AD15,MDL3,PBSB,RENA,BT37,ID3W,RF3G,S3PB,DRLH,DV2W,W39B,APF0,COUS,BC3B,CH07,PC30,FC3P,FG31,GLFR,HL31,HM31,IL31,LTPB,MR31,FM3B,RS3H,SA3P,STCP,SC04,SU3C,T3CA,TW00,TM00,UT3P,WR00,AU3P,APH3,AF00,ZCST,MI00,CDM0",
"vin": "999999999999999",
"color": null,
"backseat_token": null,
"display_name": "Dream machine"
},
"id" : "492932005972429",
"endpoint" : "VEHICLE_SUMMARY"
"id": "492932005972429",
"endpoint": "VEHICLE_SUMMARY"
},
"api_vehicle_list_data": {
"response": [
{
"in_service": false,
"option_codes": "AD15,MDL3,PBSB,RENA,BT37,ID3W,RF3G,S3PB,DRLH,DV2W,W39B,APF0,COUS,BC3B,CH07,PC30,FC3P,FG31,GLFR,HL31,HM31,IL31,LTPB,MR31,FM3B,RS3H,SA3P,STCP,SC04,SU3C,T3CA,TW00,TM00,UT3P,WR00,AU3P,APH3,AF00,ZCST,MI00,CDM0",
"calendar_enabled": true,
"backseat_token": null,
"vehicle_id": 9876,
"backseat_token_updated_at": null,
"tokens": [
"29a5fa499f0d",
"44914115e58a"
],
"display_name": "Dream machine",
"vin": "XXXXXXXXXXXXXXXXXXX",
"api_version": 36,
"color": null,
"id_s": "1234",
"access_type": "OWNER",
"id": 1234,
"state": "online"
}
]
}
}

0 comments on commit dfad89b

Please sign in to comment.