22
33from lef .main import EventType , Extension
44from unittest import TestCase
5- from unittest .mock import patch , call
5+ from unittest .mock import MagicMock , patch , call
66from tests .utils import FakeResponse
7-
7+ import pytest
88
99class 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
0 commit comments