Skip to content

Commit 21392f0

Browse files
committed
test: add missing tests
1 parent bf336cf commit 21392f0

File tree

5 files changed

+167
-0
lines changed

5 files changed

+167
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"imageModerations": [
3+
{
4+
"ModerationLabels": []
5+
}
6+
],
7+
"contentSentiment": {
8+
"Sentiment": "POSITIVE"
9+
}
10+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"TaskToken": "xxx",
3+
"Input": {
4+
"property_id": "usa/anytown/main-street/123"
5+
}
6+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,94 @@
11
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
# SPDX-License-Identifier: MIT-0
33

4+
import os
5+
6+
import pytest
7+
from unittest import mock
8+
9+
from .lambda_context import LambdaContext
10+
from .helper import load_event, return_env_vars_dict
11+
12+
13+
@pytest.fixture
14+
def stepfunctions_event():
15+
return load_event('tests/events/lambda/content_integrity_validator_function_success.json')
16+
17+
18+
@pytest.fixture
19+
def invalid_image_moderation(stepfunctions_event):
20+
e = {
21+
'imageModerations': [
22+
{
23+
'ModerationLabels': [
24+
{
25+
"Confidence": 99.24723052978516,
26+
"ParentName": "",
27+
"Name": "Explicit Nudity"
28+
},
29+
{
30+
"Confidence": 99.24723052978516,
31+
"ParentName": "Explicit Nudity",
32+
"Name": "Graphic Male Nudity"
33+
},
34+
]
35+
}
36+
]
37+
}
38+
return {**stepfunctions_event, **e}
39+
40+
41+
@pytest.fixture
42+
def invalid_content_sentiment(stepfunctions_event):
43+
e = {
44+
'contentSentiment': {
45+
'Sentiment': 'NEGATIVE'
46+
}
47+
}
48+
return {**stepfunctions_event, **e}
49+
50+
51+
@mock.patch.dict(os.environ, return_env_vars_dict(), clear=True)
52+
def test_valid_image_and_valid_sentiment(stepfunctions_event):
53+
from properties_service import content_integrity_validator_function
54+
ret = content_integrity_validator_function.lambda_handler(stepfunctions_event, LambdaContext())
55+
56+
assert ret['validation_result'] == "PASS"
57+
assert ret['imageModerations'] == stepfunctions_event['imageModerations']
58+
assert ret['contentSentiment'] == stepfunctions_event['contentSentiment']
59+
60+
61+
@mock.patch.dict(os.environ, return_env_vars_dict(), clear=True)
62+
def test_valid_image_and_invalid_sentiment(invalid_content_sentiment):
63+
event = invalid_content_sentiment
64+
65+
from properties_service import content_integrity_validator_function
66+
ret = content_integrity_validator_function.lambda_handler(event, LambdaContext())
67+
68+
assert ret['validation_result'] == "FAIL"
69+
assert ret['imageModerations'] == event['imageModerations']
70+
assert ret['contentSentiment'] == event['contentSentiment']
71+
72+
73+
@mock.patch.dict(os.environ, return_env_vars_dict(), clear=True)
74+
def test_invalid_image_and_valid_sentiment(invalid_image_moderation):
75+
event = invalid_image_moderation
76+
77+
from properties_service import content_integrity_validator_function
78+
ret = content_integrity_validator_function.lambda_handler(event, LambdaContext())
79+
80+
assert ret['validation_result'] == "FAIL"
81+
assert ret['imageModerations'] == event['imageModerations']
82+
assert ret['contentSentiment'] == event['contentSentiment']
83+
84+
85+
@mock.patch.dict(os.environ, return_env_vars_dict(), clear=True)
86+
def test_invalid_image_and_invalid_sentiment(invalid_image_moderation, invalid_content_sentiment):
87+
event = {**invalid_image_moderation, **invalid_content_sentiment}
88+
89+
from properties_service import content_integrity_validator_function
90+
ret = content_integrity_validator_function.lambda_handler(event, LambdaContext())
91+
92+
assert ret['validation_result'] == "FAIL"
93+
assert ret['imageModerations'] == event['imageModerations']
94+
assert ret['contentSentiment'] == event['contentSentiment']
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
11
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
# SPDX-License-Identifier: MIT-0
33

4+
import os
5+
from importlib import reload
6+
7+
from unittest import mock
8+
9+
from .lambda_context import LambdaContext
10+
from .helper import load_event, return_env_vars_dict
11+
12+
13+
@mock.patch.dict(os.environ, return_env_vars_dict(), clear=True)
14+
def test_handle_status_changed_draft(stepfunction, mocker):
15+
ddbstream_event = load_event('tests/events/dbb_stream_events/contract_status_changed_draft.json')
16+
17+
from properties_service import properties_approval_sync_function
18+
reload(properties_approval_sync_function)
19+
20+
ret = properties_approval_sync_function.lambda_handler(ddbstream_event, LambdaContext())
21+
22+
assert ret is None
23+
24+
25+
# NOTE: This test cannot be implemented at this time because `moto`` does not yet support mocking `stepfunctions.send_task_success`
26+
@mock.patch.dict(os.environ, return_env_vars_dict(), clear=True)
27+
def test_handle_status_changed_approved(caplog, stepfunction, mocker):
28+
pass
29+
# ddbstream_event = load_event('tests/events/dbb_stream_events/status_approved_waiting_for_approval.json')
30+
31+
# from properties_service import properties_approval_sync_function
32+
# reload(properties_approval_sync_function)
33+
34+
# ret = properties_approval_sync_function.lambda_handler(ddbstream_event, LambdaContext())
35+
36+
# assert ret is None
37+
# assert 'Contract status for property is APPROVED' in caplog.text
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,29 @@
11
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
# SPDX-License-Identifier: MIT-0
33

4+
import os
5+
from importlib import reload
6+
7+
from unittest import mock
8+
9+
from .lambda_context import LambdaContext
10+
from .helper import load_event, return_env_vars_dict, create_ddb_table_contracts_with_entry
11+
12+
13+
@mock.patch.dict(os.environ, return_env_vars_dict(), clear=True)
14+
def test_handle_wait_for_contract_approval_function(dynamodb, mocker):
15+
stepfunctions_event = load_event('tests/events/lambda/wait_for_contract_approval_function.json')
16+
17+
from properties_service import wait_for_contract_approval_function
18+
reload(wait_for_contract_approval_function)
19+
20+
create_ddb_table_contracts_with_entry(dynamodb)
21+
22+
ddbitem_before = dynamodb.Table('table1').get_item(Key={'property_id': stepfunctions_event['Input']['property_id']})
23+
assert 'sfn_wait_approved_task_token' not in ddbitem_before['Item']
24+
25+
ret = wait_for_contract_approval_function.lambda_handler(stepfunctions_event, LambdaContext())
26+
ddbitem_after = dynamodb.Table('table1').get_item(Key={'property_id': stepfunctions_event['Input']['property_id']})
27+
28+
assert ret['property_id'] == stepfunctions_event['Input']['property_id']
29+
assert ddbitem_after['Item']['sfn_wait_approved_task_token'] == stepfunctions_event['TaskToken']

0 commit comments

Comments
 (0)