""" Tests for DOT Adapter """ from datetime import timedelta import ddt from django.test import TestCase from django.utils.timezone import now from oauth2_provider import models from student.tests.factories import UserFactory from ..adapters import DOTAdapter from .constants import DUMMY_REDIRECT_URL @ddt.ddt class DOTAdapterTestCase(TestCase): """ Test class for DOTAdapter. """ adapter = DOTAdapter() def setUp(self): super(DOTAdapterTestCase, self).setUp() self.user = UserFactory() self.public_client = self.adapter.create_public_client( name='public app', user=self.user, redirect_uri=DUMMY_REDIRECT_URL, client_id='public-client-id', ) self.confidential_client = self.adapter.create_confidential_client( name='confidential app', user=self.user, redirect_uri=DUMMY_REDIRECT_URL, client_id='confidential-client-id', ) @ddt.data( ('confidential', models.Application.CLIENT_CONFIDENTIAL), ('public', models.Application.CLIENT_PUBLIC), ) @ddt.unpack def test_create_client(self, client_name, client_type): client = getattr(self, '{}_client'.format(client_name)) self.assertIsInstance(client, models.Application) self.assertEqual(client.client_id, '{}-client-id'.format(client_name)) self.assertEqual(client.client_type, client_type) def test_get_client(self): client = self.adapter.get_client(client_type=models.Application.CLIENT_CONFIDENTIAL) self.assertIsInstance(client, models.Application) self.assertEqual(client.client_type, models.Application.CLIENT_CONFIDENTIAL) def test_get_client_not_found(self): with self.assertRaises(models.Application.DoesNotExist): self.adapter.get_client(client_id='not-found') def test_get_client_for_token(self): token = models.AccessToken( user=self.user, application=self.public_client, ) self.assertEqual(self.adapter.get_client_for_token(token), self.public_client) def test_get_access_token(self): token = models.AccessToken.objects.create( token='token-id', application=self.public_client, user=self.user, expires=now() + timedelta(days=30), ) self.assertEqual(self.adapter.get_access_token(token_string='token-id'), token)