def test_get_supplement_table_should_set_host_if_present( patched_supplement_exists): host = "fooHost" patched_supplement_exists.return_value = True config = DynamoConfig(supplement_table_name="whatever", endpoint=host) table = get_supplement_table(config) assert table.Meta.host == host
def test_get_supplement_table_should_set_table_name_if_present( patched_supplement_exists): table_name = "fooTable" patched_supplement_exists.return_value = True config = DynamoConfig(supplement_table_name=table_name) table = get_supplement_table(config) assert table.Meta.table_name == table_name
def test_save_supplementdata_stores_no_data_on_exception( mock_dynamo_cv_table, mock_logger): SUPPLEMENT_TABLE_NAME = dynamodb_table_setup("local-supplement-cv") supplement_table = get_supplement_table( DynamoConfig(supplement_table_name=SUPPLEMENT_TABLE_NAME)) vodafoneservice = VodafoneService( config=VodafoneConfig(), table=mock_dynamo_cv_table, supplementtable=supplement_table, ) save_supplementdata( vodafoneservice, "12038594938", "porsche", "invalid", ) conn = boto3.resource("dynamodb", region_name="us-east-1") supplementtable = conn.Table(SUPPLEMENT_TABLE_NAME) supplementtable_result = supplementtable.query( Limit=1, ScanIndexForward=False, KeyConditionExpression=Key("request_key").eq("porsche-12038594938"), ) assert supplementtable_result["Count"] == 0
def test_save_supplementdata_saves_data_on_success(mock_dynamo_cv_table, mock_logger): SUPPLEMENT_TABLE_NAME = dynamodb_table_setup("local-supplement-cv") supplement_table = get_supplement_table( DynamoConfig(supplement_table_name=SUPPLEMENT_TABLE_NAME)) vodafoneservice = VodafoneService( config=VodafoneConfig(), table=mock_dynamo_cv_table, supplementtable=supplement_table, ) save_supplementdata( vodafoneservice, "12038594938", "porsche", VehicleDataRequest(**generate_valid_vodafone_data()), ) conn = boto3.resource("dynamodb", region_name="us-east-1") supplementtable = conn.Table(SUPPLEMENT_TABLE_NAME) supplementtable_result = supplementtable.query( Limit=1, ScanIndexForward=False, KeyConditionExpression=Key("request_key").eq("porsche-12038594938"), ) assert supplementtable_result["Items"][0]["msisdn"] == "12038594938" assert supplementtable_result["Items"][0]["ignitionkey"] == "OFF" assert supplementtable_result["Items"][0]["range"] == 0 assert supplementtable_result["Items"][0][ "tirepressurerearleft"] == Decimal("-6.3") assert supplementtable_result["Items"][0][ "tirepressurerearright"] == Decimal("-6.3")
def test_get_supplement_table_should_createtable_if_table_not_exist( patched_supplement_exists, patched_supplement_createtable): table_name = "fooTable" patched_supplement_exists.return_value = False config = DynamoConfig(supplement_table_name=table_name) table = get_supplement_table(config) assert patched_supplement_createtable.called is True assert table is not None
def test_aeris_service_save_vehicledata_should_save_data_as_expected( patched_rest_client, mock_logger): TABLE_NAME = "local-cv" client = boto3.client("dynamodb", region_name="us-east-1") client.create_table( AttributeDefinitions=[ { "AttributeName": "request_key", "AttributeType": "S" }, { "AttributeName": "event_datetime", "AttributeType": "N" }, ], KeySchema=[ { "AttributeName": "request_key", "KeyType": "HASH" }, { "AttributeName": "event_datetime", "KeyType": "RANGE" }, ], TableName=TABLE_NAME, ProvisionedThroughput={ "ReadCapacityUnits": 1, "WriteCapacityUnits": 1 }, ) patched_rest_client.get.side_effect = mocked_requests_get dynamotable = get_main_table(DynamoConfig(table_name=TABLE_NAME)) aerisservice = AerisService( config=AerisConfig(base_url="https://successjson"), table=dynamotable, ) vehicledatajson = generate_valid_aeris_data() aerisservice.save_vehicledata("5243583607", "vwcarnet", VehicleData(**vehicledatajson)) conn = boto3.resource("dynamodb", region_name="us-east-1") table = conn.Table(TABLE_NAME) result = table.query( Limit=1, ScanIndexForward=False, KeyConditionExpression=Key("request_key").eq("vwcarnet-5243583607"), ) assert result["Items"][0]["request_key"] == "vwcarnet-5243583607" assert result["Items"][0]["msisdn"] == "5243583607" assert result["Items"][0]["vin"] == "1VWSA7A3XLC011823" assert result["Items"][0]["latitude"] == Decimal("37.532918") assert result["Items"][0]["longitude"] == Decimal("-122.272576") assert result["Items"][0]["odometer"] == 16114 assert result["Items"][0]["odometerscale"] == OdometerScaleType.MILES
def test_get_vehicledata_returns_500_if_unsuccessful( mock_dynamo_cv_table, mock_dynamodb, setup_siriusxm_service, patched_setup_logger, programcode, ): patched_setup_logger.info.side_effect = Exception cv_table = get_main_table(DynamoConfig(table_name=TABLE_NAME)) config = SiriusXmConfig(base_url=URL, api_key=APIKEY, raw_apikey=RAWAPIKEY) uut = SiriusXmService(config=config, table=cv_table) response = uut.get_vehicledata(id="TESTREFERENCE", programcode=programcode) assert type(response) == VehicleData assert response.status == InternalStatusType.INTERNALSERVERERROR
def test_get_vehicledata_returns_200_if_successful(mock_dynamo_cv_table, mock_dynamodb, setup_siriusxm_service, mock_logger): cv_table = get_main_table(DynamoConfig(table_name=TABLE_NAME)) config = SiriusXmConfig(base_url=URL, api_key=APIKEY, raw_apikey=RAWAPIKEY) uut = SiriusXmService(config=config, table=cv_table) uut.save_vehicledata(generate_valid_cv_data()) response = uut.get_vehicledata(id="TESTREFERENCE", programcode="infiniti") assert type(response) == VehicleData assert response.calldate == response.timestamp.strftime("%Y-%m-%d") assert response.calltime == response.timestamp.strftime("%H:%M") assert response.status == InternalStatusType.SUCCESS assert response.referenceid == "TESTREFERENCE" assert response.programcode == "infiniti"
def test_save_vehicledata_returns_true_if_successful(mock_dynamodb, setup_siriusxm_service, mock_logger): cv_table = get_main_table(DynamoConfig(table_name=TABLE_NAME)) config = SiriusXmConfig(base_url=URL, api_key=APIKEY, raw_apikey=RAWAPIKEY) uut = SiriusXmService(config=config, table=cv_table) cv = generate_valid_cv_data() assert uut.save_vehicledata(cv) conn = boto3.resource("dynamodb", region_name="us-east-1") table = conn.Table(TABLE_NAME) item = table.query( Limit=1, ScanIndexForward=False, KeyConditionExpression=Key("request_key").eq("infiniti-TESTREFERENCE"), ) assert item["Items"][0]["latitude"] == Decimal("42.406") assert item["Items"][0]["vin"] == cv["vin"]
def test_save_vehicledata_returns_500_if_primary_data_save_is_unsuccessful( mock_logger): primary_table = "invalid" SUPPLEMENT_TABLE_NAME = dynamodb_table_setup("local-supplement-cv") supplement_table = get_supplement_table( DynamoConfig(supplement_table_name=SUPPLEMENT_TABLE_NAME)) vodafoneservice = VodafoneService( config=VodafoneConfig(), table=primary_table, supplementtable=supplement_table, ) vehicledatajson = generate_valid_vodafone_data() response = vodafoneservice.save_vehicledata("13234826699", "porsche", vehicledatajson) assert type(response) == VehicleData assert response.msisdn == "13234826699" assert response.status == InternalStatusType.INTERNALSERVERERROR assert (response.responsemessage == "Unable to save the vehicledata for msisdn: 13234826699")
def test_save_vehicledata_returns_success_even_if_secondary_data_save_is_unsuccessful( mock_logger, ): TABLE_NAME = dynamodb_table_setup("local-cv") primary_table = get_main_table(DynamoConfig(table_name=TABLE_NAME)) supplement_table = "invalid" vodafoneservice = VodafoneService( config=VodafoneConfig(), table=primary_table, supplementtable=supplement_table, ) vehicledatajson = generate_valid_vodafone_data() response = vodafoneservice.save_vehicledata("12038594938", "porsche", vehicledatajson) assert type(response) == VehicleData assert response.msisdn == "12038594938" assert response.status == InternalStatusType.SUCCESS assert (response.responsemessage == "Successfully saved the vehicledata for msisdn: 12038594938")
def test_get_main_table_host_should_be_none_if_not_present(patched_exists): config = DynamoConfig(table_name="whatever") patched_exists.return_value = True table = get_main_table(config) assert table.Meta.host is None
def test_service_save_vehicledata_returns_200_if_success(mock_logger): TABLE_NAME = dynamodb_table_setup("local-cv") primary_table = get_main_table(DynamoConfig(table_name=TABLE_NAME)) SUPPLEMENT_TABLE_NAME = dynamodb_table_setup("local-supplement-cv") supplement_table = get_supplement_table( DynamoConfig(supplement_table_name=SUPPLEMENT_TABLE_NAME)) vodafoneservice = VodafoneService( config=VodafoneConfig(), table=primary_table, supplementtable=supplement_table, ) vehicledatajson = generate_valid_vodafone_data() response = vodafoneservice.save_vehicledata("12038594938", "porsche", vehicledatajson) conn = boto3.resource("dynamodb", region_name="us-east-1") primarytable = conn.Table(TABLE_NAME) result = primarytable.query( Limit=1, ScanIndexForward=False, KeyConditionExpression=Key("request_key").eq("porsche-12038594938"), ) supplementtable = conn.Table(SUPPLEMENT_TABLE_NAME) supplementtable_result = supplementtable.query( Limit=1, ScanIndexForward=False, KeyConditionExpression=Key("request_key").eq("porsche-12038594938"), ) assert type(response) == VehicleData assert response.msisdn == "12038594938" assert response.status == InternalStatusType.SUCCESS assert (response.responsemessage == "Successfully saved the vehicledata for msisdn: 12038594938") assert result["Items"][0]["request_key"] == "porsche-12038594938" assert result["Items"][0]["msisdn"] == "12038594938" assert result["Items"][0]["vin"] == "WP0BNM97ZAL040111" assert result["Items"][0]["latitude"] == Decimal("+42.98665") assert result["Items"][0]["longitude"] == Decimal("-80.92240") assert result["Items"][0]["brand"] == "PORSCHE" assert result["Items"][0]["mileage"] == 0 assert json.loads(result["Items"][0]["JSONData"]) == vehicledatajson assert supplementtable_result["Items"][0]["ignitionkey"] == "OFF" assert supplementtable_result["Items"][0]["range"] == 0 assert supplementtable_result["Items"][0]["crankinhibition"] == Decimal( "0") assert supplementtable_result["Items"][0][ "fuellevelpercentage"] == Decimal("0") assert supplementtable_result["Items"][0][ "tirepressurefrontleft"] == Decimal("-6.3") assert supplementtable_result["Items"][0][ "tirepressurefrontright"] == Decimal("-6.3") assert supplementtable_result["Items"][0][ "tirepressurerearleft"] == Decimal("-6.3") assert supplementtable_result["Items"][0][ "tirepressurerearright"] == Decimal("-6.3")