public async Task IssuingTokenGeneratesTokenAndIdentityWithScopes(AuthMethod authMethod, params string[] scopes) { CommunicationIdentityClient client = authMethod switch { AuthMethod.ConnectionString => CreateClientWithConnectionString(), AuthMethod.KeyCredential => CreateClientWithAzureKeyCredential(), AuthMethod.TokenCredential => CreateClientWithTokenCredential(), _ => throw new ArgumentOutOfRangeException(nameof(authMethod)), }; Response <CommunicationUserIdentifier> userResponse = await client.CreateUserAsync(); Response <CommunicationUserToken> tokenResponse = await client.IssueTokenAsync(userResponse.Value, scopes : scopes.Select(x => new CommunicationTokenScope(x))); Assert.IsNotNull(tokenResponse.Value); Assert.IsFalse(string.IsNullOrWhiteSpace(tokenResponse.Value.Token)); ValidateScopesIfNotSanitized(); void ValidateScopesIfNotSanitized() { if (Mode != RecordedTestMode.Playback) { JwtTokenParser.JwtPayload payload = JwtTokenParser.DecodeJwtPayload(tokenResponse.Value.Token); CollectionAssert.AreEquivalent(scopes, payload.Scopes); } } }
public async Task IssuingTokenGeneratesTokenAndIdentityWithScopes(params string[] scopes) { CommunicationIdentityClient client = CreateInstrumentedCommunicationIdentityClient(); Response <CommunicationUserIdentifier> userResponse = await client.CreateUserAsync(); Response <CommunicationUserToken> tokenResponse = await client.IssueTokenAsync(userResponse.Value, scopes : scopes.Select(x => new CommunicationTokenScope(x))); Assert.IsNotNull(tokenResponse.Value); Assert.IsFalse(string.IsNullOrWhiteSpace(tokenResponse.Value.Token)); Assert.IsFalse(string.IsNullOrWhiteSpace(tokenResponse.Value.User.Id)); ValidateScopesIfNotSanitized(); void ValidateScopesIfNotSanitized() { if (Mode != RecordedTestMode.Playback) { JwtTokenParser.JwtPayload payload = JwtTokenParser.DecodeJwtPayload(tokenResponse.Value.Token); CollectionAssert.AreEquivalent(scopes, payload.Scopes); } } }