Example #1
0
 def test_args(self):
     auth = auth_lib.AuthContext({}, {"REQUEST_METHOD": "GET"})
     ctx = context.RequestContext(auth=auth,
                                  remote_ip=REMOTE_IP,
                                  x_forwarded_for=X_FORWARDED_FOR_IPS)
     self.assertEqual(ctx.auth, auth)
     self.assertEqual(ctx.remote_ip, REMOTE_IP)
     self.assertEqual(ctx.x_forwarded_for, X_FORWARDED_FOR_IPS)
Example #2
0
    def test_environ(self):
        environ = {"one": "two", "three": "four"}
        auth = auth_lib.AuthContext({}, environ)
        self.assertNotEqual(context.from_environ(environ).auth, auth)

        context.set_in_environ(
            environ, context.from_environ(environ).replace(auth=auth)
        )
        self.assertEqual(environ["one"], "two")
        self.assertEqual(environ["three"], "four")
        self.assertEqual(context.from_environ(environ).auth, auth)
Example #3
0
    def test_cache_success(self):
        call_count_box = [0]

        class UsernameProvider(auth.AuthProvider):
            def authenticate(self, environ):
                call_count_box[0] += 1
                return environ["username"]

        providers = {UsernameProvider: UsernameProvider()}
        auth_ctx = auth.AuthContext(providers, {"username": "******"})
        self.assertEqual(auth_ctx.get(UsernameProvider), "whoami")
        self.assertEqual(auth_ctx.get(UsernameProvider), "whoami")
        self.assertEqual(call_count_box[0], 1)
Example #4
0
    def test_cache_failure(self):
        call_count_box = [0]

        class FailureProvider(auth.AuthProvider):
            def authenticate(self, environ):
                call_count_box[0] += 1
                raise RuntimeError()

        providers = {FailureProvider: FailureProvider()}
        auth_ctx = auth.AuthContext(providers, {})
        with self.assertRaises(RuntimeError):
            auth_ctx.get(FailureProvider)
        with self.assertRaises(RuntimeError):
            auth_ctx.get(FailureProvider)
        self.assertEqual(call_count_box[0], 2)
Example #5
0
    def test_replace(self):
        environ1 = {"one": "two", "three": "four"}
        auth1 = auth_lib.AuthContext({}, environ1)
        environ2 = {"one": "two"}
        auth2 = auth_lib.AuthContext({}, environ2)
        remote_ip1 = ipaddress.ip_address("192.168.0.1")
        remote_ip2 = ipaddress.ip_address("192.168.0.2")
        x_forwarded_for_ips1 = (remote_ip1, REMOTE_IP)
        x_forwarded_for_ips2 = (remote_ip2, REMOTE_IP)

        req_context = context.RequestContext(
            auth=auth1,
            remote_ip=remote_ip1,
            x_forwarded_for=x_forwarded_for_ips1,
        )
        self.assertEqual(req_context.auth, auth1)
        self.assertEqual(req_context.remote_ip, remote_ip1)
        self.assertEqual(req_context.x_forwarded_for, x_forwarded_for_ips1)

        req_context_new = req_context.replace(auth=auth2)
        self.assertEqual(req_context_new.auth, auth2)
        self.assertEqual(req_context_new.remote_ip, req_context.remote_ip)
        self.assertEqual(req_context_new.x_forwarded_for,
                         req_context.x_forwarded_for)

        req_context_new = req_context.replace(remote_ip=remote_ip2)
        self.assertEqual(req_context_new.auth, req_context.auth)
        self.assertEqual(req_context_new.remote_ip, remote_ip2)
        self.assertEqual(req_context_new.x_forwarded_for,
                         req_context.x_forwarded_for)

        req_context_new = req_context.replace(
            x_forwarded_for=x_forwarded_for_ips2)
        self.assertEqual(req_context_new.auth, req_context.auth)
        self.assertEqual(req_context_new.remote_ip, req_context.remote_ip)
        self.assertEqual(req_context_new.x_forwarded_for, x_forwarded_for_ips2)
Example #6
0
    def test_environ(self):
        environ = {"one": "two", "three": "four"}
        auth = auth_lib.AuthContext({}, environ)
        req_context = context.from_environ(environ)
        self.assertNotEqual(req_context.auth, auth)
        self.assertNotEqual(req_context.remote_ip, REMOTE_IP)
        self.assertNotEqual(req_context.x_forwarded_for, X_FORWARDED_FOR_IPS)

        context.set_in_environ(
            environ,
            context.from_environ(environ).replace(
                auth=auth,
                remote_ip=REMOTE_IP,
                x_forwarded_for=X_FORWARDED_FOR_IPS,
            ),
        )
        self.assertEqual(environ["one"], "two")
        self.assertEqual(environ["three"], "four")
        req_context = context.from_environ(environ)
        self.assertEqual(req_context.auth, auth)
        self.assertEqual(req_context.remote_ip, REMOTE_IP)
        self.assertEqual(req_context.x_forwarded_for, X_FORWARDED_FOR_IPS)
Example #7
0
 def wrapper(environ, start_response):
     environ = dict(environ)
     auth_ctx = auth.AuthContext(auth_providers, environ)
     ctx = context.from_environ(environ).replace(auth=auth_ctx)
     context.set_in_environ(environ, ctx)
     return wsgi_app(environ, start_response)
Example #8
0
 def test_args(self):
     auth = auth_lib.AuthContext({}, {"REQUEST_METHOD": "GET"})
     ctx = context.RequestContext(auth=auth)
     self.assertEqual(ctx.auth, auth)