Index: appengine/auth_service/delegation_test.py |
diff --git a/appengine/auth_service/delegation_test.py b/appengine/auth_service/delegation_test.py |
index d439982ebbb5702e40329b7d74bf302bd41a31a0..510730fe936a46a691a3ba38b7cbf94d22fd6fe4 100755 |
--- a/appengine/auth_service/delegation_test.py |
+++ b/appengine/auth_service/delegation_test.py |
@@ -15,7 +15,10 @@ test_env.setup_test_env() |
import webapp2 |
import webtest |
+from google.appengine.ext import ndb |
+ |
from components import auth |
+from components import utils |
from components.auth import delegation as auth_delegation |
from components.auth import handler |
from components.auth.proto import delegation_pb2 |
@@ -36,7 +39,7 @@ class HandlersTest(test_case.TestCase): |
super(HandlersTest, self).setUp() |
self.app = webtest.TestApp( |
webapp2.WSGIApplication(delegation.get_rest_api_routes(), debug=True), |
- extra_environ={'REMOTE_ADDR': '127.0.0.1'}) |
+ extra_environ={'REMOTE_ADDR': '127.1.2.3'}) |
# Don't bother with XSRF tokens in unit tests. |
self.mock( |
delegation.CreateDelegationTokenHandler, 'xsrf_token_enforce_on', []) |
@@ -71,10 +74,25 @@ class HandlersTest(test_case.TestCase): |
self.assertFalse(t.audience) |
self.assertEqual(t.services, ['*']) |
self.assertFalse(t.HasField('impersonator_id')) |
+ self.assertTrue(t.subtoken_id is not None) |
+ |
+ # Entity is created. |
+ key = ndb.Key(delegation.AuthDelegationSubtoken, t.subtoken_id) |
+ ent = key.get() |
+ self.assertTrue(ent) |
+ self.assertTrue(ent.subtoken) |
+ self.assertEqual('127.1.2.3', ent.caller_ip) |
+ self.assertEqual('v1a', ent.auth_service_version) |
+ self.assertEqual('user:a@a.com', ent.issuer_id) |
+ self.assertEqual( |
+ t.creation_time*1e6, utils.datetime_to_timestamp(ent.creation_time)) |
+ self.assertEqual('', ent.impersonator_id) |
def test_with_impersonation(self): |
# This function is tested separately below. |
- self.mock(delegation, 'check_can_create_token', lambda *_, **__: None) |
+ self.mock( |
+ delegation, 'check_can_create_token', |
+ lambda *_, **__: delegation.DEFAULT_RULE) |
resp = self.create_token({ |
'audience': ['user:b@a.com'], |
@@ -147,7 +165,9 @@ class CheckCanCreateTokenTest(test_case.TestCase): |
lambda: config_pb2.DelegationConfig(rules=self.rules)) |
def add_rule(self, **kwargs): |
- self.rules.append(config_pb2.DelegationConfig.Rule(**kwargs)) |
+ r = config_pb2.DelegationConfig.Rule(**kwargs) |
+ self.rules.append(r) |
+ return r |
def test_get_delegation_rule(self): |
self.add_rule( |
@@ -189,11 +209,12 @@ class CheckCanCreateTokenTest(test_case.TestCase): |
return delegation_pb2.Subtoken(**kwargs) |
def test_validity_duration(self): |
- self.add_rule( |
+ rule = self.add_rule( |
user_id=['*'], target_service=['*'], max_validity_duration=300) |
tok = self.make_subtoken(issuer_id='user:a@a.com', validity_duration=300) |
- delegation.check_can_create_token('user:a@a.com', tok) |
+ r = delegation.check_can_create_token('user:a@a.com', tok) |
+ self.assertEqual(rule, r) |
with self.assertRaises(auth.AuthorizationError): |
tok = self.make_subtoken(issuer_id='user:a@a.com', validity_duration=400) |
@@ -202,7 +223,8 @@ class CheckCanCreateTokenTest(test_case.TestCase): |
def test_impersonation_disallowed_by_default(self): |
# Making delegation token. |
tok = self.make_subtoken(issuer_id='user:a@a.com', validity_duration=300) |
- delegation.check_can_create_token('user:a@a.com', tok) |
+ r = delegation.check_can_create_token('user:a@a.com', tok) |
+ self.assertEqual(delegation.DEFAULT_RULE, r) |
# Making impersonation token. |
with self.assertRaises(auth.AuthorizationError): |
@@ -210,7 +232,7 @@ class CheckCanCreateTokenTest(test_case.TestCase): |
delegation.check_can_create_token('user:not-a@a.com', tok) |
def test_allowed_to_impersonate(self): |
- self.add_rule( |
+ rule = self.add_rule( |
user_id=['user:a@a.com'], |
target_service=['*'], |
max_validity_duration=300, |
@@ -225,15 +247,18 @@ class CheckCanCreateTokenTest(test_case.TestCase): |
tok = self.make_subtoken( |
issuer_id='user:directly@a.com', validity_duration=300) |
- delegation.check_can_create_token('user:a@a.com', tok) |
+ r = delegation.check_can_create_token('user:a@a.com', tok) |
+ self.assertEqual(rule, r) |
tok = self.make_subtoken( |
issuer_id='user:someone@viaglob.com', validity_duration=300) |
- delegation.check_can_create_token('user:a@a.com', tok) |
+ r = delegation.check_can_create_token('user:a@a.com', tok) |
+ self.assertEqual(rule, r) |
tok = self.make_subtoken( |
issuer_id='user:in-group@a.com', validity_duration=300) |
- delegation.check_can_create_token('user:a@a.com', tok) |
+ r = delegation.check_can_create_token('user:a@a.com', tok) |
+ self.assertEqual(rule, r) |
# Trying to impersonate someone not allowed. |
with self.assertRaises(auth.AuthorizationError): |