Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from django.test import TestCase
- from rest_framework.test import APIClient
- from rest_framework import status
- from rest_framework.test import APIRequestFactory
- from models import Rop, RopVersion
- from django.core.urlresolvers import reverse
- from rest_framework.authtoken.models import Token
- from django.contrib.auth.models import User
- import logging
- logger = logging.getLogger(__name__)
- class TestApi(TestCase):
- fixtures = ['test_fixture.json'] # os.path.join(FIXTURE_DIR, "test_fixture.json")]
- def setUp(self):
- #loggen in client for Token authentication
- self.client = APIClient()
- token = Token.objects.get(user__username='admin')
- self.admin_user_id = User.objects.get(username='admin').pk
- self.client.credentials(HTTP_AUTHORIZATION='Token ' + token.key)
- #self.client.login(username='admin', password='tajneheslo') # for sessions authentication
- #client not logged in
- self.client_nolog = APIClient()
- logger.debug('Test init done')
- def test_program_names(self):
- url = reverse('api:api_rop_all_names')
- #user has right token
- response = self.client.get(url)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- res_json = response.json()
- self.assertEqual(res_json["program_names"], ["Tenofovir PD","Monobactam Program","Alpha7 PAM","Tau PET Tracer Program","PI3Kδ"])
- #user is not authorized
- response = self.client_nolog.get(url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def test_program_list_get(self):
- url = reverse('api:api_rop_list')
- #user has right token
- response = self.client.get(url)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- writable_programs = filter(lambda x: x["writable"], response.data)
- #are writable program determined correctly?
- self.assertEqual(len(writable_programs), 2)
- #user is not authorized
- response = self.client_nolog.get(url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def test_program_list_post(self):
- url = reverse('api:api_rop_list')
- program_name = "new_test_rop_abrakadabra"
- response = self.client.post(url, data={"rop_name": program_name, "rop_creator_id": self.admin_user_id})
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
- self.assertIsNotNone(Rop.objects.get(rop_name=program_name))
- #user is not authorized
- response = self.client_nolog.get(url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def test_rop_versions_list_get(self):
- url = reverse('api:api_rop_versions')
- #user has right token
- response = self.client.get(url)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- writable_rops = filter(lambda x: x["writable"], response.data)
- #are writable program determined correctly?
- self.assertEqual(len(writable_rops), 2)
- #user is not authorized
- response = self.client_nolog.get(url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def test_create_program_with_version_post(self):
- """
- returns {"rop_version": verserdata, "rop_program": programserdata}
- """
- url = reverse('api:api_create_program_with_version')
- #user has right token
- program_name = "new_rop"
- version_note = "new_version"
- post_data = {"rop_name" : program_name,
- "rop_change_note" : version_note,
- "rop_creator_id" : 1}
- response = self.client.post(url, data=post_data)
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
- res_json = response.json()
- self.assertIsNotNone(Rop.objects.get(rop_name=program_name))
- self.assertIsNotNone(RopVersion.objects.get(rop_change_note=version_note))
- #both program and its version should be writable
- self.assertEqual(res_json["rop_program"]["writable"], True)
- self.assertEqual(res_json["rop_version"]["writable"], True)
- #user is not authorized
- response = self.client_nolog.get(url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement