add simple (dummy) test for external (zitadel) user creation
This commit is contained in:
parent
94365602ca
commit
d5616b207e
6 changed files with 32 additions and 18 deletions
|
@ -20,7 +20,7 @@ class User:
|
||||||
firstName: str = ''
|
firstName: str = ''
|
||||||
lastName: str = ''
|
lastName: str = ''
|
||||||
displayName: str = ''
|
displayName: str = ''
|
||||||
grants: List[str] = field(default_factory=list)
|
groups: List[str] = field(default_factory=list)
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
if not self.displayName:
|
if not self.displayName:
|
||||||
|
@ -61,7 +61,7 @@ class ExtUser:
|
||||||
)
|
)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def create(self, updateIfExits=False):
|
def create(self, updateIfExists=False):
|
||||||
data = self.asDict()
|
data = self.asDict()
|
||||||
if self.user.hashedPassword:
|
if self.user.hashedPassword:
|
||||||
data['hashedPassword'] = self.user.hashedPassword
|
data['hashedPassword'] = self.user.hashedPassword
|
||||||
|
@ -69,10 +69,9 @@ class ExtUser:
|
||||||
if status > 201:
|
if status > 201:
|
||||||
if updateIfExits:
|
if updateIfExits:
|
||||||
return self.update()
|
return self.update()
|
||||||
else:
|
return status, res
|
||||||
return status, res
|
#if self.user.groups:
|
||||||
if self.user.grants:
|
#return self.createGroups()
|
||||||
return self.createGrants()
|
|
||||||
|
|
||||||
def update(self, createIfMissing=False):
|
def update(self, createIfMissing=False):
|
||||||
data = self.asDict()
|
data = self.asDict()
|
||||||
|
@ -84,19 +83,13 @@ class ExtUser:
|
||||||
return self.create()
|
return self.create()
|
||||||
else:
|
else:
|
||||||
return status, res
|
return status, res
|
||||||
if self.user.grants:
|
#if self.user.groups:
|
||||||
#return self.updateGrants()
|
#return self.updateGroups()
|
||||||
groups = ' '.join(self.user.grants)
|
|
||||||
data = dict(metadata=[dict(key='gloops', value='groups')])
|
|
||||||
return self.client.post(f'v2/users/human/{self.userId}/metadata', data)
|
|
||||||
|
|
||||||
def createGrants(self):
|
def createGroups(self):
|
||||||
data = dict(
|
data = dict(
|
||||||
userId=self.userId,
|
userId=self.userId,
|
||||||
projectId=config.oidc_params['project_id'],
|
projectId=config.oidc_params['project_id'],
|
||||||
roleKeys=self.user.grants,
|
roleKeys=self.user.groups,
|
||||||
)
|
)
|
||||||
return self.client.post(self.endpoints['create_authorization'], data)
|
return self.client.post(self.endpoints['create_authorization'], data)
|
||||||
|
|
||||||
def updateGrants(self):
|
|
||||||
self.createGrants()
|
|
||||||
|
|
|
@ -54,7 +54,10 @@ oidc_params = dict(
|
||||||
cookie_domain=getenv('OIDC_COOKIE_DOMAIN', None),
|
cookie_domain=getenv('OIDC_COOKIE_DOMAIN', None),
|
||||||
cookie_lifetime=getenv('OIDC_COOKIE_LIFETIME', '86400'),
|
cookie_lifetime=getenv('OIDC_COOKIE_LIFETIME', '86400'),
|
||||||
cookie_crypt=getenv('OIDC_COOKIE_CRYPT', None),
|
cookie_crypt=getenv('OIDC_COOKIE_CRYPT', None),
|
||||||
private_key_file=getenv('OIDC_SERVICE_USER_PRIVATE_KEY_FILE', '.private-key.json'),
|
private_key_file=getenv('OIDC_SERVICE_USER_PRIVATE_KEY_FILE',
|
||||||
|
'scopes/tests/test-private-key.json'),
|
||||||
|
organization_id=getenv('OIDC_ORGANIZATION_ID', '12346'),
|
||||||
|
project_id=getenv('OIDC_PROJECT_ID', '12347'),
|
||||||
)
|
)
|
||||||
|
|
||||||
oidc_provider_endpoints = dict(
|
oidc_provider_endpoints = dict(
|
||||||
|
|
|
@ -26,7 +26,12 @@ oidc_data = {
|
||||||
"kid": "316766976250797901",
|
"kid": "316766976250797901",
|
||||||
"alg": "RS256",
|
"alg": "RS256",
|
||||||
"n": public_key_n,
|
"n": public_key_n,
|
||||||
"e": "AQAB"}]}
|
"e": "AQAB"}]},
|
||||||
|
'test://oidc/oauth/v2/token': {
|
||||||
|
"access_token": "abcde12345"},
|
||||||
|
'test://oidc/v2/users/human': {
|
||||||
|
"code": 1}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
from scopes.tests.dummy_requests import response_data
|
from scopes.tests.dummy_requests import response_data
|
||||||
|
|
|
@ -9,12 +9,20 @@ def get(url, *args, **kw):
|
||||||
logger.info(f'get: %s - %s - %s', url, args, kw)
|
logger.info(f'get: %s - %s - %s', url, args, kw)
|
||||||
return FakeResponse(response_data[url])
|
return FakeResponse(response_data[url])
|
||||||
|
|
||||||
|
def post(url, *args, **kw):
|
||||||
|
logger.info(f'post: %s - %s - %s', url, args, kw)
|
||||||
|
return FakeResponse(response_data[url])
|
||||||
|
|
||||||
|
|
||||||
class FakeResponse:
|
class FakeResponse:
|
||||||
|
|
||||||
def __init__(self, data):
|
def __init__(self, data):
|
||||||
self.data = data
|
self.data = data
|
||||||
|
|
||||||
|
@property
|
||||||
|
def status_code(self):
|
||||||
|
return 200
|
||||||
|
|
||||||
def json(self):
|
def json(self):
|
||||||
return self.data
|
return self.data
|
||||||
|
|
||||||
|
|
1
scopes/tests/test-private-key.json
Normal file
1
scopes/tests/test-private-key.json
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"type":"serviceaccount","keyId":"314794985486606157","key":"-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA0dC8wcwu6Uefxx/shqsSTk//ATseeCy28RMAEa4NFGj/y8Ju\nOfVUj7pB5+6onjmsBAHXhCJ+fEWWAJdHnbvywrBNNhVx38f8v+90zUP2IzlT1UDp\ncTIYaehnf3+uqwgMcijnYJ6UgaHFMSecxnYD4adnw8J/FEMDgy2N+v5krp989VQ5\nT2kgrkb/l5z8dgLhmmcLKm7YCG1uXXP+g+qzEZ9Uhur5b+czjIalzC/tq2V2JoJB\nooH9w1iaRXRKel7FZPo0YGyQh/0a9Zn5JsXVc3YTHTKh9madr/yQqmk+6siTl/Ou\ntz9mvpY+AfFRaIWikoyB3W9rHd0b6WtQPflEPwIDAQABAoIBAAN64daZC2IlJPpJ\nhkPJjJkt7H3ZvCykGTiwZvzkFSV0hGGdzPQ7JHbp0PQG2lcdf8PlP+zaIZzwDofd\n+nscRe+CuxUdj/D1QTTxxM8uxGNbLQ/JbtXIzezbxPOxa3U8wfAWy5enqbDovPuO\nu6PzCydv/mGZ1T/ByMohNEyocYUP6mupHWwf2hN/lnrL264w8uvNjAw0xDtbtBJN\nX61u6vi/fiY37qKblN3irAePwK4LIhHZZoyJ1HrFYIkFf0Bviuzpw/ASVqbjizPV\nmTxGxghiQacAMvSSe+pcfJ7ip74rCFv7+6pzL+yW8df1lbSM9vS+86SDgY9RCc2E\n3h1/hUECgYEA/WqiWNXey25qCNB6WHo3SU5cZIZVNWzsT1zkwkXOUtEyU0/zEfT+\nEjW/vbxIBgZNV1tX2aXd7Ke5OCoQ1dqLnmDoO5d13xTeaWN3FR8ibTwbaDCwyg5d\njyIXK2k7IwtcpJFgJFGM/6udAdO/bPm1IPEslJXHBqZoGrKb+bTw6N8CgYEA0/RQ\nHtQluQYBtXNzEql0MaxBUxfHkwjL6Yo6dM+EJAomI+cccVy22s+z2aQX5GVQnbzs\nm9BGkJzzn7eGPy3i2LgStqUZ2W7VqfIJNCIDbC7OxBAaszh5/LEgv5pfp1Yr/HIf\nwHZz53rdV8H+oUfMJdlyrRyGOeGIDZCd94nTMKECgYAQOpT9BW1IL+EAgYFkSydh\nPXBzS5sHWdtkVbmcq2XELfuAFF2np73hoqmN2BHwuNSZJJNir9mffzpAW4lKeL16\nPhCBSHjW+Xoo26LTqnPE9RV4Pa4EspjRQsijEhEkdGTRcTHsAYD7Gp1qcYoPy4oK\n+wb02Qau6Vc/ZnLQsgK/lwKBgQDMLSGxUPQ11E95GAnWBF7mKuWSwemC/opQItRF\nClJk1VIAa/W+Tm3nQwYhti0920tZaFEVmAEh9c/KH+S2n+FSm5+LSmgoSNiSqZGs\nIsfhQwXzYQAXfWQlxAukB3X1oNEmkll78Z+dcYIfs8UyYBOMsngBwuSahWOmjZVe\ni+phgQKBgC0ozpbIcNg48M4/Rrev3qJB7XlU74MySsFJdBhlrzmK3+z02bXWbyaJ\nzQLwC6Dorw0PcWAKtcJcbBn6ZAoptcmG6wdQrYk1IC+82TDcNvAFL06y8OXHYLtu\ni5AiE4nK1waoDF/1I66VACyKI6hhISRW3bKaxHhrx5OsGKVurF4R\n-----END RSA PRIVATE KEY-----\n","expirationDate":"9999-12-31T23:59:59Z","userId":"311889729668833101"}
|
|
@ -43,3 +43,7 @@ def test_auth(self, config):
|
||||||
|
|
||||||
def test_user_data(self, config):
|
def test_user_data(self, config):
|
||||||
from scopes.org import user
|
from scopes.org import user
|
||||||
|
u1 = user.User(login='tst9', email='tst9@example.com',
|
||||||
|
firstName='Test', lastName='User')
|
||||||
|
xu1 = user.ExtUser(u1, idPrefix='test.')
|
||||||
|
xu1.create(updateIfExists=True)
|
||||||
|
|
Loading…
Add table
Reference in a new issue