Exemple #1
0
class APITest(LiveServerTestCase):
    def setUp(self):
        self.browser = WebDriver()
        self.browser.implicitly_wait(3)
        self.n1 = Node.objects.create(title='TestNodeOne',
                                      description='The first test node')
        self.u1 = User.objects.create_user(username='******',
                                           email='*****@*****.**',
                                           password='******')
        self.u1 = User.objects.create_user(username='******',
                                           email='*****@*****.**',
                                           password='******')
        self.super_user = User.objects.create_user(username='******',
                                                   email='*****@*****.**',
                                                   password='******')
        self.super_user.is_superuser = True
        self.super_user.is_staff = True
        self.super_user.save()
        # Create 99 topics
        for i in range(1, 100):
            setattr(
                self, 't%s' % i,
                Topic.objects.create(title='Test Topic %s' % i,
                                     user=self.u1,
                                     content_raw='This is test topic __%s__' %
                                     i,
                                     node=self.n1))
        # Create 99 replies to self.t1
        for i in range(1, 100):
            Post.objects.create(
                topic=self.t1,
                user=self.u1,
                content_raw='This is reply to topic 1 (__%s__)' % i)

    def tearDown(self):
        self.browser.quit()

    def test_unauthorized_access(self):
        d = requests.get(self.live_server_url + api_reverse('topic-list'))
        self.assertEqual(d.status_code, 403)
        d = requests.get(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": self.t1.pk}))
        self.assertEqual(d.status_code, 403)

        self.browser.get(self.live_server_url + reverse("index"))
        login(self.browser, 'test1', '111')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.get(self.live_server_url + api_reverse('topic-list'))
        self.assertEqual(d.status_code, 403)
        d = s.get(self.live_server_url +
                  api_reverse('topic-detail', kwargs={"pk": self.t1.pk}))
        self.assertEqual(d.status_code, 403)

    def test_move_topic_up(self):
        lucky_topic1 = getattr(self, 't%s' % random.randint(1, 50))
        d = requests.patch(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"order": 1}))
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("index"))
        login(self.browser, 'super', '123')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"order": 1})).json()
        self.assertEqual(d["order"], 1)

    def test_close_open_topic(self):
        lucky_topic1 = getattr(self, 't%s' % random.randint(1, 50))
        d = requests.patch(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": True}))
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("index"))
        login(self.browser, 'super', '123')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": True})).json()
        self.assertEqual(d["closed"], True)
        d = s.patch(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": False})).json()
        self.assertEqual(d["closed"], False)

    def test_hide_topic(self):
        lucky_topic1 = getattr(self, 't%s' % random.randint(1, 50))
        d = requests.patch(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": True}))
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("index"))
        login(self.browser, 'super', '123')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url +
            api_reverse('topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"hidden": True})).json()
        self.assertEqual(d["hidden"], True)

    def test_hide_post(self):
        lucky_post = random.choice(Post.objects.visible().all())
        d = requests.patch(
            self.live_server_url +
            api_reverse('post-detail', kwargs={"pk": lucky_post.pk}),
            json.dumps({"hidden": True}))
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("index"))
        login(self.browser, 'super', '123')
        self.assertIn("Log out", self.browser.page_source)
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url +
            api_reverse('post-detail', kwargs={"pk": lucky_post.pk}),
            json.dumps({"hidden": True})).json()
        self.assertEqual(d["hidden"], True)
Exemple #2
0
class APITest(LiveServerTestCase):

    def setUp(self):
        self.browser = WebDriver()
        self.browser.implicitly_wait(3)
        self.n1 = Node.objects.create(
            title='TestNodeOne',
            description='The first test node'
        )
        self.u1 = User.objects.create_user(
            username='******', email='*****@*****.**', password='******'
        )
        self.u1 = User.objects.create_user(
            username='******', email='*****@*****.**', password='******'
        )
        self.super_user = User.objects.create_user(
            username='******', email='*****@*****.**', password='******'
        )
        self.super_user.is_superuser = True
        self.super_user.is_staff = True
        self.super_user.save()
        # Create 99 topics
        for i in range(1, 100):
            setattr(
                self,
                't%s' % i,
                Topic.objects.create(
                    title='Test Topic %s' % i,
                    user=self.u1,
                    content_raw='This is test topic __%s__' % i,
                    node=self.n1
                )
            )
        # Create 99 replies to self.t1
        for i in range(1, 100):
            Post.objects.create(
                topic=self.t1,
                user=self.u1,
                content_raw='This is reply to topic 1 (__%s__)' % i
            )

    def tearDown(self):
        self.browser.quit()

    def test_unauthorized_access(self):
        d = requests.get(self.live_server_url+api_reverse('niji:topic-list'))
        self.assertEqual(d.status_code, 403)
        d = requests.get(self.live_server_url+api_reverse('niji:topic-detail', kwargs={"pk": self.t1.pk}))
        self.assertEqual(d.status_code, 403)

        self.browser.get(self.live_server_url+reverse("niji:index"))
        login(self.browser, 'test1', '111')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.get(self.live_server_url + api_reverse('niji:topic-list'))
        self.assertEqual(d.status_code, 403)
        d = s.get(self.live_server_url + api_reverse('niji:topic-detail', kwargs={"pk": self.t1.pk}))
        self.assertEqual(d.status_code, 403)

    def test_move_topic_up(self):
        lucky_topic1 = getattr(self, 't%s' % random.randint(1, 50))
        d = requests.patch(
            self.live_server_url + api_reverse('niji:topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"order": 1})
        )
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("niji:index"))
        login(self.browser, 'super', '123')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url+api_reverse('niji:topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"order": 1})
        ).json()
        self.assertEqual(d["order"], 1)

    def test_close_open_topic(self):
        lucky_topic1 = getattr(self, 't%s' % random.randint(1, 50))
        d = requests.patch(
            self.live_server_url + api_reverse('niji:topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": True})
        )
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("niji:index"))
        login(self.browser, 'super', '123')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url + api_reverse('niji:topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": True})
        ).json()
        self.assertEqual(d["closed"], True)
        d = s.patch(
            self.live_server_url + api_reverse('niji:topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": False})
        ).json()
        self.assertEqual(d["closed"], False)

    def test_hide_topic(self):
        lucky_topic1 = getattr(self, 't%s' % random.randint(1, 50))
        d = requests.patch(
            self.live_server_url + api_reverse('niji:topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"closed": True})
        )
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("niji:index"))
        login(self.browser, 'super', '123')
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url + api_reverse('niji:topic-detail', kwargs={"pk": lucky_topic1.pk}),
            json.dumps({"hidden": True})
        ).json()
        self.assertEqual(d["hidden"], True)

    def test_hide_post(self):
        lucky_post = random.choice(Post.objects.visible().all())
        d = requests.patch(
            self.live_server_url + api_reverse('niji:post-detail', kwargs={"pk": lucky_post.pk}),
            json.dumps({"hidden": True})
        )
        self.assertEqual(d.status_code, 403)
        self.browser.get(self.live_server_url + reverse("niji:index"))
        login(self.browser, 'super', '123')
        self.assertIn("Log out", self.browser.page_source)
        cookies = self.browser.get_cookies()
        s = requests.Session()
        s.headers = {'Content-Type': 'application/json'}
        for cookie in cookies:
            if cookie['name'] == 'csrftoken':
                continue
            s.cookies.set(cookie['name'], cookie['value'])
        d = s.patch(
            self.live_server_url + api_reverse('niji:post-detail', kwargs={"pk": lucky_post.pk}),
            json.dumps({"hidden": True})
        ).json()
        self.assertEqual(d["hidden"], True)