public async Task OnPostAsync_InvalidModel() { // Arrange var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync)}"; var options = new DbContextOptionsBuilder <OidcDbContext>() .UseInMemoryDatabase(databaseName) .Options; IActionResult post; var apiResource = new ApiResource { Id = Random.Next() }; using (var context = new OidcDbContext(options)) { context.Add(apiResource); await context.SaveChangesAsync().ConfigureAwait(false); } // Act using (var context = new OidcDbContext(options)) { var claims = new ClaimTypesModel(context) { ApiResource = new ApiResource { Id = Random.Next() } }; post = await claims.OnPostAsync().ConfigureAwait(false); } // Assert Assert.IsType <PageResult>(post); }
public async Task OnPostAsync_AllRemoved() { // Arrange var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync_AllRemoved)}"; var options = new DbContextOptionsBuilder <IdentityServerDbContext>() .UseInMemoryDatabase(databaseName) .Options; ClaimTypesModel claims; IActionResult post; var apiResourceId = Random.Next(); var apiResource = new ApiResource { Id = apiResourceId, UserClaims = new List <ApiResourceClaim> { new ApiResourceClaim { Id = Random.Next() } } }; using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { context.Add(apiResource); await context.SaveChangesAsync().ConfigureAwait(false); } // Act using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { claims = new ClaimTypesModel(context) { ApiResource = new ApiResource { Id = apiResourceId } }; post = await claims.OnPostAsync().ConfigureAwait(false); } // Assert using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { apiResource = await context.ApiResources .Include(x => x.UserClaims) .SingleOrDefaultAsync(x => x.Id.Equals(apiResourceId)) .ConfigureAwait(false); Assert.Empty(apiResource.UserClaims); } var result = Assert.IsType <RedirectToPageResult>(post); Assert.Equal("../Details/ClaimTypes", result.PageName); Assert.Collection(result.RouteValues, routeValue => { var(key, value) = routeValue; Assert.Equal(nameof(ApiResource.Id), key); Assert.Equal(claims.ApiResource.Id, value); }); }
public async Task OnPostAsync_InvalidModel() { // Arrange var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync)}"; var options = new DbContextOptionsBuilder <IdentityServerDbContext>() .UseInMemoryDatabase(databaseName) .Options; IActionResult post; var identityResource = new IdentityResource { Id = Random.Next() }; using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { context.Add(identityResource); await context.SaveChangesAsync().ConfigureAwait(false); } // Act using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { var claims = new ClaimTypesModel(context) { IdentityResource = new IdentityResource { Id = Random.Next() } }; post = await claims.OnPostAsync().ConfigureAwait(false); } // Assert Assert.IsType <PageResult>(post); }
public async Task OnGetAsync_InvalidId() { // Arrange var model = new ClaimTypesModel(new Mock <IConfigurationDbContext>().Object); // Act var get = await model.OnGetAsync(0).ConfigureAwait(false); // Assert Assert.Null(model.IdentityResource); Assert.Null(model.ClaimTypes); Assert.IsType <NotFoundResult>(get); }
public async Task OnPostAsync_InvalidId() { // Arrange var context = new Mock <IConfigurationDbContext>(); var claims = new ClaimTypesModel(context.Object) { ApiResource = new ApiResource { Id = 0 } }; // Act var post = await claims.OnPostAsync().ConfigureAwait(false); // Assert context.Verify(x => x.SaveChangesAsync(), Times.Never); Assert.IsType <PageResult>(post); }
public async Task OnGetAsync() { // Arrange var databaseName = $"{DatabaseNamePrefix}.{nameof(OnGetAsync)}"; var options = new DbContextOptionsBuilder <IdentityServerDbContext>() .UseInMemoryDatabase(databaseName) .Options; var identityResource = new IdentityResource { Id = Random.Next(), UserClaims = new List <IdentityClaim> { new IdentityClaim(), new IdentityClaim(), new IdentityClaim() } }; ClaimTypesModel model; IActionResult get; using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { context.Add(identityResource); await context.SaveChangesAsync().ConfigureAwait(false); } // Act using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { model = new ClaimTypesModel(context); get = await model.OnGetAsync(identityResource.Id).ConfigureAwait(false); } // Assert Assert.NotNull(model.IdentityResource); Assert.Equal(identityResource.Id, model.IdentityResource.Id); var claimTypes = Assert.IsAssignableFrom <IEnumerable <IdentityClaim> >(model.ClaimTypes); Assert.Equal(identityResource.UserClaims.Count, claimTypes.Count()); Assert.IsType <PageResult>(get); }
public async Task OnGetAsync_InvalidModel() { // Arrange var databaseName = $"{DatabaseNamePrefix}.{nameof(OnGetAsync_InvalidModel)}"; var options = new DbContextOptionsBuilder <IdentityServerDbContext>() .UseInMemoryDatabase(databaseName) .Options; ClaimTypesModel model; IActionResult get; // Act using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object)) { model = new ClaimTypesModel(context); get = await model.OnGetAsync(Random.Next()).ConfigureAwait(false); } // Assert Assert.Null(model.IdentityResource); Assert.Null(model.ClaimTypes); Assert.IsType <NotFoundResult>(get); }
public async Task OnPostAsync() { // Arrange const string claim1OriginalType = "Original Type"; const string claim1EditedType = "Edited Type"; const string newClaimType = "New Type"; var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync)}"; var options = new DbContextOptionsBuilder <OidcDbContext>() .UseInMemoryDatabase(databaseName) .Options; ClaimTypesModel claims; IActionResult post; var claim1 = new ApiResourceClaim { Id = Random.Next(), Type = claim1OriginalType }; var claim2 = new ApiResourceClaim { Id = Random.Next() }; var apiResource = new ApiResource { Id = Random.Next(), UserClaims = new List <ApiResourceClaim> { claim1, claim2 } }; using (var context = new OidcDbContext(options)) { context.Add(apiResource); await context.SaveChangesAsync().ConfigureAwait(false); } // Act using (var context = new OidcDbContext(options)) { claims = new ClaimTypesModel(context) { ApiResource = new ApiResource { Id = apiResource.Id, UserClaims = new List <ApiResourceClaim> { new ApiResourceClaim { Id = claim1.Id, Type = claim1EditedType }, new ApiResourceClaim { Type = newClaimType } } } }; post = await claims.OnPostAsync().ConfigureAwait(false); } // Assert using (var context = new OidcDbContext(options)) { apiResource = await context.ApiResources .Include(x => x.UserClaims) .SingleOrDefaultAsync(x => x.Id.Equals(apiResource.Id)) .ConfigureAwait(false); claim1 = apiResource.UserClaims.SingleOrDefault(x => x.Id.Equals(claim1.Id)); claim2 = apiResource.UserClaims.SingleOrDefault(x => x.Id.Equals(claim2.Id)); var newClaim = apiResource.UserClaims.SingleOrDefault(x => x.Type.Equals(newClaimType)); Assert.NotNull(claim1); Assert.Equal(claim1EditedType, claim1.Type); Assert.Null(claim2); Assert.NotNull(newClaim); } var result = Assert.IsType <RedirectToPageResult>(post); Assert.Equal("../Details/ClaimTypes", result.PageName); Assert.Collection(result.RouteValues, routeValue => { var(key, value) = routeValue; Assert.Equal(nameof(ApiResource.Id), key); Assert.Equal(claims.ApiResource.Id, value); }); }