private void AddScopes() { foreach (var sc in Scopes.Get()) { var scope = new Scope <Guid>() { ClaimsRule = sc.ClaimsRule, Description = sc.Description, DisplayName = sc.DisplayName, Emphasize = sc.Emphasize, Enabled = sc.Enabled, IncludeAllClaimsForUser = sc.IncludeAllClaimsForUser, Name = sc.Name, Required = sc.Required, ShowInDiscoveryDocument = sc.ShowInDiscoveryDocument, Type = (int)sc.Type, AllowUnrestrictedIntrospection = sc.AllowUnrestrictedIntrospection, }; scope.ScopeClaims = new List <ScopeClaim <Guid> >(); scope.ScopeSecrets = new List <ScopeSecret <Guid> >(); //Add ScopeClaims foreach (var claim in sc.Claims) { var scopeClaim = new ScopeClaim <Guid>() { AlwaysIncludeInIdToken = claim.AlwaysIncludeInIdToken, Description = claim.Description, Name = claim.Name }; scope.ScopeClaims.Add(scopeClaim); } //AddScopeSecrets foreach (var secret in sc.ScopeSecrets) { var scopeSecret = new ScopeSecret <Guid>() { Description = secret.Description, Expiration = secret.Expiration.HasValue ? (DateTime?)secret.Expiration.Value.DateTime : null, Type = secret.Type, Value = secret.Value }; scope.ScopeSecrets.Add(scopeSecret); } _scopeContext.Scopes.Add(scope); } _scopeContext.SaveChanges(); }
public void GivenApiScopeWithSecrets_ExpectSecretsCorrectlyMapped() { var secret = new ScopeSecret() { Type = Constants.SecretTypes.SharedSecret, Value = Guid.NewGuid().ToString(), Description = Guid.NewGuid().ToString(), Expiration = DateTimeOffset.UtcNow.AddDays(2) }; var scope = new Scope { Type = (int)ScopeType.Resource, ScopeSecrets = new List <ScopeSecret> { secret } }; var scopes = new List <Scope> { scope }; var result = scopes.GetApiResourcesAndApiScopes(); result.apiResources.Should().NotBeEmpty(); result.scopes.Should().NotBeEmpty(); result.apiResources.Should().HaveCount(scopes.Count); result.scopes.Should().HaveCount(scopes.Count); var resource = result.apiResources.Single(x => x.Name == scope.Name); resource.ApiSecrets.Should().NotBeEmpty(); resource.ApiSecrets.Should().HaveCount(scope.ScopeSecrets.Count); var apiSecret = resource.ApiSecrets.First(); apiSecret.Type.Should().BeEquivalentTo(secret.Type); apiSecret.Type.Should().BeEquivalentTo(IdentityServerConstants.SecretTypes.SharedSecret); apiSecret.Value.Should().BeEquivalentTo(secret.Value); apiSecret.Description.Should().BeEquivalentTo(secret.Description); apiSecret.Expiration?.Should().BeExactly(new TimeSpan(secret.Expiration.Value.Ticks)); }