def test_to_json(self): # Setup metadata = RepositoryMetadata() metadata.update_from_json(VALID_REPO_METADATA_JSON) # Test serialized = metadata.to_json() # Verify parsed = json.loads(serialized) self.assertEqual(2, len(parsed)) sorted_modules = sorted(parsed, key=lambda x : x['name']) self.assertEqual(4, len(sorted_modules[0])) self.assertEqual(sorted_modules[0]['name'], 'common') self.assertEqual(sorted_modules[0]['author'], 'lab42') self.assertEqual(sorted_modules[0]['version'], '0.0.1') self.assertEqual(sorted_modules[0]['tag_list'], []) self.assertEqual(4, len(sorted_modules[1])) self.assertEqual(sorted_modules[1]['name'], 'postfix') self.assertEqual(sorted_modules[1]['author'], 'lab42') self.assertEqual(sorted_modules[1]['version'], '0.0.2') self.assertEqual(sorted_modules[1]['tag_list'], ['postfix', 'applications'])
def test_run(self): # Setup repo_id = 'test-repo' data = { OPTION_REPO_ID.keyword : repo_id, OPTION_NAME.keyword : 'Test Repository', OPTION_DESCRIPTION.keyword : 'Repository Description', OPTION_NOTES.keyword : ['a=a', 'b=b'], } self.server_mock.request.return_value = 200, {} # Test self.command.run(**data) # Verify self.assertEqual(1, self.server_mock.request.call_count) self.assertEqual('PUT', self.server_mock.request.call_args[0][0]) url = self.server_mock.request.call_args[0][1] self.assertTrue(url.endswith('/repositories/%s/' % repo_id)) body = self.server_mock.request.call_args[0][2] body = json.loads(body) self.assertEqual(body['delta']['display_name'], 'Test Repository') self.assertEqual(body['delta']['description'], 'Repository Description') self.assertEqual(body['delta']['notes'], {'a' : 'a', 'b' : 'b'}) self.assertEqual(1, len(self.prompt.get_write_tags())) self.assertEqual(TAG_SUCCESS, self.prompt.get_write_tags()[0])
def test_run(self): # Setup data = { OPTION_REPO_ID.keyword : 'test-repo', OPTION_NAME.keyword : 'Test Repository', OPTION_DESCRIPTION.keyword : 'Repository Description', OPTION_NOTES.keyword : ['a=a', 'b=b'], } self.server_mock.request.return_value = 201, {} # Test self.command.run(**data) # Verify self.assertEqual(1, self.server_mock.request.call_count) self.assertEqual('POST', self.server_mock.request.call_args[0][0]) body = self.server_mock.request.call_args[0][2] body = json.loads(body) self.assertEqual(body['id'], 'test-repo') self.assertEqual(body['display_name'], 'Test Repository') self.assertEqual(body['description'], 'Repository Description') self.assertEqual(body['notes'], {'a' : 'a', 'b' : 'b'}) self.assertEqual(1, len(self.prompt.get_write_tags())) self.assertEqual(TAG_SUCCESS, self.prompt.get_write_tags()[0])
def test_run_no_group(self): # Setup data = { OPTION_GROUP_ID.keyword : 'test-group', } self.server_mock.request.return_value = 200, [] # Test self.command.run(**data) # Verify self.assertEqual(1, self.server_mock.request.call_count) # Group lookup call call_args = self.server_mock.request.call_args_list[0] self.assertEqual('POST', call_args[0][0]) url = call_args[0][1] self.assertTrue(url.endswith('/repo_groups/search/')) body = json.loads(call_args[0][2]) self.assertEqual(body['criteria']['filters']['id'], 'test-group') # Output self.assertEqual(2, len(self.prompt.get_write_tags())) self.assertEqual(TAG_TITLE, self.prompt.get_write_tags()[0]) self.assertEqual('not-found', self.prompt.get_write_tags()[1])
def test_to_json(self): # Setup metadata = RepositoryMetadata() metadata.update_from_json(VALID_REPO_METADATA_JSON) # Test serialized = metadata.to_json() # Verify parsed = json.loads(serialized) self.assertEqual(2, len(parsed)) sorted_modules = sorted(parsed, key=lambda x: x["name"]) self.assertEqual(4, len(sorted_modules[0])) self.assertEqual(sorted_modules[0]["name"], "common") self.assertEqual(sorted_modules[0]["author"], "lab42") self.assertEqual(sorted_modules[0]["version"], "0.0.1") self.assertEqual(sorted_modules[0]["tag_list"], []) self.assertEqual(4, len(sorted_modules[1])) self.assertEqual(sorted_modules[1]["name"], "postfix") self.assertEqual(sorted_modules[1]["author"], "lab42") self.assertEqual(sorted_modules[1]["version"], "0.0.2") self.assertEqual(sorted_modules[1]["tag_list"], ["postfix", "applications"])
def test_from_dict(self): # Setup data = json.loads(VALID_MODULE_METADATA_JSON) # Test module = Module.from_dict(data) # Verify self.assert_valid_module(module)
def update_from_json(self, metadata_json): """ Takes the module's metadata in JSON format and merges it into this instance. :param metadata_json: module metadata in JSON :type metadata_json: str """ parsed = json.loads(metadata_json) self.update_from_dict(parsed)
def test_run(self): # Setup data = { OPTION_GROUP_ID.keyword : 'test-group', } return_values = [ (200, [{'repo_ids' : ['repo-1']}]), # return from search groups call (200, [{'id' : 'a'}]), # return from the repo search call ] self.server_mock.request.side_effect = return_values # Test self.command.run(**data) # Verify self.assertEqual(2, self.server_mock.request.call_count) # Group lookup call call_args = self.server_mock.request.call_args_list[0] self.assertEqual('POST', call_args[0][0]) url = call_args[0][1] self.assertTrue(url.endswith('/repo_groups/search/')) body = json.loads(call_args[0][2]) self.assertEqual(body['criteria']['filters']['id'], 'test-group') # Repo lookup call call_args = self.server_mock.request.call_args_list[1] self.assertEqual('POST', call_args[0][0]) url = call_args[0][1] self.assertTrue(url.endswith('/repositories/search/')) body = json.loads(call_args[0][2]) self.assertEqual(body['criteria']['filters']['id'], {'$in' : ['repo-1']}) # Output self.assertEqual(2, len(self.prompt.get_write_tags())) self.assertEqual(TAG_TITLE, self.prompt.get_write_tags()[0]) self.assertEqual(TAG_DOCUMENT, self.prompt.get_write_tags()[1])
def test_run(self): # Setup data = { options.OPTION_REPO_ID.keyword : 'test-repo', options.OPTION_NAME.keyword : 'Test Name', options.OPTION_DESCRIPTION.keyword : 'Test Description', options.OPTION_NOTES.keyword : ['a=a'], commands.OPTION_FEED.keyword : 'http://localhost', commands.OPTION_HTTP.keyword : 'true', commands.OPTION_HTTPS.keyword : 'true', commands.OPTION_QUERY.keyword : ['q1', 'q2'] } self.server_mock.request.return_value = 200, {} # Test self.command.run(**data) # Verify self.assertEqual(1, self.server_mock.request.call_count) self.assertEqual('POST', self.server_mock.request.call_args[0][0]) self.assertTrue(self.server_mock.request.call_args[0][1].endswith('/v2/repositories/')) body = self.server_mock.request.call_args[0][2] body = json.loads(body) self.assertEqual('test-repo', body['id']) self.assertEqual('Test Name', body['display_name']) self.assertEqual('Test Description', body['description']) expected_notes = {'a' : 'a', constants.REPO_NOTE_KEY : constants.REPO_NOTE_PUPPET} self.assertEqual(expected_notes, body['notes']) self.assertEqual(constants.IMPORTER_TYPE_ID, body['importer_type_id']) expected_config = { u'feed' : u'http://localhost', u'queries' : [u'q1', u'q2'], } self.assertEqual(expected_config, body['importer_config']) dist = body['distributors'][0] self.assertEqual(constants.DISTRIBUTOR_TYPE_ID, dist[0]) self.assertEqual(True, dist[2]) self.assertEqual(constants.DISTRIBUTOR_ID, dist[3]) expected_config = { u'serve_http' : True, u'serve_https' : True, } self.assertEqual(expected_config, dist[1]) self.assertEqual([TAG_SUCCESS], self.prompt.get_write_tags())
def update_from_json(self, metadata_json): """ Updates this metadata instance with modules found in the given JSON document. This can be called multiple times to merge multiple repository metadata JSON documents into this instance. :return: object representing the repository and all of its modules :rtype: RepositoryMetadata """ parsed = json.loads(metadata_json) # The contents of the metadata document is a list of dictionaries, # each represnting a single module. for module_dict in parsed: module = Module.from_dict(module_dict) self.modules.append(module)
def test_run(self): # Setup data = { 'from-repo-id' : 'from', 'to-repo-id' : 'to' } self.server_mock.request.return_value = 202, self.task() # Test self.command.run(**data) # Verify call_args = self.server_mock.request.call_args[0] self.assertEqual('POST', call_args[0]) self.assertTrue(call_args[1].endswith('/to/actions/associate/')) body = json.loads(call_args[2]) self.assertEqual(body['source_repo_id'], 'from') self.assertEqual(body['criteria']['type_ids'], [constants.TYPE_PUPPET_MODULE]) self.assertEqual(['progress'], self.prompt.get_write_tags())