Exemplo n.º 1
0
    def testReportsErrorOnNonHomepagesWhenAuthorizationHeaderIsMissing(self):
        environ = werkzeug_test.EnvironBuilder(path="/foo").get_environ()
        request = wsgiapp.HttpRequest(environ)

        response = self.manager.SecurityCheck(self.HandlerStub, request)
        self.assertEqual(response.get_data(as_text=True),
                         "JWT token validation failed: JWT token is missing.")
Exemplo n.º 2
0
  def testProcessesRequestWithUsernameFromTrustedIp(self):
    environ = werkzeug_test.EnvironBuilder(environ_base={
        "REMOTE_ADDR": "127.0.0.1",
        "HTTP_X_REMOTE_USER": "******"
    }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    response = self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(response, self.success_response)
Exemplo n.º 3
0
  def testRejectsRequestWithoutRemoteUserHeader(self):
    environ = werkzeug_test.EnvironBuilder(environ_base={
        "REMOTE_ADDR": "127.0.0.1"
    }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    response = self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(
        response.get_data(as_text=True), "No username header found.")
Exemplo n.º 4
0
  def testRejectsRequestWithEmptyUsername(self):
    environ = werkzeug_test.EnvironBuilder(environ_base={
        "REMOTE_ADDR": "127.0.0.1",
        "HTTP_X_REMOTE_USER": ""
    }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    response = self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(
        response.get_data(as_text=True), "Empty username is not allowed.")
Exemplo n.º 5
0
  def testRejectsRequestFromUntrustedIp(self):
    environ = werkzeug_test.EnvironBuilder(environ_base={
        "REMOTE_ADDR": "127.0.0.2"
    }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    response = self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(
        response.get_data(as_text=True),
        "Request sent from an IP not in AdminUI.remote_user_trusted_ips.")
Exemplo n.º 6
0
  def testVerifiesTokenWithProjectIdFromDomain(self, mock_method):
    environ = werkzeug_test.EnvironBuilder(headers={
        "Authorization": "Bearer blah"
    }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(mock_method.call_count, 1)
    self.assertEqual(mock_method.call_args_list[0][0], ("blah", request))
    self.assertEqual(mock_method.call_args_list[0][1], dict(audience="foo-bar"))
Exemplo n.º 7
0
  def testPassesThroughHomepageOnVerificationFailure(self, mock_method):
    _ = mock_method

    environ = werkzeug_test.EnvironBuilder(headers={
        "Authorization": "Bearer blah"
    }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    response = self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(response, self.success_response)
Exemplo n.º 8
0
    def testReportsErrorWhenBearerPrefixIsMissing(self):
        environ = werkzeug_test.EnvironBuilder(path="/foo",
                                               headers={
                                                   "Authorization": "blah"
                                               }).get_environ()
        request = wsgiapp.HttpRequest(environ)

        response = self.manager.SecurityCheck(self.HandlerStub, request)
        self.assertEqual(response.get_data(as_text=True),
                         "JWT token validation failed: JWT token is missing.")
Exemplo n.º 9
0
  def testFillsRequestUserFromTokenEmailOnSuccess(self, mock_method):
    _ = mock_method
    environ = werkzeug_test.EnvironBuilder(headers={
        "Authorization": "Bearer blah"
    }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    self.manager.SecurityCheck(self.HandlerStub, request)

    self.assertTrue(self.checked_request)
    self.assertEqual(self.checked_request.user, "*****@*****.**")
Exemplo n.º 10
0
  def testReportsErrorIfIssuerIsWrong(self, mock_method):
    _ = mock_method
    environ = werkzeug_test.EnvironBuilder(
        path="/foo", headers={
            "Authorization": "Bearer blah"
        }).get_environ()
    request = wsgiapp.HttpRequest(environ)

    response = self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(
        response.get_data(as_text=True),
        "JWT token validation failed: Wrong issuer.")
Exemplo n.º 11
0
    def testLogHttpAdminUIAccess(self):
        stats.STATS.RegisterCounterMetric("grr_gin_request_count")

        request = wsgiapp.HttpRequest({
            "wsgi.url_scheme": "http",
            "SERVER_NAME": "foo.bar",
            "SERVER_PORT": "1234"
        })
        request.user = "******"

        response = werkzeug_wrappers.Response(status=202,
                                              headers={
                                                  "X-GRR-Reason":
                                                  "foo/test1234",
                                                  "X-API-Method": "TestMethod"
                                              })

        self.l.LogHttpAdminUIAccess(request, response)
        self.assertIn("foo/test1234", self.log)
Exemplo n.º 12
0
  def testPassesThroughHomepageWhenAuthorizationHeaderIsMissing(self):
    environ = werkzeug_test.EnvironBuilder().get_environ()
    request = wsgiapp.HttpRequest(environ)

    response = self.manager.SecurityCheck(self.HandlerStub, request)
    self.assertEqual(response, self.success_response)