def test_list_function_versions(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) result = json.loads( lambda_api.list_versions(self.FUNCTION_NAME).get_data()) latest_version = dict() latest_version[u'CodeSize'] = self.CODE_SIZE latest_version[u'FunctionArn'] = str( lambda_api.func_arn(self.FUNCTION_NAME)) latest_version[u'FunctionName'] = str(self.FUNCTION_NAME) latest_version[u'Handler'] = str(self.HANDLER) latest_version[u'Runtime'] = str(self.RUNTIME) latest_version[u'Timeout'] = self.TIMEOUT latest_version[u'Version'] = u'$LATEST' version1 = dict(latest_version) version1[u'Version'] = 1 version2 = dict(latest_version) version2[u'Version'] = 2 expected_result = { u'Versions': sorted([latest_version, version1, version2], key=lambda k: str(k.get('Version'))) } self.assertDictEqual(expected_result, result)
def test_publish_function_version(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) result = json.loads(lambda_api.publish_version(self.FUNCTION_NAME).get_data()) result2 = json.loads(lambda_api.publish_version(self.FUNCTION_NAME).get_data()) result.pop('RevisionId', None) # we need to remove this, since this is random, so we cannot know its value result2.pop('RevisionId', None) # we need to remove this, since this is random, so we cannot know its value expected_result = dict() expected_result['CodeSize'] = self.CODE_SIZE expected_result['CodeSha256'] = self.CODE_SHA_256 expected_result['FunctionArn'] = str(lambda_api.func_arn(self.FUNCTION_NAME)) + ':1' expected_result['FunctionName'] = str(self.FUNCTION_NAME) expected_result['Handler'] = str(self.HANDLER) expected_result['Runtime'] = str(self.RUNTIME) expected_result['Timeout'] = self.TIMEOUT expected_result['Description'] = '' expected_result['MemorySize'] = self.MEMORY_SIZE expected_result['Role'] = self.ROLE expected_result['LastModified'] = self.LAST_MODIFIED expected_result['TracingConfig'] = self.TRACING_CONFIG expected_result['Version'] = '1' expected_result['State'] = 'Active' expected_result['LastUpdateStatus'] = 'Successful' expected_result2 = dict(expected_result) expected_result2['FunctionArn'] = str(lambda_api.func_arn(self.FUNCTION_NAME)) + ':2' expected_result2['Version'] = '2' self.assertDictEqual(expected_result, result) self.assertDictEqual(expected_result2, result2)
def test_publish_function_version(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) result = json.loads( lambda_api.publish_version(self.FUNCTION_NAME).get_data()) result2 = json.loads( lambda_api.publish_version(self.FUNCTION_NAME).get_data()) expected_result = dict() expected_result['CodeSize'] = self.CODE_SIZE expected_result['FunctionArn'] = str( lambda_api.func_arn(self.FUNCTION_NAME)) + ':1' expected_result['FunctionName'] = str(self.FUNCTION_NAME) expected_result['Handler'] = str(self.HANDLER) expected_result['Runtime'] = str(self.RUNTIME) expected_result['Timeout'] = self.TIMEOUT expected_result['Version'] = '1' expected_result['Environment'] = {'Variables': {}} expected_result2 = dict(expected_result) expected_result2['FunctionArn'] = str( lambda_api.func_arn(self.FUNCTION_NAME)) + ':2' expected_result2['Version'] = '2' expected_result2['Environment'] = {'Variables': {}} self.assertDictEqual(expected_result, result) self.assertDictEqual(expected_result2, result2)
def test_publish_function_version(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) result = json.loads( lambda_api.publish_version(self.FUNCTION_NAME).get_data()) result.pop( "RevisionId", None ) # we need to remove this, since this is random, so we cannot know its value expected_result = dict() expected_result["CodeSize"] = self.CODE_SIZE expected_result["CodeSha256"] = self.CODE_SHA_256 expected_result["FunctionArn"] = str( lambda_api.func_arn(self.FUNCTION_NAME)) + ":1" expected_result["FunctionName"] = str(self.FUNCTION_NAME) expected_result["Handler"] = str(self.HANDLER) expected_result["Runtime"] = str(self.RUNTIME) expected_result["Timeout"] = self.TIMEOUT expected_result["Description"] = "" expected_result["MemorySize"] = self.MEMORY_SIZE expected_result["Role"] = self.ROLE expected_result["KMSKeyArn"] = None expected_result["VpcConfig"] = None expected_result["LastModified"] = isoformat_milliseconds( self.LAST_MODIFIED) + "+0000" expected_result["TracingConfig"] = self.TRACING_CONFIG expected_result["Version"] = "1" expected_result["State"] = "Active" expected_result["LastUpdateStatus"] = "Successful" expected_result["PackageType"] = None expected_result["ImageConfig"] = {} self.assertDictEqual(expected_result, result)
def test_publish_non_existant_function_version_returns_error(self): with self.app.test_request_context(): result = json.loads( lambda_api.publish_version(self.FUNCTION_NAME).get_data()) self.assertEqual(self.RESOURCENOTFOUND_EXCEPTION, result['__type']) self.assertEqual( self.RESOURCENOTFOUND_MESSAGE % lambda_api.func_arn(self.FUNCTION_NAME), result['message'])
def test_list_function_versions(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) result = json.loads( lambda_api.list_versions(self.FUNCTION_NAME).get_data()) for version in result['Versions']: # we need to remove this, since this is random, so we cannot know its value version.pop('RevisionId', None) latest_version = dict() latest_version['CodeSize'] = self.CODE_SIZE latest_version['CodeSha256'] = self.CODE_SHA_256 latest_version['FunctionArn'] = str( lambda_api.func_arn(self.FUNCTION_NAME)) + ':$LATEST' latest_version['FunctionName'] = str(self.FUNCTION_NAME) latest_version['Handler'] = str(self.HANDLER) latest_version['Runtime'] = str(self.RUNTIME) latest_version['Timeout'] = self.TIMEOUT latest_version['Description'] = '' latest_version['MemorySize'] = self.MEMORY_SIZE latest_version['Role'] = self.ROLE latest_version['KMSKeyArn'] = None latest_version['VpcConfig'] = None latest_version['LastModified'] = self.LAST_MODIFIED latest_version['TracingConfig'] = self.TRACING_CONFIG latest_version['Version'] = '$LATEST' latest_version['State'] = 'Active' latest_version['LastUpdateStatus'] = 'Successful' latest_version['PackageType'] = None version1 = dict(latest_version) version1['FunctionArn'] = str( lambda_api.func_arn(self.FUNCTION_NAME)) + ':1' version1['Version'] = '1' version2 = dict(latest_version) version2['FunctionArn'] = str( lambda_api.func_arn(self.FUNCTION_NAME)) + ':2' version2['Version'] = '2' expected_result = { 'Versions': sorted([latest_version, version1, version2], key=lambda k: str(k.get('Version'))) } self.assertDictEqual(expected_result, result)
def test_create_alias_returns_error_if_already_exists(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) flask.request.data = json.dumps({ 'Name': self.ALIAS_NAME, 'FunctionVersion': '1', 'Description': '' }) lambda_api.create_alias(self.FUNCTION_NAME).get_data() result = json.loads( lambda_api.create_alias(self.FUNCTION_NAME).get_data()) alias_arn = lambda_api.func_arn( self.FUNCTION_NAME) + ':' + self.ALIAS_NAME self.assertEqual(self.ALIASEXISTS_EXCEPTION, result['__type']) self.assertEqual(self.ALIASEXISTS_MESSAGE % alias_arn, result['message'])
def test_list_function_versions(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) result = json.loads( lambda_api.list_versions(self.FUNCTION_NAME).get_data()) for version in result["Versions"]: # we need to remove this, since this is random, so we cannot know its value version.pop("RevisionId", None) latest_version = dict() latest_version["CodeSize"] = self.CODE_SIZE latest_version["CodeSha256"] = self.CODE_SHA_256 latest_version["FunctionArn"] = ( str(lambda_api.func_arn(self.FUNCTION_NAME)) + ":$LATEST") latest_version["FunctionName"] = str(self.FUNCTION_NAME) latest_version["Handler"] = str(self.HANDLER) latest_version["Runtime"] = str(self.RUNTIME) latest_version["Timeout"] = self.TIMEOUT latest_version["Description"] = "" latest_version["MemorySize"] = self.MEMORY_SIZE latest_version["Role"] = self.ROLE latest_version["KMSKeyArn"] = None latest_version["VpcConfig"] = None latest_version["LastModified"] = isoformat_milliseconds( self.LAST_MODIFIED) + "+0000" latest_version["TracingConfig"] = self.TRACING_CONFIG latest_version["Version"] = "$LATEST" latest_version["State"] = "Active" latest_version["LastUpdateStatus"] = "Successful" latest_version["PackageType"] = None latest_version["ImageConfig"] = {} version1 = dict(latest_version) version1["FunctionArn"] = str( lambda_api.func_arn(self.FUNCTION_NAME)) + ":1" version1["Version"] = "1" expected_result = { "Versions": sorted([latest_version, version], key=lambda k: str(k.get("Version"))) } self.assertDictEqual(expected_result, result)
def test_list_aliases(self): with self.app.test_request_context(): self._create_function(self.FUNCTION_NAME) lambda_api.publish_version(self.FUNCTION_NAME) flask.request.data = json.dumps({ 'Name': self.ALIAS2_NAME, 'FunctionVersion': '$LATEST' }) lambda_api.create_alias(self.FUNCTION_NAME).get_data() flask.request.data = json.dumps({ 'Name': self.ALIAS_NAME, 'FunctionVersion': '1', 'Description': self.ALIAS_NAME }) lambda_api.create_alias(self.FUNCTION_NAME).get_data() result = json.loads( lambda_api.list_aliases(self.FUNCTION_NAME).get_data()) expected_result = { 'Aliases': [{ 'AliasArn': lambda_api.func_arn(self.FUNCTION_NAME) + ':' + self.ALIAS_NAME, 'FunctionVersion': '1', 'Name': self.ALIAS_NAME, 'Description': self.ALIAS_NAME }, { 'AliasArn': lambda_api.func_arn(self.FUNCTION_NAME) + ':' + self.ALIAS2_NAME, 'FunctionVersion': '$LATEST', 'Name': self.ALIAS2_NAME, 'Description': '' }] } self.assertDictEqual(expected_result, result)