@@ -48,6 +48,14 @@ def __init__(self, content_length=0, stream=None):
4848 self .content_length = content_length
4949 self .stream = stream
5050
51+ class Response :
52+ """
53+ Mock of a part of the falcon.Response class
54+ """
55+
56+ def __init__ (self , status = 0 ):
57+ self .status = status
58+
5159
5260class TestMainMethods (unittest .TestCase ):
5361
@@ -82,89 +90,73 @@ def test_get_msg_empty(self):
8290
8391 self .assertIsNone (msg )
8492
85- def test_process_msg_valid (self ):
86- msg = {'context' : None , 'payload' : {"name" : "Jon" , "place" : "Winterfell" }}
87- body = main .process_msg (msg , hello )
93+ def test_process_req_valid (self ):
94+ msg = "{\" context\" : null, \" payload\" : {\" name\" : \" Jon\" , \" place\" : \" Winterfell\" }}"
95+ req_stream = io .StringIO (msg )
96+ req = Request (content_length = len (msg ), stream = req_stream )
97+ res = Response ()
98+ body = main .process_req (req , res , hello )
8899
89100 r = json .loads (body )
90101
91- self .assertEqual ("Hello, Jon from Winterfell" , r ['payload' ])
92- self .assertEqual (0 , len (r ['context' ]['logs' ]['stdout' ]))
93- self .assertEqual (0 , len (r ['context' ]['logs' ]['stderr' ]))
94- self .assertIsNone (r ['context' ]['error' ])
102+ self .assertEqual ("Hello, Jon from Winterfell" , r )
95103
96- def test_process_msg_function_error (self ):
97- msg = {'context' : None , 'payload' : None }
98- body = main .process_msg (msg , fail )
104+ def test_process_req_function_error (self ):
105+ msg = "{\" context\" : null, \" payload\" : null}"
106+ req_stream = io .StringIO (msg )
107+ req = Request (len (msg ), req_stream )
108+ res = Response ()
109+ body = main .process_req (req , res , fail )
99110
100- r = json .loads (body )
101- err = r ['context' ]['error' ]
111+ err = json .loads (body )
102112
103- self .assertIsNone (r ['payload' ])
104113 self .assertEqual (main .FUNCTION_ERROR , err ['type' ])
105114 self .assertEqual ("oh no!" , err ['message' ])
106- self .assertEqual (err ['stacktrace' ], r ['context' ]['logs' ]['stderr' ])
107- self .assertEqual (0 , len (r ['context' ]['logs' ]['stdout' ]))
108115
109- def test_process_msg_input_error (self ):
110- msg = {'context' : None , 'payload' : 1 }
111- body = main .process_msg (msg , lower )
116+ def test_process_req_input_error (self ):
117+ msg = "{\" context\" : null, \" payload\" : 1}"
118+ req_stream = io .StringIO (msg )
119+ req = Request (len (msg ), req_stream )
120+ res = Response ()
121+ body = main .process_req (req , res , lower )
112122
113- r = json .loads (body )
114- err = r ['context' ]['error' ]
123+ err = json .loads (body )
115124
116- self .assertIsNone (r ['payload' ])
117125 self .assertEqual (main .INPUT_ERROR , err ['type' ])
118126 self .assertEqual ("payload is not of type str" , err ['message' ])
119- self .assertEqual (err ['stacktrace' ], r ['context' ]['logs' ]['stderr' ])
120- self .assertEqual (0 , len (r ['context' ]['logs' ]['stdout' ]))
121-
122- def test_process_msg_logs (self ):
123- msg = {'context' : None , 'payload' : None }
124- body = main .process_msg (msg , logger )
125- r = json .loads (body )
126-
127- self .assertIsNone (r ['payload' ])
128- self .assertIsNone (r ['context' ]['error' ])
129- self .assertEqual (["stderr" , "stderr2" ], r ['context' ]['logs' ]['stderr' ])
130- self .assertEqual (["stdout" , "stdout2" ], r ['context' ]['logs' ]['stdout' ])
131127
132128 def test_import_function (self ):
133129 # succeeds if run from the project root (or when it's in PYTHONPATH)
134130 f = main .import_function (os .getcwd (), 'example.handler.dummy' )
135131
136132 self .assertEqual ("Hello!" , f (None , "Hello!" ))
137133
138- def test_process_msg_non_serializable_json (self ):
139- msg = {'context' : None , 'payload' : None }
140- body = main .process_msg (msg , bad_payload )
134+ def test_process_req_non_serializable_json (self ):
135+ msg = "{\" context\" : null, \" payload\" : null}"
136+ req_stream = io .StringIO (msg )
137+ req = Request (content_length = len (msg ), stream = req_stream )
138+ res = Response ()
139+ body = main .process_req (req , res , bad_payload )
141140
142- r = json .loads (body )
143- err = r ['context' ]['error' ]
141+ err = json .loads (body )
144142
145- self .assertIsNone (r ['payload' ])
146143 self .assertEqual (main .FUNCTION_ERROR , err ['type' ])
147144 self .assertIn ("not JSON serializable" , err ['message' ])
148145 self .assertTrue (len (err ['stacktrace' ]) > 0 )
149- self .assertTrue (len (r ['context' ]['logs' ]['stderr' ]) > 0 )
150- self .assertEqual (0 , len (r ['context' ]['logs' ]['stdout' ]))
151146
152147
153148 def test_process_req_invalid_json (self ):
154149 m = "{"
155150 req_stream = io .StringIO (m )
156151 req = Request (content_length = len (m ), stream = req_stream )
152+ res = Response ()
157153
158- body = main .process_req (req , hello )
154+ body = main .process_req (req , res , hello )
159155
160- r = json .loads (body )
161- err = r ['context' ]['error' ]
156+ err = json .loads (body )
162157
163- self .assertIsNone ( r [ 'payload' ] )
158+ self .assertEqual ( '500 Internal Server Error' , res . status )
164159 self .assertEqual (main .SYSTEM_ERROR , err ['type' ])
165- self .assertTrue (len (err ['message' ]) > 0 )
166- self .assertEqual (err ['stacktrace' ], r ['context' ]['logs' ]['stderr' ])
167- self .assertEqual (0 , len (r ['context' ]['logs' ]['stdout' ]))
168160
169161
170162if __name__ == '__main__' :
0 commit comments