def test_autorized_schema(self): self.login_user() url = compat.reverse("bananas:v1.0:schema", kwargs={"format": ".json"}) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.check_valid_schema(response.json())
def assert_unauthorized(self, url): response = self.client.get(url) self.assertEqual(response.status_code, 302) self.assertRedirects( response, "{}?next={}".format(compat.reverse("admin:login"), url), fetch_redirect_response=False, )
def test_unautorized_schema(self): url = compat.reverse("bananas:v1.0:schema", kwargs={"format": ".json"}) response = self.client.get(url) self.assertEqual(response.status_code, 200) data = response.json() self.assertIn("/bananas/login/", data["paths"]) action = data["paths"]["/bananas/login/"]["post"] self.assertEqual(action["operationId"], "bananas.login:create") self.assertEqual(action["summary"], "Log in") self.assertNotIn("navigation", action["tags"])
def test_me(self): user = self.login_user() perm = Permission.objects.all().first() group = Group.objects.create(name="spam") user.user_permissions.add(perm) user.groups.add(group) url = compat.reverse("bananas:v1.0:bananas.me-list") response = self.client.get(url) self.assertEqual(response.status_code, 200) data = response.json() self.assertEqual(data["username"], user.username) self.assertIn("spam", data["groups"]) self.assertGreater(len(data["permissions"]), 0)
def test_login(self): user = self.create_user() url = compat.reverse("bananas:v1.0:bananas.login-list") # Fail response = self.client.post( url, data={"username": user.username, "password": "******"} ) self.assertEqual(response.status_code, 400) # Success response = self.client.post( url, data={"username": user.username, "password": "******"} ) self.assertEqual(response.status_code, 200) self.assertEqual(response.json()["username"], user.username) self.assertAuthorized()
def test_change_password(self): user = self.login_user() url = compat.reverse("bananas:v1.0:bananas.change_password-list") response = self.client.post( url, data={ "old_password": "******", "new_password1": "foo", "new_password2": "foo", }, ) self.assertEqual(response.status_code, 400) response = self.client.post( url, data={ "old_password": "******", "new_password1": "foo", "new_password2": "bar", }, ) self.assertEqual(response.status_code, 400) response = self.client.post( url, data={ "old_password": "******", "new_password1": "foobar123", "new_password2": "foobar123", }, ) self.assertEqual(response.status_code, 204) self.client.logout() self.client.login(username=user.username, password="******") self.assertNotAuthorized() self.client.login(username=user.username, password="******") self.assertAuthorized()
def test_autorized_schema(self): self.login_user() url = compat.reverse("bananas:v1.0:schema", kwargs={"format": ".json"}) response = self.client.get(url) self.assertEqual(response.status_code, 200) data = response.json() self.assertNotIn("/bananas/login/", data["paths"]) self.assertIn("/bananas/logout/", data["paths"]) action = data["paths"]["/bananas/logout/"]["post"] self.assertEqual(action["operationId"], "bananas.logout:create") self.assertEqual(action["summary"], "Log out") self.assertNotIn("navigation", action["tags"]) action = data["paths"]["/tests/ham/"]["get"] self.assertIn("crud", action["tags"]) self.assertIn("navigation", action["tags"]) action = data["paths"]["/bananas/me/"]["get"] self.assertNotIn("navigation", action["tags"]) action = data["paths"]["/tests/foo/baz/"] self.assertEqual(action["get"]["operationId"], "tests.foo:baz.read") self.assertEqual(action["post"]["operationId"], "tests.foo:baz.create")
def bar(self, request, pk): url = reverse("bananas:v1.0:example.user-bar", kwargs={"pk": pk}) return Response( "Just a simple extra detail action, url = {url}".format(url=url))
def setUp(self): super().setUp() self.detail_url = compat.reverse("admin:tests_simple") self.custom_url = compat.reverse("admin:tests_simple_custom") self.special_url = compat.reverse("admin:tests_simple_special")
def assertNotAuthorized(self): url = compat.reverse("admin:index") response = self.client.get(url) self.assertEqual(response.status_code, 302) # Redirect to login
def assertAuthorized(self): url = compat.reverse("admin:index") response = self.client.get(url) self.assertEqual(response.status_code, 200)
def test_logout(self): self.login_user() url = compat.reverse("bananas:v1.0:bananas.logout-list") response = self.client.post(url) self.assertEqual(response.status_code, 204) self.assertNotAuthorized()