예제 #1
0
    def test_delete_all_tags_without_any_tags(self):
        # Validate that no tags exist to begin with.
        retrieved_tags = db_api.revision_tag_get_all(self.revision_id)
        self.assertEmpty(retrieved_tags)

        # Validate that deleting all tags without any tags doesn't raise
        # errors.
        db_api.revision_tag_delete_all(self.revision_id)
예제 #2
0
    def test_delete_all_tags(self):
        for _ in range(4):
            tag = test_utils.rand_name(self.__class__.__name__ + '-Tag')
            db_api.revision_tag_create(self.revision_id, tag)

        result = db_api.revision_tag_delete_all(self.revision_id)
        self.assertIsNone(result)

        retrieved_tags = db_api.revision_tag_get_all(self.revision_id)
        self.assertEmpty(retrieved_tags)
예제 #3
0
    def _list_all_tags(self, req, resp, revision_id):
        """List all tags for a revision."""
        try:
            resp_tags = db_api.revision_tag_get_all(revision_id)
        except errors.RevisionNotFound as e:
            raise falcon.HTTPNotFound(e.format_message())

        resp_body = revision_tag_view.ViewBuilder().list(resp_tags)
        resp.status = falcon.HTTP_200
        resp.body = resp_body
예제 #4
0
    def test_create_show_and_list_many_tags_without_data(self):
        expected_tag_names = []
        for _ in range(4):
            tag = test_utils.rand_name(self.__class__.__name__ + '-Tag')
            db_api.revision_tag_create(self.revision_id, tag)
            expected_tag_names.append(tag)

        retrieved_tags = db_api.revision_tag_get_all(self.revision_id)
        retrieved_tag_names = [t['tag'] for t in retrieved_tags]
        self.assertEqual(4, len(retrieved_tags))
        self.assertEqual(sorted(expected_tag_names), retrieved_tag_names)

        for tag in expected_tag_names:
            # Should not raise an exception.
            resp = db_api.revision_tag_get(self.revision_id, tag)
            self.assertIn('tag', resp)
            self.assertIn('data', resp)
예제 #5
0
    def test_create_and_delete_tags(self):
        tags = []
        for _ in range(4):
            tag = test_utils.rand_name(self.__class__.__name__ + '-Tag')
            db_api.revision_tag_create(self.revision_id, tag)
            tags.append(tag)

        for idx, tag in enumerate(tags):
            expected_tag_names = sorted(tags[idx + 1:])
            db_api.revision_tag_delete(self.revision_id, tag)

            retrieved_tags = db_api.revision_tag_get_all(self.revision_id)
            retrieved_tag_names = [t['tag'] for t in retrieved_tags]
            self.assertEqual(expected_tag_names, retrieved_tag_names)

            self.assertRaises(errors.RevisionTagNotFound,
                              db_api.revision_tag_get, self.revision_id, tag)
예제 #6
0
    def test_revision_tag_list_view(self):
        expected_view = {}

        # Create 2 revision tags for the same revision.
        for _ in range(2):
            rand_prefix = test_utils.rand_name(self.__class__.__name__)
            tag = rand_prefix + '-Tag'
            data_key = rand_prefix + '-Key'
            data_val = rand_prefix + '-Val'

            db_api.revision_tag_create(self.revision_id, tag,
                                       {data_key: data_val})

            expected_view.update({tag: {data_key: data_val}})

        retrieved_tags = db_api.revision_tag_get_all(self.revision_id)

        actual_view = self.view_builder.list(retrieved_tags)
        self.assertEqual(expected_view, actual_view)
예제 #7
0
    def test_create_show_and_list_many_tags_with_data(self):
        expected_tags = []
        for _ in range(4):
            rand_prefix = test_utils.rand_name(self.__class__.__name__)
            tag = rand_prefix + '-Tag'
            data_key = rand_prefix + '-Key'
            data_val = rand_prefix + '-Val'

            db_api.revision_tag_create(
                self.revision_id, tag, {data_key: data_val})
            expected_tags.append({'tag': tag, 'data': {data_key: data_val}})
        expected_tags = sorted(expected_tags, key=lambda t: t['tag'])

        retrieved_tags = db_api.revision_tag_get_all(self.revision_id)
        self.assertEqual(4, len(retrieved_tags))

        retrieved_tags = [
            {k: t[k] for k in t.keys() if k in ('data', 'tag')}
            for t in retrieved_tags]
        self.assertEqual(sorted(expected_tags, key=lambda t: t['tag']),
                         retrieved_tags)
예제 #8
0
 def test_list_tags(self):
     retrieved_tags = db_api.revision_tag_get_all(self.revision_id)
     self.assertEmpty(retrieved_tags)