from contextlib import contextmanager import os @contextmanager def inside_dir(dirpath): """ Execute code from inside the given directory :param dirpath: String, path of the directory the command is being run. """ old_path = os.getcwd() try: os.chdir(dirpath) yield finally: os.chdir(old_path) def test_project_tree(cookies): result = cookies.bake(extra_context={'project_name': 'test_project'}) assert result.exit_code == 0 assert result.exception is None assert result.project.basename == 'test_project' assert result.project.isdir() assert result.project.join('README.md').isfile() assert result.project.join('template.yaml').isfile() assert result.project.join('hello-world').isdir() assert result.project.join('hello-world', 'main.go').isfile() assert result.project.join('hello-world', 'main_test.go').isfile() def test_app_content(cookies): result = cookies.bake(extra_context={'project_name': 'test_project'}) app_file = result.project.join('hello-world', 'main.go') app_content = app_file.readlines() app_content = ''.join(app_content) contents = ( "github.com/aws/aws-lambda-go/events", "sourceIP := request.RequestContext.Identity.SourceIP", "lambda.Start(handler)" ) for content in contents: assert content in app_content def test_app_test_content(cookies): result = cookies.bake(extra_context={'project_name': 'test_project'}) app_file = result.project.join('hello-world', 'main_test.go') app_content = app_file.readlines() app_content = ''.join(app_content) contents = ( "func TestHandler(t *testing.T)", "SourceIP: \"127.0.0.1\"", "response, err := handler(testCase.request)" ) for content in contents: assert content in app_content def test_app_template_content(cookies): result = cookies.bake(extra_context={'project_name': 'test_project'}) app_file = result.project.join('template.yaml') app_content = app_file.readlines() app_content = ''.join(app_content) contents = ( "Runtime: go1.x", "HelloWorldFunction", ) for content in contents: assert content in app_content