Пример #1
0
def test_execute_insert_parameter_set_invalid(mocked_client, mocker) -> None:
    data_api = DataAPI(
        resource_arn='dummy', secret_arn='dummy', database='test', client=mocked_client
    )

    with pytest.raises(ValidationError):
        data_api.batch_execute(
            "insert into test.pets  values (:id , :name)", {'id': 3, 'name': 'bird'}
        )
Пример #2
0
def test_execute_insert_parameter_set_invalid_1(mocked_client, mocker) -> None:
    mocked_client.batch_execute_statement.side_effect = Exception('Invalid Request')

    data_api = DataAPI(
        resource_arn='arn:aws:rds:dummy',
        secret_arn='dummy',
        database='test',
        client=mocked_client,
        transaction_id='12345',
    )

    with pytest.raises(Exception):
        data_api.batch_execute(
            "insert into test.pets  values (:id , :name)",
            [{'id': 3, 'invalid': 'bird'}],
        )
Пример #3
0
def test_execute_insert_parameter_set(mocked_client, mocker) -> None:
    mocked_client.batch_execute_statement.return_value = {
        'updateResults': [
            {'generatedFields': [{'longValue': 3}]},
            {'generatedFields': [{'longValue': 4}]},
        ]
    }

    mocked_client.begin_transaction.return_value = {'transactionId': '12345'}

    data_api = DataAPI(
        resource_arn='arn:aws:rds:dummy',
        secret_arn='dummy',
        database='test',
        client=mocked_client,
    )
    results = data_api.batch_execute(
        "insert into test.pets  values (:id , :name)",
        [{'id': 3, 'name': 'bird'}, {'id': 4, 'name': 'lion'}],
    )
    assert len(results) == 2
    assert results[0].generated_fields == [3]
    assert results[0].generated_fields_first == 3
    assert results[1].generated_fields == [4]
    assert results[1].generated_fields_first == 4

    assert mocked_client.batch_execute_statement.call_args == mocker.call(
        resourceArn='arn:aws:rds:dummy',
        secretArn='dummy',
        sql="insert into test.pets  values (:id , :name)",
        parameterSets=[
            [
                {'name': 'id', 'value': {'longValue': 3}},
                {'name': 'name', 'value': {'stringValue': 'bird'}},
            ],
            [
                {'name': 'id', 'value': {'longValue': 4}},
                {'name': 'name', 'value': {'stringValue': 'lion'}},
            ],
        ],
        database='test',
        transactionId='12345',
    )