123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- from django.core.urlresolvers import reverse
- from rest_framework import status
- from rest_framework.test import APITestCase
- from .utils import utils
- import httpretty
- import base64
- from django.conf import settings
- class DynUpdateAuthenticationTests(APITestCase):
- def setCredentials(self, username, password):
- self.client.credentials(
- HTTP_AUTHORIZATION='Basic ' + base64.b64encode((username + ':' + password).encode()).decode())
- def setUp(self):
- if not hasattr(self, 'owner'):
- self.username = utils.generateRandomString(12)
- self.password = utils.generateRandomString(12)
- self.user = utils.createUser(self.username, self.password)
- self.token = utils.createToken(user=self.user)
- self.setCredentials(self.username, self.password)
- self.url = reverse('dyndns12update')
- self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token)
- self.domain = utils.generateDynDomainname()
- url = reverse('domain-list')
- data = {'name': self.domain}
- response = self.client.post(url, data)
- self.assertEqual(response.status_code, status.HTTP_201_CREATED)
- httpretty.enable()
- httpretty.register_uri(httpretty.POST, settings.NSLORD_PDNS_API + '/zones')
- httpretty.register_uri(httpretty.PATCH, settings.NSLORD_PDNS_API + '/zones/' + self.domain + '.')
- httpretty.register_uri(httpretty.PUT, settings.NSLORD_PDNS_API + '/zones/' + self.domain + './notify')
- def tearDown(self):
- httpretty.reset()
- httpretty.disable()
- def testSuccessfulAuthentication(self):
- response = self.client.get(self.url)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(response.data, 'good')
- def testWrongUsername(self):
- self.setCredentials('wrong', self.password)
- response = self.client.get(self.url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def testWrongPassword(self):
- self.setCredentials(self.username, 'wrong')
- response = self.client.get(self.url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def testDoubleColonInAuthentication(self):
- self.client.credentials(
- HTTP_AUTHORIZATION='Basic ' + base64.b64encode((self.username + ':' + self.password + ':bullshit').encode()).decode())
- response = self.client.get(self.url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def testlNoColonInAuthentication(self):
- self.client.credentials(
- HTTP_AUTHORIZATION='Basic ' + base64.b64encode((self.username + '' + self.password).encode()).decode())
- response = self.client.get(self.url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
- def testNoValidEncoding(self):
- self.client.credentials(HTTP_AUTHORIZATION='Basic bull[%]shit')
- response = self.client.get(self.url)
- self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|