Advertisement
Guest User

Untitled

a guest
Mar 18th, 2016
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.37 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from django.test import TestCase
  3. from rest_framework.test import APIClient
  4. from rest_framework import status
  5. from rest_framework.test import APIRequestFactory
  6. from models import Rop, RopVersion
  7. from django.core.urlresolvers import reverse
  8. from rest_framework.authtoken.models import Token
  9. from django.contrib.auth.models import User
  10.  
  11.  
  12. import logging
  13. logger = logging.getLogger(__name__)
  14.  
  15.  
  16. class TestApi(TestCase):
  17.     fixtures = ['test_fixture.json']  # os.path.join(FIXTURE_DIR, "test_fixture.json")]
  18.  
  19.     def setUp(self):
  20.         #loggen in client for Token authentication
  21.         self.client = APIClient()
  22.         token = Token.objects.get(user__username='admin')
  23.         self.admin_user_id = User.objects.get(username='admin').pk
  24.         self.client.credentials(HTTP_AUTHORIZATION='Token ' + token.key)
  25.  
  26.         #self.client.login(username='admin', password='tajneheslo')  # for sessions authentication
  27.  
  28.         #client not logged in
  29.         self.client_nolog = APIClient()
  30.         logger.debug('Test init done')
  31.  
  32.  
  33.     def test_program_names(self):
  34.         url = reverse('api:api_rop_all_names')
  35.         #user has right token
  36.         response = self.client.get(url)
  37.         self.assertEqual(response.status_code, status.HTTP_200_OK)
  38.         res_json = response.json()
  39.         self.assertEqual(res_json["program_names"], ["Tenofovir PD","Monobactam Program","Alpha7 PAM","Tau PET Tracer Program","PI3Kδ"])
  40.         #user is not authorized
  41.         response = self.client_nolog.get(url)
  42.         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
  43.  
  44.  
  45.     def test_program_list_get(self):
  46.         url = reverse('api:api_rop_list')
  47.         #user has right token
  48.         response = self.client.get(url)
  49.         self.assertEqual(response.status_code, status.HTTP_200_OK)
  50.         writable_programs = filter(lambda x: x["writable"], response.data)
  51.         #are writable program determined correctly?
  52.         self.assertEqual(len(writable_programs), 2)
  53.  
  54.         #user is not authorized
  55.         response = self.client_nolog.get(url)
  56.         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
  57.  
  58.  
  59.     def test_program_list_post(self):
  60.         url = reverse('api:api_rop_list')
  61.         program_name = "new_test_rop_abrakadabra"
  62.         response = self.client.post(url, data={"rop_name": program_name, "rop_creator_id": self.admin_user_id})
  63.         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
  64.         self.assertIsNotNone(Rop.objects.get(rop_name=program_name))
  65.  
  66.         #user is not authorized
  67.         response = self.client_nolog.get(url)
  68.         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
  69.  
  70.     def test_rop_versions_list_get(self):
  71.         url = reverse('api:api_rop_versions')
  72.         #user has right token
  73.         response = self.client.get(url)
  74.         self.assertEqual(response.status_code, status.HTTP_200_OK)
  75.         writable_rops = filter(lambda x: x["writable"], response.data)
  76.         #are writable program determined correctly?
  77.         self.assertEqual(len(writable_rops), 2)
  78.  
  79.         #user is not authorized
  80.         response = self.client_nolog.get(url)
  81.         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
  82.  
  83.     def test_create_program_with_version_post(self):
  84.         """
  85.        returns {"rop_version": verserdata, "rop_program": programserdata}
  86.        """
  87.  
  88.         url = reverse('api:api_create_program_with_version')
  89.         #user has right token
  90.         program_name = "new_rop"
  91.         version_note = "new_version"
  92.         post_data = {"rop_name" : program_name,
  93.                      "rop_change_note" : version_note,
  94.                      "rop_creator_id" : 1}
  95.  
  96.         response = self.client.post(url, data=post_data)
  97.         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
  98.         res_json = response.json()
  99.         self.assertIsNotNone(Rop.objects.get(rop_name=program_name))
  100.         self.assertIsNotNone(RopVersion.objects.get(rop_change_note=version_note))
  101.         #both program and its version should be writable
  102.         self.assertEqual(res_json["rop_program"]["writable"], True)
  103.         self.assertEqual(res_json["rop_version"]["writable"], True)
  104.  
  105.         #user is not authorized
  106.         response = self.client_nolog.get(url)
  107.         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement