Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
 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'])
Esempio n. 6
0
    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'])
Esempio n. 8
0
    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)