예제 #1
0
 def test_returns_none_if_no_user_with_email(self):
     backend = PersonaAuthenticationBackend()
     other_user = User(email='*****@*****.**')
     other_user.username = '******'
     other_user.save()
     found_user = backend.get_user('*****@*****.**')
     self.assertIsNone(found_user)
 def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
     backend = PersonaAuthenticationBackend()
     backend.authenticate('an assertion')
     mock_post.asesrt_called_once_with(
         PERSONA_VERIFY_URL,
         data={'assertion': 'an assertion', 'audience': DOMAIN}
     )
예제 #3
0
 def test_returns_none_if_no_user_with_that_email(self):
     backend = PersonaAuthenticationBackend()
     user = User(email='*****@*****.**')
     self.assertIsNone(
         backend.get_user(user.pk)
     )
     
예제 #4
0
    def test_returns_none_if_user_does_not_exist(self, mock_User_get):
        def raise_no_user_error(*_, **__):
            raise User.DoesNotExist()
        mock_User_get.side_effect = raise_no_user_error
        backend = PersonaAuthenticationBackend()

        self.assertIsNone(backend.get_user('*****@*****.**'))
예제 #5
0
	def test_gets_user_email(self):
		backend = PersonaAuthenticationBackend()
		mystical_user = User(email='*****@*****.**')
		mystical_user.username = '******'
		mystical_user.save()
		desired_user = User.objects.create(email='*****@*****.**')
		found_user = backend.get_user('*****@*****.**')
		self.assertEqual(desired_user, found_user)
예제 #6
0
 def test_gets_user_by_email(self):
     backend = PersonaAuthenticationBackend()
     other_user = User(email='*****@*****.**')
     other_user.username = '******'
     other_user.save()
     desired_user = User.objects.create(email='*****@*****.**')
     found_user = backend.get_user('*****@*****.**')
     self.assertEqual(found_user, desired_user)
예제 #7
0
 def test_gets_user_by_email(self):
     backend = PersonaAuthenticationBackend()
     # to fail the test until a user was specified...
     other_user = User(email="*****@*****.**")
     other_user.username = "******"
     other_user.save()
     desired_user = User.objects.create(email="*****@*****.**")
     found_user = backend.get_user("*****@*****.**")
     self.assertEqual(found_user, desired_user)
예제 #8
0
class AuthenticateTest(TestCase):

    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User(email="*****@*****.**")
        user.username = '******'
        user.save()

    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate('an assertion')
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data={'assertion': "an assertion", 'audience': settings.DOMAIN}
        )

    def test_returns_one_if_response_errors(self, mock_post):
        mock_post.return_value.ok = False
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):
        mock_post.return_value.json.return_value = {'status': "not okay!"}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay',
                                                    'email': '*****@*****.**'}
        actual_user = User.objects.create(email="*****@*****.**")
        found_user = self.backend.authenticate("an assertion")
        self.assertEqual(found_user, actual_user)

    def test_returns_none_if_response_errors(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_create_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay',
                                                    'email': '*****@*****.**'}
        found_user = self.backend.authenticate("an assertion")
        new_user = User.objects.get(email="*****@*****.**")
        self.assertEqual(found_user, new_user)

    def test_logs_non_okay_response_from_persona(self, mock_post):
        response_json = {
            'status': 'not okay',
            'reason': 'eg, audience mismatch'
        }
        mock_post.return_value.ok = True
        mock_post.return_value.json.return_value = response_json
        logger = logging.getLogger('accounts.authentication')
        with patch.object(logger, 'warning') as mock_log_warning:
            self.backend.authenticate("an assertion")

        mock_log_warning.assert_called_once_with(
            "Persona says no. Json was: {}".format(response_json)
                                                 )
 def test_gets_user_by_email(self):
     '''
     1: Create dummy user 
     2: Create new user by email
     3: Retrieve new user by email by passing his email to get_user()
     4: Test that created new user and retrieved new user are same
     '''
     backend = PersonaAuthenticationBackend()
     other_user = User(email='*****@*****.**')
     other_user.username = '******'
     other_user.save() # 1
     desired_user = User.objects.create(email='*****@*****.**') # 2
     found_user = backend.get_user('*****@*****.**') # 3
     self.assertEqual(found_user, desired_user) # 4
예제 #10
0
class GetUserTest(TestCase):
    def setUp(self):
        self.backend = PersonaAuthenticationBackend()

    def test_gets_user_by_email(self):
        other_user = User(email="*****@*****.**")
        other_user.username = "******"
        other_user.save()
        desired_user = User.objects.create(email="*****@*****.**")
        found_user = self.backend.get_user("*****@*****.**")
        self.assertEqual(found_user, desired_user)

    def test_returns_none_if_no_user_with_that_email(self):
        self.assertIsNone(self.backend.get_user("*****@*****.**"))
class AuthenticateTest(TestCase):

    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        self.mock_response = mock_post.return_value
        self.mock_response.ok = True
        self.mock_response.json.return_value = {
            'status': 'okay', 'email': '*****@*****.**'
        }

    def tearDown(self):
        mock_post.reset_mock()

    def test_sends_assertion_to_mozilla_with_domain(self):

        self.backend.authenticate('an assertion')

        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data={'assertion': 'an assertion', 'audience': DOMAIN}
        )

    def test_return_none_if_response_error(self):
        self.mock_response.json.return_value = {'status': 'not okay'}
        self.mock_response.ok = False

        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_returns_non_if_status_not_okay(self):
        self.mock_response.json.return_value = {'status': 'not okay'}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self):
        self.mock_response.json.return_value = {
            'status': 'okay', 'email': '*****@*****.**'}
        self.backend.get_user = Mock()
        mock_user = self.backend.get_user.return_value
        user = self.backend.authenticate('an assertion')
        self.assertEqual(user, mock_user)

    def test_calls_get_user_with_email(self):
        self.mock_response.json.return_value = {
            'status': 'okay', 'email': '*****@*****.**'}
        self.backend.get_user = Mock()
        self.backend.authenticate('an assertion')
        self.backend.get_user.assert_called_once_with('*****@*****.**')

    def test_creates_new_user_if_required(self):
        def raise_no_user_error(_):
            raise User.DoesNotExist()

        self.backend.get_user = raise_no_user_error

        user = self.backend.authenticate('an assertion')
        new_user = User.objects.all()[0]
        self.assertEqual(user, new_user)
        self.assertEqual(user.email, '*****@*****.**')
예제 #12
0
 def setUp(self):
     self.backend = PersonaAuthenticationBackend()
     user = User(email='*****@*****.**')
     # By default, Django's users have a username attribute, which must
     # be unique.
     user.username = '******'
     user.save()
 def setUp(self):
     self.backend = PersonaAuthenticationBackend()  # 现在我们可以在 setUp 函数中准备所有测试都会用到的变量
     user = User(email="*****@*****.**")
     # 在默认情况下,Django 的用户都有 username 属性,其值必须具有唯一性。
     # 这里使用的值只是一个占位符,方便我们创建多个用户。后面我们要使用电子邮件做主键,到时候就不用用户名了。
     user.username = "******"
     user.save()
 def setUp(self):
     self.backend = PersonaAuthenticationBackend()
     self.mock_response = mock_post.return_value
     self.mock_response.ok = True
     self.mock_response.json.return_value = {
         'status': 'okay', 'email': '*****@*****.**'
     }
예제 #15
0
 def setUp(self):
     '''
     Notice we mock up requests.post so we don't send actual request
     '''
     self.backend = PersonaAuthenticationBackend()
     user = User(email='*****@*****.**')
     user.username = '******'  
     user.save()
class AuthenticateTest(TestCase):
    def setUp(self):
        self.backend = PersonaAuthenticationBackend()  # 现在我们可以在 setUp 函数中准备所有测试都会用到的变量
        user = User(email="*****@*****.**")
        # 在默认情况下,Django 的用户都有 username 属性,其值必须具有唯一性。
        # 这里使用的值只是一个占位符,方便我们创建多个用户。后面我们要使用电子邮件做主键,到时候就不用用户名了。
        user.username = "******"
        user.save()

    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate("an assertion")
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data={"assertion": "an assertion", "audience": settings.DOMAIN}
        )

    def test_returns_none_if_response_errors(self, mock_post):
        # 现在每个测试只调整需要设定的变量,而没有设定一堆重复的样板代码,所以测试更具易读性
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):
        # 现在每个测试只调整需要设定的变量,而没有设定一堆重复的样板代码,所以测试更具易读性
        mock_post.return_value.json.return_value = {
            "status": "not okay!"}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "okay", "email": "*****@*****.**"}
        actual_user = User.objects.create(email="*****@*****.**")
        found_user = self.backend.authenticate("an assertion")
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "okay", "email": "*****@*****.**"}
        found_user = self.backend.authenticate("an assertion")
        new_user = User.objects.get(email="*****@*****.**")
        self.assertEqual(found_user, new_user)

    def test_logs_non_okay_responses_from_persona(self, mock_post):
        response_json = {"status": "not okay", "reason": "eg, audience mismatch"}
        mock_post.return_value_ok = True
        mock_post.return_value.json.return_value = response_json  # 给测试提供一些数据,触发日志记录器

        logger = logging.getLogger("accounts.authentication")  # 获取正在测试的这个模块的日志记录器
        # 使用 patch.object 临时模块这个日志记录器的 warning 函数。使用 with 的目的是把这个驭件作为测试目标函数的上下文管理器
        with patch.object(logger, "warning") as mock_log_warning:
            self.backend.authenticate("an assertion")

        # 然后可以使用这个驭件声明断言
        mock_log_warning.assert_called_once_with("Persona says no. Json was: {}".format(response_json))
예제 #17
0
class AuthenticateTest(TestCase):

    # setup applies DRY
    # always a user in db
    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User(email="*****@*****.**")
        user.username = "******"  # 1
        user.save()

    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate("an assertion")
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL, data={"assertion": "an assertion", "audience": settings.DOMAIN}
        )

    # no user gives none
    def test_returns_none_if_response_errors(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "not okay!"}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "okay", "email": "*****@*****.**"}
        actual_user = User.objects.create(email="*****@*****.**")
        found_user = self.backend.authenticate("an assertion")
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "okay", "email": "*****@*****.**"}
        # this line return a user, that's not there
        found_user = self.backend.authenticate("an assertion")
        # later this fail cus email aint in db
        new_user = User.objects.get(email="*****@*****.**")
        self.assertEqual(found_user, new_user)

    # for logging
    def test_logs_non_okay_responses_from_persona(self, mock_post):
        response_json = {"status": "not okay", "reason": "eg, audience mismatch"}
        mock_post.return_value.ok = True
        mock_post.return_value.json.return_value = response_json  # 1

        logger = logging.getLogger("accounts.authentication")  # 2
        with patch.object(logger, "warning") as mock_log_warning:  # 3
            self.backend.authenticate("an assertion")

        mock_log_warning.assert_called_once_with("Persona says no. Json was: {}".format(response_json))  # 4
예제 #18
0
class AuthenticateTest(TestCase):

	def setUp(self):
		self.backend = PersonaAuthenticationBackend()
		user = User(email='*****@*****.**')
		user.username = '******'
		user.save()
	
	def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
		user = self.backend.authenticate('an assertion')
		# print('user in the response is: ', user)
		mock_post.assert_called_once_with(
			PERSONA_VERIFY_URL,
			data={'assertion': 'an assertion', 'audience': DOMAIN}
		)
		
	def test_returns_none_if_response_errors(self, mock_post):
		mock_post.return_value.ok = False
		mock_post.return_value.json.return_value = {}
		user = self.backend.authenticate('an assertion')
		# print('the response including user: '******'status': 'not okay!'}
		user = self.backend.authenticate('an assertion')
		self.assertIsNone(user)
		
	def test_finds_existing_user_with_email(self, mock_post):
		mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
		actual_user = User.objects.create(email='*****@*****.**')
		# print('actual user created: ', actual_user.email)
		found_user = self.backend.authenticate('an assertion')
		# print('post user found: ', found_user.email)
		self.assertEqual(found_user, actual_user)
		
	def test_creates_new_user_if_neccessary_for_valid_assertion(self, mock_post):
		mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
		found_user = self.backend.authenticate('an assertion')
		new_user = User.objects.get(email='*****@*****.**')
		self.assertEqual(found_user, new_user)
예제 #19
0
class AuthenticateTest(TestCase):
    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User(email="*****@*****.**")
        user.username = "******"
        user.save()

    def test_send_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate("an assertion")
        mock_post.assert_called_once_with(PERSONA_VERIFY_URL, data={"assertion": "an assertion", "audience": DOMAIN})

    def test_returns_none_if_response_errors(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_returns_none_if_status_errors(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "not okay!"}
        user = self.backend.authenticate("an assertion")
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "okay", "email": "*****@*****.**"}
        actual_user = User.objects.create(email="*****@*****.**")
        found_user = self.backend.authenticate("an assertion")
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {"status": "okay", "email": "*****@*****.**"}
        found_user = self.backend.authenticate("an assertion")
        new_user = User.objects.get(email="*****@*****.**")
        self.assertEqual(found_user, new_user)
예제 #20
0
class AuthenticateTest(TestCase):

    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User(email='*****@*****.**')
        user.save()


    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate('an assertion')
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data = {'assertion': 'an assertion', 'audience': settings.DOMAIN}
        )

    def test_returns_none_if_response_errors(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'not okay!'}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        existing_user = User.objects.create(email='*****@*****.**')
        mock_post.return_value.json.return_value = {
            'status': 'okay', 'email': '*****@*****.**'
        }
        returned_user = self.backend.authenticate('an assertion')
        self.assertEqual(existing_user, returned_user)
        
    def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {
            'status': 'okay', 'email': '*****@*****.**'
        }
        returned_user = self.backend.authenticate('an assertion')
        self.assertEqual(User.objects.count(), 2)
        self.assertNotEqual(returned_user, User.objects.get(email='*****@*****.**'))
        self.assertEqual(returned_user, User.objects.get(email='*****@*****.**'))
예제 #21
0
class AuthenticateTest(TestCase):

    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User.objects.create(email='*****@*****.**')


    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate('an assertion')
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data={'assertion': 'an assertion', 'audience': DOMAIN}
        )

    
    def test_returns_None_if_response_errors(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)


    def test_response_JSON_has_status_okay(self, mock_post):
        mock_post.return_value.ok = True
        mock_post.return_value.json.return_value = {'status': 'not okay!'}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)


    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.ok = True
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
        actual_user = User.objects.create(email='*****@*****.**')
        found_user = self.backend.authenticate('an assertion')
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.ok = True
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
        found_user = self.backend.authenticate('an assertion')
        new_user = User.objects.get(email='*****@*****.**')
        self.assertEqual(found_user, new_user)
class AuthenticationTest(TestCase):

    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User(email='*****@*****.**')
        user.username = '******'
        user.save()

    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate('the assertion')
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data={'assertion': 'the assertion', 'audience': DOMAIN}
        )

    def test_returns_none_on_response_error(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate('the assertion')
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'foobard'}
        user = self.backend.authenticate('the assertion')
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
        actual_user = User.objects.create(email='*****@*****.**')
        found_user = self.backend.authenticate('the assertion')
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_on_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
        found_user = self.backend.authenticate('the assertion')
        created_user = User.objects.get(email='*****@*****.**')
        self.assertEqual(User.objects.all().count(), 2)
        self.assertEqual(found_user, created_user)
예제 #23
0
class AuthenticationTest(TestCase):

    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User(email='*****@*****.**')
        user.username = '******'
        user.save()

    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate('an assertion')
        # we assure, that patched method is called with following args
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data={'assertion': 'an assertion', 'audience': DOMAIN}
        )

    def test_returns_none_if_errors_in_response(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'not okay!'}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '[email protected]'}
        actual_user = User.objects.create(email='[email protected]')
        found_user = self.backend.authenticate('an assertion')
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '[email protected]'}
        found_user = self.backend.authenticate('an assertion')
        new_user = User.objects.get(email='[email protected]')
        self.assertEqual(found_user, new_user)
예제 #24
0
class AuthenticateTest(TestCase):

    def setUp(self):
        self.backend = PersonaAuthenticationBackend()
        user = User(email='*****@*****.**')
        user.username = '******'
        user.save()

    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
        self.backend.authenticate('an assertion')
        mock_post.assert_called_once_with(
            PERSONA_VERIFY_URL,
            data={'assertion': 'an assertion', 'audience': settings.DOMAIN}
        )

    def test_returns_none_if_response_errors(self, mock_post):
        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'not okay!'}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
        actual_user = User.objects.create(email='*****@*****.**')
        found_user = self.backend.authenticate('an assertion')
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
        mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
        found_user = self.backend.authenticate('an assertion')
        new_user = User.objects.get(email='*****@*****.**')
        self.assertEqual(found_user, new_user)
예제 #25
0
class testAuthentication(TestCase):

	def setUp(self):
		self.backend = PersonaAuthenticationBackend()
		user = User(email='*****@*****.**')
		user.username = '******'
		user.save()
		
	def test_sends_assertion_to_mozilla_with_domain(self, mock_post):
		self.backend.authenticate('assert this')
		mock_post.assert_called_once_with(
			PERSONA_VERIFY_URL,
			data={'assertion':'assert this','audience':settings.DOMAIN}
		)

	def test_returns_none_if_response_error(self, mock_post):
		mock_post.return_value.ok = False
		mock_post.return_value.json.return_value = {}
		user = self.backend.authenticate('assert this')
		self.assertIsNone(user)
	
	def test_returns_none_if_status_not_okay(self, mock_post):
		mock_post.return_value.json.return_value = {'status': 'not okay!'}
		user = self.backend.authenticate('assert this')
		self.assertIsNone(user)


	def test_finds_existing_user_with_email(self, mock_post):
		mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
		actual_user = User.objects.create(email='*****@*****.**')
		found_user = self.backend.authenticate('assert this')
		self.assertEqual(found_user, actual_user)
	def test_creates_new_user_if_necessary_for_valid_assertion(self, mock_post):
		mock_post.return_value.json.return_value = {'status': 'okay', 'email': '*****@*****.**'}
		found_user = self.backend.authenticate('assert this')
		new_user = User.objects.get(email='*****@*****.**')
		self.assertEqual(found_user, new_user)
예제 #26
0
 def setUp(self):
     self.backend = PersonaAuthenticationBackend()
     user = User(email='*****@*****.**')
     user.username = '******'
     user.save()
예제 #27
0
 def test_returns_none_if_response_errors(self, mock_post):
     mock_post.return_value.ok = False
     mock_post.return_value.json.return_value = {}
     backend = PersonaAuthenticationBackend()
     user = backend.authenticate('an assertion')
     self.assertIsNone(user)
예제 #28
0
 def test_returns_none_if_no_user_with_that_email(self):
     backend = PersonaAuthenticationBackend()
     self.assertIsNone(backend.get_user("*****@*****.**"))
예제 #29
0
    def test_returns_none_if_no_user_with_that_email(self):
        backend = PersonaAuthenticationBackend()

        found_user = backend.get_user('*****@*****.**')

        self.assertIsNone(found_user)
예제 #30
0
 def test_gets_user_from_ORM_using_email(self, mock_User_get):
     backend = PersonaAuthenticationBackend()
     found_user = backend.get_user('*****@*****.**')
     self.assertEqual(found_user, mock_User_get.return_value)
     mock_User_get.assert_called_once_with(email='*****@*****.**')
예제 #31
0
 def test_gets_user_from_ORM_using_email(self, mock_User_get):
     backend = PersonaAuthenticationBackend()
     found_user = backend.get_user('*****@*****.**')
     self.assertEqual(found_user, mock_User_get.return_value)
     mock_User_get.assert_called_once_with(email='*****@*****.**')
 def test_returns_none_if_no_user_with_that_email(self):
     backend = PersonaAuthenticationBackend()
     assert backend.get_user('*****@*****.**') is None
예제 #33
0
 def test_returns_none_if_no_user_with_that_email(self):
     backend = PersonaAuthenticationBackend()
     self.assertIsNone(backend.get_user('*****@*****.**'))
예제 #34
0
 def setUp(self):
     self.backend = PersonaAuthenticationBackend()
     user = User(email='*****@*****.**')
     user.username = '******'
     user.save()
예제 #35
0
class AuthenticateTest(TestCase):
    def setUp(self):

        self.backend = PersonaAuthenticationBackend()
        user = User(email='*****@*****.**')
        user.username = '******'
        user.save()

    def test_sends_assertion_to_mozilla_with_domain(self, mock_post):

        self.backend.authenticate('an assertion')
        mock_post.assert_called_once_with(PERSONA_VERIFY_URL,
                                          data={
                                              'assertion': 'an assertion',
                                              'audience': settings.DOMAIN
                                          })

    def test_returns_none_if_response_errors(self, mock_post):

        mock_post.return_value.ok = False
        mock_post.return_value.json.return_value = {}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_returns_none_if_status_not_okay(self, mock_post):

        mock_post.return_value.json.return_value = {'status': 'not okay!'}
        user = self.backend.authenticate('an assertion')
        self.assertIsNone(user)

    def test_finds_existing_user_with_email(self, mock_post):

        mock_post.return_value.json.return_value = {
            'status': 'okay',
            'email': '*****@*****.**'
        }
        actual_user = User.objects.create(email='*****@*****.**')
        found_user = self.backend.authenticate('an assertion')
        self.assertEqual(found_user, actual_user)

    def test_creates_new_user_if_necessary_for_valid_assertion(
            self, mock_post):

        mock_post.return_value.json.return_value = {
            'status': 'okay',
            'email': '*****@*****.**'
        }
        found_user = self.backend.authenticate('an assertion')
        new_user = User.objects.get(email='*****@*****.**')
        self.assertEqual(found_user, new_user)

    def test_logs_non_okay_responses_from_persona(self, mock_post):
        response_json = {
            'status': 'not okay',
            'reason': 'eg, audience mismatch'
        }
        mock_post.return_value.ok = True
        mock_post.return_value.json.return_value = response_json

        logger = logging.getLogger('accounts.authentication')
        with patch.object(logger, 'warning') as mock_log_warning:
            self.backend.authenticate('an assertion')

        mock_log_warning.assert_called_once_with(
            'Persona says no. Json was: {}'.format(response_json))
예제 #36
0
 def test_returns_none_if_response_errors(self,mock_post):
     mock_post.return_value.ok = False
     mock_post.return_value.json.return_value={}
     backend = PersonaAuthenticationBackend()
     user = backend.authenticate('an assertion')
     self.assertIsNone(user)