Skip to content

Commit

Permalink
Test : Create unit tests for User Info
Browse files Browse the repository at this point in the history
  • Loading branch information
decon-harsh committed Feb 15, 2021
1 parent 3bdd883 commit eef34e1
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Next follow these instructions.
CREATE DATABASE osp;
\c osp;
GRANT ALL PRIVILEGES ON DATABASE osp to osp;
GRANT ALL PRIVILEGES ON DATABASE test_osp to osp;
ALTER USER osp CREATEDB;
```
2. You need to download API key file from your user-settings on Zulip. The file you download is named as 'download' or rename that to 'download'.
3. Place that download file in the project's directory.
Expand Down
1 change: 1 addition & 0 deletions main/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
"rest_framework.authentication.SessionAuthentication",
"rest_framework_simplejwt.authentication.JWTAuthentication",
),
'TEST_REQUEST_DEFAULT_FORMAT': 'json',
}

SIMPLE_JWT = {
Expand Down
75 changes: 75 additions & 0 deletions tests/test_api_user_info.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from django.urls import reverse
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.test import APIClient
from rest_framework.test import APITestCase
import json

User = get_user_model()

class UserInfoTests(APITestCase):
def setUp(self):

# Needed for token auths
self.client = APIClient()

# Register
self.register_data = {
"username":"testuser1",
"email":"[email protected]",
"password":"hello",
"confirm_password":"hello"
}
test_user = User(username=self.register_data['username'],email=self.register_data['email'],is_active=True)
test_user.set_password(self.register_data['password'])
test_user.save()

# Login and get real token
login_data = {
"username":self.register_data['username'],
"password":self.register_data['password']
}
response = self.client.post('http://localhost:8000/api/token_auth/token/',login_data,format='json', headers={'Content-Type':'application/json'})
self.access_token = response.json()['access']
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.access_token)

def test_get_user_info_successfully_empty(self):

response = self.client.get('http://localhost:8000/api/info/', format = 'json')
self.assertEqual(response.data,[])
self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_post_user_info_successfully(self):

body = {
"name":"Test User 1 Full Name",
"user_type":"admin",
"zulip_id": 334084
}
response = self.client.post('http://localhost:8000/api/info/', body ,format = 'json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)

def test_get_user_info_successfully(self):

response = self.client.get('http://localhost:8000/api/info/', format = 'json')
self.assertEqual(response.status_code, status.HTTP_200_OK)

def test_api_wrong_token(self):

self.client.credentials()
response = self.client.get('http://localhost:8000/api/info/', format = 'json')
self.assertEqual(response.data['detail'],"Authentication credentials were not provided.")
self.assertEqual(response.status_code, 403)

def test_multiple_post_user_info(self):

self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.access_token)
body = {
"name":"Test User 1 Full Name",
"user_type":"admin",
"zulip_id": 334084
}
for _ in range(2):
response = self.client.post('http://localhost:8000/api/info/', body ,format = 'json')
self.assertEqual(response.status_code, status.HTTP_409_CONFLICT)

0 comments on commit eef34e1

Please sign in to comment.