def testApplicationCache(self):
        a = Application()
        a.name = "Test App"
        a.client_secret = "abc"
        a.id = "test-id"
        a.created_by = "Nick"
        a.save()

        application_cache().load_from_db()
        self.assertIn(a, application_cache().all())
    def testCorrectlySignedAuthVerifySignature(self):
        a = Application()
        a.id = "test_id"
        a.client_secret = "test_secret"
        parameters = OrderedDict()
        parameters['test_param_1'] = random.randint(0,100)
        parameters['test_param_2'] = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(10))

        parameters['signature'] = self.__build_signature(a.id, a.client_secret, parameters)

        r = RequestFactory().get("/test", data=parameters)
        self.assertEqual(a, verify_request(r, a))  # this is a valid request so the app should come back
 def setUp(self):
     self.client = Client()
     self.user_finder = MockUserFinder()
     self.user = self.user_finder.find(id=12)
     a = Application()
     a.id = uuid.uuid4().hex
     a.name = "Test Application"
     a.created_by = self.user['id']
     a.client_secret = uuid.uuid4().hex
     a.redirect_uri = "http://example.com/redirect"
     a.save()
     self.application = a
    def testIncorrectlySignedAuthVerifySignature(self):
        a = Application()
        a.id = "test_id"
        a.client_secret = "test_secret"
        parameters = OrderedDict({
            "test_param_1": random.randint(0,100),
            "test_param_2": ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(10))
        })

        parameters['signature'] = self.__build_signature(a.id, "bad_secret", parameters)
        r = RequestFactory().get("/test", parameters)

        # this throws an error since it isn't a valid signature
        self.assertRaises(AuthenticationError, lambda: verify_request(r, a))
    def testInvalidateCacheView(self):
        a = Application()
        a.id = uuid.uuid4().hex
        a.client_secret = uuid.uuid4().hex
        a.super_application = True
        a.name = "Test Super App"
        a.redirect_uri = "/"
        a.created_by = "nick"
        a.save()

        sig = application_hasher(a, "secret")
        post_data = {
            'uncache_type': 'user_request',
            'user_id': 123
        }

        resp = self.client.post("/cache/invalidate?client_id=%s&signature=%s&verify=%s" % (a.id, sig, "secret"), data=post_data)
        self.assertEqual('{"message": "OK"}', resp.content.decode())
 def testApplicationHasher(self):
     a = Application()
     a.id = "abc"
     a.client_secret = "def"
     signature = application_hasher(a, "signature")
     self.assertEqual("11b2d248b0f026bf61d02dbc4d0a6edb", signature)