示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#4
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")
示例#5
0
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
示例#6
0
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
示例#7
0
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
示例#8
0
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"
示例#9
0
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"]
示例#10
0
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")
示例#11
0
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")
示例#12
0
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
示例#13
0
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")