示例#1
0
class ReuseBadgeAPITest:
    modules = []

    @pytest.fixture(autouse=True)
    def setup(self, api, clean_db):
        # Register at least two badges
        Reuse.__badges__['test-1'] = 'Test 1'
        Reuse.__badges__['test-2'] = 'Test 2'

        self.factory = badge_factory(Reuse)
        self.user = api.login(AdminFactory())
        self.reuse = ReuseFactory()

    def test_list(self, api):
        response = api.get(url_for('api.available_reuse_badges'))
        assert200(response)
        assert len(response.json) == len(Reuse.__badges__)
        for kind, label in Reuse.__badges__.items():
            assert kind in response.json
            assert response.json[kind] == label

    def test_create(self, api):
        data = self.factory.as_dict()
        response = api.post(url_for('api.reuse_badges', reuse=self.reuse),
                            data)
        assert201(response)
        self.reuse.reload()
        assert len(self.reuse.badges) == 1

    def test_create_same(self, api):
        data = self.factory.as_dict()
        api.post(url_for('api.reuse_badges', reuse=self.reuse), data)
        response = api.post(url_for('api.reuse_badges', reuse=self.reuse),
                            data)
        assert200(response)
        self.reuse.reload()
        assert len(self.reuse.badges) == 1

    def test_create_2nd(self, api):
        # Explicitely setting the kind to avoid collisions given the
        # small number of choices for kinds.
        kinds_keys = list(Reuse.__badges__)
        self.reuse.add_badge(kinds_keys[0])
        data = self.factory.as_dict()
        data['kind'] = kinds_keys[1]
        response = api.post(url_for('api.reuse_badges', reuse=self.reuse),
                            data)
        assert201(response)
        self.reuse.reload()
        assert len(self.reuse.badges) == 2

    def test_delete(self, api):
        badge = self.factory()
        self.reuse.add_badge(badge.kind)
        response = api.delete(
            url_for('api.reuse_badge',
                    reuse=self.reuse,
                    badge_kind=str(badge.kind)))
        assert204(response)
        self.reuse.reload()
        assert len(self.reuse.badges) == 0

    def test_delete_404(self, api):
        response = api.delete(
            url_for('api.reuse_badge',
                    reuse=self.reuse,
                    badge_kind=str(self.factory().kind)))
        assert404(response)
示例#2
0
class ReuseBadgeAPITest(APITestCase):
    @classmethod
    def setUpClass(cls):
        # Register at least two badges
        Reuse.__badges__['test-1'] = 'Test 1'
        Reuse.__badges__['test-2'] = 'Test 2'

        cls.factory = badge_factory(Reuse)

    def setUp(self):
        self.login(AdminFactory())
        self.reuse = ReuseFactory()

    def test_list(self):
        response = self.get(url_for('api.available_reuse_badges'))
        self.assertStatus(response, 200)
        self.assertEqual(len(response.json), len(Reuse.__badges__))
        for kind, label in Reuse.__badges__.items():
            self.assertIn(kind, response.json)
            self.assertEqual(response.json[kind], label)

    def test_create(self):
        data = self.factory.as_dict()
        with self.api_user():
            response = self.post(
                url_for('api.reuse_badges', reuse=self.reuse), data)
        self.assert201(response)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 1)

    def test_create_same(self):
        data = self.factory.as_dict()
        with self.api_user():
            self.post(
                url_for('api.reuse_badges', reuse=self.reuse), data)
            response = self.post(
                url_for('api.reuse_badges', reuse=self.reuse), data)
        self.assertStatus(response, 200)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 1)

    def test_create_2nd(self):
        # Explicitely setting the kind to avoid collisions given the
        # small number of choices for kinds.
        kinds_keys = Reuse.__badges__.keys()
        self.reuse.add_badge(kinds_keys[0])
        data = self.factory.as_dict()
        data['kind'] = kinds_keys[1]
        with self.api_user():
            response = self.post(
                url_for('api.reuse_badges', reuse=self.reuse), data)
        self.assert201(response)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 2)

    def test_delete(self):
        badge = self.factory()
        self.reuse.add_badge(badge.kind)
        with self.api_user():
            response = self.delete(
                url_for('api.reuse_badge', reuse=self.reuse,
                        badge_kind=str(badge.kind)))
        self.assertStatus(response, 204)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 0)

    def test_delete_404(self):
        with self.api_user():
            response = self.delete(
                url_for('api.reuse_badge', reuse=self.reuse,
                        badge_kind=str(self.factory().kind)))
        self.assert404(response)
示例#3
0
class ReuseBadgeAPITest(APITestCase):
    @classmethod
    def setUpClass(cls):
        # Register at least two badges
        Reuse.__badges__['test-1'] = 'Test 1'
        Reuse.__badges__['test-2'] = 'Test 2'

        cls.factory = badge_factory(Reuse)

    def setUp(self):
        self.login(AdminFactory())
        self.reuse = ReuseFactory()

    def test_list(self):
        response = self.get(url_for('api.available_reuse_badges'))
        self.assertStatus(response, 200)
        self.assertEqual(len(response.json), len(Reuse.__badges__))
        for kind, label in Reuse.__badges__.items():
            self.assertIn(kind, response.json)
            self.assertEqual(response.json[kind], label)

    def test_create(self):
        data = self.factory.as_dict()
        with self.api_user():
            response = self.post(url_for('api.reuse_badges', reuse=self.reuse),
                                 data)
        self.assert201(response)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 1)

    def test_create_same(self):
        data = self.factory.as_dict()
        with self.api_user():
            self.post(url_for('api.reuse_badges', reuse=self.reuse), data)
            response = self.post(url_for('api.reuse_badges', reuse=self.reuse),
                                 data)
        self.assertStatus(response, 200)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 1)

    def test_create_2nd(self):
        # Explicitely setting the kind to avoid collisions given the
        # small number of choices for kinds.
        kinds_keys = Reuse.__badges__.keys()
        self.reuse.add_badge(kinds_keys[0])
        data = self.factory.as_dict()
        data['kind'] = kinds_keys[1]
        with self.api_user():
            response = self.post(url_for('api.reuse_badges', reuse=self.reuse),
                                 data)
        self.assert201(response)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 2)

    def test_delete(self):
        badge = self.factory()
        self.reuse.add_badge(badge.kind)
        with self.api_user():
            response = self.delete(
                url_for('api.reuse_badge',
                        reuse=self.reuse,
                        badge_kind=str(badge.kind)))
        self.assertStatus(response, 204)
        self.reuse.reload()
        self.assertEqual(len(self.reuse.badges), 0)

    def test_delete_404(self):
        with self.api_user():
            response = self.delete(
                url_for('api.reuse_badge',
                        reuse=self.reuse,
                        badge_kind=str(self.factory().kind)))
        self.assert404(response)