Implement get_open_id_token

Introduce the CognitoIdentity's GetOpenIDToken endpoint to retrieve a
JWT tuple from Cognito's Identity Pool for a given IdentityId.
This commit is contained in:
Carlos Aguado 2019-07-16 13:20:31 +10:00
parent e4ed14b131
commit 7c17fcd21d
4 changed files with 32 additions and 6 deletions

View File

@ -815,16 +815,16 @@
- [ ] update_user_profile - [ ] update_user_profile
## cognito-identity - 0% implemented ## cognito-identity - 0% implemented
- [ ] create_identity_pool - [X] create_identity_pool
- [ ] delete_identities - [ ] delete_identities
- [ ] delete_identity_pool - [ ] delete_identity_pool
- [ ] describe_identity - [ ] describe_identity
- [ ] describe_identity_pool - [ ] describe_identity_pool
- [ ] get_credentials_for_identity - [X] get_credentials_for_identity
- [ ] get_id - [X] get_id
- [ ] get_identity_pool_roles - [ ] get_identity_pool_roles
- [ ] get_open_id_token - [X] get_open_id_token
- [ ] get_open_id_token_for_developer_identity - [X] get_open_id_token_for_developer_identity
- [ ] list_identities - [ ] list_identities
- [ ] list_identity_pools - [ ] list_identity_pools
- [ ] lookup_developer_identity - [ ] lookup_developer_identity

View File

@ -95,6 +95,15 @@ class CognitoIdentityBackend(BaseBackend):
}) })
return response return response
def get_open_id_token(self, identity_id):
response = json.dumps(
{
"IdentityId": identity_id,
"Token": get_random_identity_id(self.region)
}
)
return response
cognitoidentity_backends = {} cognitoidentity_backends = {}
for region in boto.cognito.identity.regions(): for region in boto.cognito.identity.regions():

View File

@ -35,3 +35,8 @@ class CognitoIdentityResponse(BaseResponse):
return cognitoidentity_backends[self.region].get_open_id_token_for_developer_identity( return cognitoidentity_backends[self.region].get_open_id_token_for_developer_identity(
self._get_param('IdentityId') or get_random_identity_id(self.region) self._get_param('IdentityId') or get_random_identity_id(self.region)
) )
def get_open_id_token(self):
return cognitoidentity_backends[self.region].get_open_id_token(
self._get_param("IdentityId") or get_random_identity_id(self.region)
)

View File

@ -68,7 +68,7 @@ def test_get_open_id_token_for_developer_identity():
}, },
TokenDuration=123 TokenDuration=123
) )
assert len(result['Token']) assert len(result['Token']) > 0
assert result['IdentityId'] == '12345' assert result['IdentityId'] == '12345'
@mock_cognitoidentity @mock_cognitoidentity
@ -83,3 +83,15 @@ def test_get_open_id_token_for_developer_identity_when_no_explicit_identity_id()
) )
assert len(result['Token']) > 0 assert len(result['Token']) > 0
assert len(result['IdentityId']) > 0 assert len(result['IdentityId']) > 0
@mock_cognitoidentity
def test_get_open_id_token():
conn = boto3.client('cognito-identity', 'us-west-2')
result = conn.get_open_id_token(
IdentityId='12345',
Logins={
'someurl': '12345'
}
)
assert len(result['Token']) > 0
assert result['IdentityId'] == '12345'