2018-03-28 19:40:42 +00:00
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
import boto3
|
2019-09-01 15:38:33 +00:00
|
|
|
from botocore.exceptions import ClientError
|
|
|
|
from nose.tools import assert_raises
|
2018-04-03 21:08:20 +00:00
|
|
|
|
|
|
|
from moto import mock_cognitoidentity
|
2018-04-03 23:27:30 +00:00
|
|
|
from moto.cognitoidentity.utils import get_random_identity_id
|
2019-12-17 02:05:29 +00:00
|
|
|
from moto.core import ACCOUNT_ID
|
2018-04-03 18:38:59 +00:00
|
|
|
|
2019-12-17 02:25:20 +00:00
|
|
|
|
2018-04-03 18:38:59 +00:00
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_create_identity_pool():
|
2019-10-31 15:44:26 +00:00
|
|
|
conn = boto3.client("cognito-identity", "us-west-2")
|
2018-04-03 18:38:59 +00:00
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
result = conn.create_identity_pool(
|
|
|
|
IdentityPoolName="TestPool",
|
2018-04-03 21:08:20 +00:00
|
|
|
AllowUnauthenticatedIdentities=False,
|
2019-10-31 15:44:26 +00:00
|
|
|
SupportedLoginProviders={"graph.facebook.com": "123456789012345"},
|
|
|
|
DeveloperProviderName="devname",
|
2019-12-17 02:25:20 +00:00
|
|
|
OpenIdConnectProviderARNs=[
|
|
|
|
"arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)
|
|
|
|
],
|
2018-04-03 18:38:59 +00:00
|
|
|
CognitoIdentityProviders=[
|
|
|
|
{
|
2019-10-31 15:44:26 +00:00
|
|
|
"ProviderName": "testprovider",
|
|
|
|
"ClientId": "CLIENT12345",
|
|
|
|
"ServerSideTokenCheck": True,
|
|
|
|
}
|
2018-04-03 18:38:59 +00:00
|
|
|
],
|
2019-12-16 00:22:26 +00:00
|
|
|
SamlProviderARNs=["arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)],
|
2019-10-31 15:44:26 +00:00
|
|
|
)
|
|
|
|
assert result["IdentityPoolId"] != ""
|
2018-04-03 18:38:59 +00:00
|
|
|
|
2018-04-03 21:08:20 +00:00
|
|
|
|
2019-09-01 15:38:33 +00:00
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_describe_identity_pool():
|
2019-10-31 15:44:26 +00:00
|
|
|
conn = boto3.client("cognito-identity", "us-west-2")
|
2019-09-01 15:38:33 +00:00
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
res = conn.create_identity_pool(
|
|
|
|
IdentityPoolName="TestPool",
|
2019-09-01 15:38:33 +00:00
|
|
|
AllowUnauthenticatedIdentities=False,
|
2019-10-31 15:44:26 +00:00
|
|
|
SupportedLoginProviders={"graph.facebook.com": "123456789012345"},
|
|
|
|
DeveloperProviderName="devname",
|
2019-12-17 02:25:20 +00:00
|
|
|
OpenIdConnectProviderARNs=[
|
|
|
|
"arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)
|
|
|
|
],
|
2019-09-01 15:38:33 +00:00
|
|
|
CognitoIdentityProviders=[
|
|
|
|
{
|
2019-10-31 15:44:26 +00:00
|
|
|
"ProviderName": "testprovider",
|
|
|
|
"ClientId": "CLIENT12345",
|
|
|
|
"ServerSideTokenCheck": True,
|
|
|
|
}
|
2019-09-01 15:38:33 +00:00
|
|
|
],
|
2019-12-16 00:22:26 +00:00
|
|
|
SamlProviderARNs=["arn:aws:rds:eu-west-2:{}:db:mysql-db".format(ACCOUNT_ID)],
|
2019-10-31 15:44:26 +00:00
|
|
|
)
|
2019-09-01 15:38:33 +00:00
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
result = conn.describe_identity_pool(IdentityPoolId=res["IdentityPoolId"])
|
2019-09-01 15:38:33 +00:00
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
assert result["IdentityPoolId"] == res["IdentityPoolId"]
|
|
|
|
assert (
|
|
|
|
result["AllowUnauthenticatedIdentities"]
|
|
|
|
== res["AllowUnauthenticatedIdentities"]
|
|
|
|
)
|
|
|
|
assert result["SupportedLoginProviders"] == res["SupportedLoginProviders"]
|
|
|
|
assert result["DeveloperProviderName"] == res["DeveloperProviderName"]
|
|
|
|
assert result["OpenIdConnectProviderARNs"] == res["OpenIdConnectProviderARNs"]
|
|
|
|
assert result["CognitoIdentityProviders"] == res["CognitoIdentityProviders"]
|
|
|
|
assert result["SamlProviderARNs"] == res["SamlProviderARNs"]
|
2019-09-01 15:38:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_describe_identity_pool_with_invalid_id_raises_error():
|
2019-10-31 15:44:26 +00:00
|
|
|
conn = boto3.client("cognito-identity", "us-west-2")
|
2019-09-01 15:38:33 +00:00
|
|
|
|
|
|
|
with assert_raises(ClientError) as cm:
|
2019-10-31 15:44:26 +00:00
|
|
|
conn.describe_identity_pool(IdentityPoolId="us-west-2_non-existent")
|
2019-09-01 15:38:33 +00:00
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
cm.exception.operation_name.should.equal("DescribeIdentityPool")
|
|
|
|
cm.exception.response["Error"]["Code"].should.equal("ResourceNotFoundException")
|
|
|
|
cm.exception.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
|
2019-09-01 15:38:33 +00:00
|
|
|
|
|
|
|
|
2018-04-03 23:27:30 +00:00
|
|
|
# testing a helper function
|
|
|
|
def test_get_random_identity_id():
|
2019-10-31 15:44:26 +00:00
|
|
|
assert len(get_random_identity_id("us-west-2")) > 0
|
|
|
|
assert len(get_random_identity_id("us-west-2").split(":")[1]) == 19
|
2018-04-03 23:27:30 +00:00
|
|
|
|
|
|
|
|
2018-04-03 18:38:59 +00:00
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_get_id():
|
2018-04-03 23:27:30 +00:00
|
|
|
# These two do NOT work in server mode. They just don't return the data from the model.
|
2019-10-31 15:44:26 +00:00
|
|
|
conn = boto3.client("cognito-identity", "us-west-2")
|
|
|
|
result = conn.get_id(
|
|
|
|
AccountId="someaccount",
|
|
|
|
IdentityPoolId="us-west-2:12345",
|
|
|
|
Logins={"someurl": "12345"},
|
|
|
|
)
|
2018-04-03 21:08:20 +00:00
|
|
|
print(result)
|
2019-10-31 15:44:26 +00:00
|
|
|
assert (
|
|
|
|
result.get("IdentityId", "").startswith("us-west-2")
|
|
|
|
or result.get("ResponseMetadata").get("HTTPStatusCode") == 200
|
|
|
|
)
|
2018-04-03 18:38:59 +00:00
|
|
|
|
2018-04-03 21:08:20 +00:00
|
|
|
|
2018-04-03 18:38:59 +00:00
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_get_credentials_for_identity():
|
2018-04-04 07:28:39 +00:00
|
|
|
# These two do NOT work in server mode. They just don't return the data from the model.
|
2019-10-31 15:44:26 +00:00
|
|
|
conn = boto3.client("cognito-identity", "us-west-2")
|
|
|
|
result = conn.get_credentials_for_identity(IdentityId="12345")
|
2018-04-03 23:27:30 +00:00
|
|
|
|
2019-10-31 15:44:26 +00:00
|
|
|
assert (
|
|
|
|
result.get("Expiration", 0) > 0
|
|
|
|
or result.get("ResponseMetadata").get("HTTPStatusCode") == 200
|
|
|
|
)
|
|
|
|
assert (
|
|
|
|
result.get("IdentityId") == "12345"
|
|
|
|
or result.get("ResponseMetadata").get("HTTPStatusCode") == 200
|
|
|
|
)
|
2018-04-03 18:38:59 +00:00
|
|
|
|
2018-04-03 21:08:20 +00:00
|
|
|
|
2018-04-03 18:38:59 +00:00
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_get_open_id_token_for_developer_identity():
|
2019-10-31 15:44:26 +00:00
|
|
|
conn = boto3.client("cognito-identity", "us-west-2")
|
2018-04-03 18:38:59 +00:00
|
|
|
result = conn.get_open_id_token_for_developer_identity(
|
2019-10-31 15:44:26 +00:00
|
|
|
IdentityPoolId="us-west-2:12345",
|
|
|
|
IdentityId="12345",
|
|
|
|
Logins={"someurl": "12345"},
|
|
|
|
TokenDuration=123,
|
2018-04-03 18:38:59 +00:00
|
|
|
)
|
2019-10-31 15:44:26 +00:00
|
|
|
assert len(result["Token"]) > 0
|
|
|
|
assert result["IdentityId"] == "12345"
|
2018-10-09 17:28:15 +00:00
|
|
|
|
2019-09-01 15:38:33 +00:00
|
|
|
|
2018-10-09 17:28:15 +00:00
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_get_open_id_token_for_developer_identity_when_no_explicit_identity_id():
|
2019-10-31 15:44:26 +00:00
|
|
|
conn = boto3.client("cognito-identity", "us-west-2")
|
2018-10-09 17:28:15 +00:00
|
|
|
result = conn.get_open_id_token_for_developer_identity(
|
2019-10-31 15:44:26 +00:00
|
|
|
IdentityPoolId="us-west-2:12345", Logins={"someurl": "12345"}, TokenDuration=123
|
2018-10-09 17:28:15 +00:00
|
|
|
)
|
2019-10-31 15:44:26 +00:00
|
|
|
assert len(result["Token"]) > 0
|
|
|
|
assert len(result["IdentityId"]) > 0
|
2019-07-16 03:20:31 +00:00
|
|
|
|
2019-09-01 15:38:33 +00:00
|
|
|
|
2019-07-16 03:20:31 +00:00
|
|
|
@mock_cognitoidentity
|
|
|
|
def test_get_open_id_token():
|
2019-10-31 15:44:26 +00:00
|
|
|
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"
|