Exemplo n.º 1
0
def gateway(request, template_name='perimeter/gateway.html'):
    """Display gateway form and process access requests.

    When the PerimeterAccessMiddleware catches an unvalidated
    user request they will redirect to this page.

    """
    if request.method == 'GET':
        form = GatewayForm()

    elif request.method == 'POST':
        form = GatewayForm(request.POST)
        if form.is_valid():
            form.save(request)
            return HttpResponseRedirect(
                resolve_return_url(
                    request.GET.get('next'))
            )

    return render(request, template_name, {'form': form})
Exemplo n.º 2
0
 def setUp(self):
     self.factory = RequestFactory()
     self.payload = {
         'token': "test",
         'email': "*****@*****.**",
         'name': "Hugo Rodger-Brown"
     }
     self.request = self.factory.post('/',
         data=self.payload,
         REMOTE_ADDR='127.0.0.1',
         HTTP_USER_AGENT='test_agent'
     )
     self.token = AccessToken(token="test").save()
     self.form = GatewayForm(self.request.POST)
Exemplo n.º 3
0
class GatewayFormTests(TestCase):

    def setUp(self):
        self.factory = RequestFactory()
        self.payload = {
            'token': "test",
            'email': "*****@*****.**",
            'name': "Hugo Rodger-Brown"
        }
        self.request = self.factory.post('/',
            data=self.payload,
            REMOTE_ADDR='127.0.0.1',
            HTTP_USER_AGENT='test_agent'
        )
        self.token = AccessToken(token="test").save()
        self.form = GatewayForm(self.request.POST)

    def test_post_valid_token(self):
        self.assertTrue(self.form.is_valid())
        self.assertEqual(self.form.token, self.token)

    def test_clean_inactive_token(self):
        self.token.is_active = False
        self.token.save(update_fields=['is_active'])
        self.assertFalse(self.form.is_valid())
        self.assertRaises(ValidationError, self.form.clean_token)

    def test_clean_expired_token(self):
        self.token.expires_on = YESTERDAY
        self.token.save(update_fields=['expires_on'])
        self.assertFalse(self.form.is_valid())
        self.assertRaises(ValidationError, self.form.clean_token)

    def test_no_matching_token(self):
        AccessToken.objects.all().delete()
        self.assertFalse(self.form.is_valid())
        self.assertRaises(ValidationError, self.form.clean_token)

    def test_save(self):
        self.request.session = {}
        self.assertTrue(self.form.is_valid())
        au = self.form.save(self.request)
        self.assertTrue(AccessTokenUse.objects.get(), au)
        self.assertEqual(au.user_email, self.payload['email'])
        self.assertEqual(au.user_name, self.payload['name'])
        self.assertEqual(au.token, self.token)
        self.assertEqual(au.client_ip, '127.0.0.1')
        self.assertEqual(au.client_user_agent, 'test_agent')