Skip to content

Commit 56e779b

Browse files
author
Joe Snell
committed
get tests working
1 parent 7d0ef9f commit 56e779b

File tree

5 files changed

+46
-17
lines changed

5 files changed

+46
-17
lines changed

bin/test

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
set -e
44

5-
poetry run pytest
5+
poetry run pytest "$@"

lef/main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def handle_signal(signal, frame):
2626
sys.exit(0)
2727

2828
def register(self, events, handler):
29+
print('called')
2930
response = post(
3031
url=f"https://{self.runtime_api_endpoint}/2020-01-01/extension/register",
3132
data={"events": [str(event) for event in events]},
@@ -39,12 +40,13 @@ def register(self, events, handler):
3940

4041
def process_events(self, extension_id, handler):
4142
while True:
43+
print('called')
4244
response = get(
4345
url=f"https://{self.runtime_api_endpoint}/2020-01-01/extension/event/next",
4446
headers={"Lambda-Extension-Identifier": extension_id},
4547
).json()
4648

47-
if response["eventType"] == EventType.SHUTDOWN:
49+
if response["eventType"] == 'SHUTDOWN':
4850
sys.exit(0)
4951
else:
5052
handler(response)

tests/test_main.py

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
from lef.main import EventType, Extension
44
from unittest import TestCase
5-
from unittest.mock import patch, call
5+
from unittest.mock import MagicMock, patch, call
66
from tests.utils import FakeResponse
7-
7+
import pytest
88

99
class MainTest(TestCase):
1010
def setUp(self):
@@ -15,19 +15,39 @@ def tearDown(self):
1515
os.environ = self.original_env
1616
self.original_env = None
1717

18-
@patch("lef.utils.request")
19-
def test_main(self, mock_request):
20-
mock_request.Request.return_value = "FakeRequestObject"
21-
mock_request.urlopen.return_value = FakeResponse(
22-
json.dumps({"eventType": "INVOKE"}).encode(),
23-
{"Lambda-Extension-Identifier": "lambda-ext-id"},
24-
)
25-
26-
def handler(event):
27-
assert event == {"eventType": "INVOKE"}
28-
18+
@patch('lef.main.post')
19+
@patch("lef.main.get")
20+
def test_main(self, mock_get, mock_post):
21+
mock_get.side_effect = [
22+
FakeResponse(
23+
json.dumps({"eventType": "INVOKE"})
24+
),
25+
FakeResponse(
26+
json.dumps({"eventType": "SHUTDOWN"})
27+
)
28+
]
29+
30+
mock_post.side_effect = [
31+
FakeResponse(
32+
'',
33+
{"Lambda-Extension-Identifier": "lambda-ext-id"}
34+
),
35+
]
36+
37+
handler = MagicMock()
2938
extension = Extension()
30-
extension.register([EventType.INVOKE], handler)
39+
40+
with pytest.raises(SystemExit) as e:
41+
extension.register([EventType.INVOKE], handler)
3142

3243
assert extension.runtime_api_endpoint == "testruntimeapi"
33-
assert [] == mock_request.mock_calls
44+
assert [
45+
call({'eventType': 'INVOKE'})
46+
] == handler.mock_calls
47+
assert [
48+
call(url='https://testruntimeapi/2020-01-01/extension/event/next', headers={'Lambda-Extension-Identifier': 'lambda-ext-id'}),
49+
call(url='https://testruntimeapi/2020-01-01/extension/event/next', headers={'Lambda-Extension-Identifier': 'lambda-ext-id'})
50+
] == mock_get.mock_calls
51+
assert [
52+
call(url='https://testruntimeapi/2020-01-01/extension/register', data={'events': ['EventType.INVOKE']}, headers={'Lambda-Extension-Name': 'lef'})
53+
] == mock_post.mock_calls

tests/test_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66

77
class UtilsTest(TestCase):
8+
89
@patch("lef.utils.request")
910
def test_get(self, mock_request):
1011
mock_request.Request.return_value = "FakeRequestObject"

tests/utils.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import json
2+
13
class FakeResponse:
24
def __init__(self, response, headers=None):
35
self._response = response
@@ -6,3 +8,7 @@ def __init__(self, response, headers=None):
68

79
def read(self):
810
return self._response
11+
12+
def json(self):
13+
return json.loads(self._response)
14+

0 commit comments

Comments
 (0)