11import pytest
2-
2+ import time
33from chalice import Chalice
44from chalice .local import LambdaContext , LocalGateway
55
@@ -42,6 +42,11 @@ def has_request():
4242 return app
4343
4444
45+ @pytest .fixture
46+ def lambda_context_args ():
47+ return ['lambda_name' , 256 ]
48+
49+
4550def test_exception_boom (app , client : RequestHandler ) -> None :
4651 response = client .get ("/boom" )
4752 assert response .status_code == 500
@@ -63,3 +68,42 @@ def test_has_request(app, capture_events, client: RequestHandler):
6368 assert event ["level" ] == "error"
6469 (exception ,) = event ["exception" ]["values" ]
6570 assert exception ["type" ] == "Exception"
71+
72+
73+ def test_scheduled_event (app , lambda_context_args ):
74+ @app .schedule ('rate(1 minutes)' )
75+ def every_hour (event ):
76+ raise Exception ('only chalice event!' )
77+
78+ context = LambdaContext (
79+ * lambda_context_args , max_runtime_ms = 10000 , time_source = time
80+ )
81+
82+ lambda_event = {
83+ "version" : "0" ,
84+ "account" : "120987654312" ,
85+ "region" : "us-west-1" ,
86+ "detail" : {},
87+ "detail-type" : "Scheduled Event" ,
88+ "source" : "aws.events" ,
89+ "time" : "1970-01-01T00:00:00Z" ,
90+ "id" : "event-id" ,
91+ "resources" : [
92+ "arn:aws:events:us-west-1:120987654312:rule/my-schedule"
93+ ],
94+ }
95+ with pytest .raises (Exception ) as exc_info :
96+ every_hour (lambda_event , context = context )
97+ assert str (exc_info .value ) == 'only chalice event!'
98+
99+
100+ def test_bad_reques (client : RequestHandler ) -> None :
101+ response = client .http .get ('/badrequest' )
102+
103+ assert response .status_code == 400
104+ assert response .json_body == dict (
105+ [
106+ ('Code' , 'BadRequestError' ),
107+ ('Message' , 'BadRequestError: bad-request' ),
108+ ]
109+ )
0 commit comments