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)
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)