public void FindApiResourceAsync_WhenResourceExists_ExpectResourceAndCollectionsReturned(DbContextOptions <ConfigurationDbContext> options) { var resource = CreateApiTestResource(); using (var context = new ConfigurationDbContext(options, StoreOptions)) { context.ApiResources.Add(resource.ToEntity()); context.SaveChanges(); } ApiResource foundResource; using (var context = new ConfigurationDbContext(options, StoreOptions)) { var store = new ResourceStore(context, FakeLogger <ResourceStore> .Create()); foundResource = store.FindApiResourceAsync(resource.Name).Result; } Assert.NotNull(foundResource); Assert.NotNull(foundResource.UserClaims); Assert.NotEmpty(foundResource.UserClaims); Assert.NotNull(foundResource.ApiSecrets); Assert.NotEmpty(foundResource.ApiSecrets); Assert.NotNull(foundResource.Scopes); Assert.NotEmpty(foundResource.Scopes); Assert.True(foundResource.Scopes.Any(x => x.UserClaims.Any())); }
public async Task FindApiResourceAsync_WhenResourceExists_ExpectResourceAndCollectionsReturned(ISessionFactory sessionFactory) { var resource = CreateApiTestResource(); using (var provider = new ConfigurationSessionProvider(sessionFactory.OpenSession)) { await provider.Session.SaveAsync(_mapper.Map <Entities.ApiResource>(resource)); } ApiResource foundResource; using (var provider = new ConfigurationSessionProvider(sessionFactory.OpenSession)) { var store = new ResourceStore(provider); foundResource = await store.FindApiResourceAsync(resource.Name); } Assert.NotNull(foundResource); Assert.NotNull(foundResource.UserClaims); Assert.NotEmpty(foundResource.UserClaims); Assert.NotNull(foundResource.ApiSecrets); Assert.NotEmpty(foundResource.ApiSecrets); Assert.NotNull(foundResource.Scopes); Assert.NotEmpty(foundResource.Scopes); Assert.Contains(foundResource.Scopes, x => x.UserClaims.Any()); }
public async Task ResourceStore_Api_RemoveGetTest() { Stopwatch stopwatch = new Stopwatch(); var storageContext = Services.BuildServiceProvider().GetService <ResourceStorageContext>(); Assert.IsNotNull(storageContext); var store = new ResourceStore(storageContext, _logger); Assert.IsNotNull(store); string name = Guid.NewGuid().ToString("n"); var resource = CreateApiTestObject(name); Console.WriteLine(JsonConvert.SerializeObject(resource)); stopwatch.Start(); await store.StoreAsync(resource); stopwatch.Stop(); Console.WriteLine($"ResourceStore.StoreAsync({resource.Name})-api: {stopwatch.ElapsedMilliseconds} ms"); stopwatch.Reset(); stopwatch.Start(); var resources = await store.GetAllResourcesAsync(); int count = resources.ApiResources.Count(); stopwatch.Stop(); Console.WriteLine($"ResourceStore.GetAllResourcesAsync().ApiResources.Count: {count} : {stopwatch.ElapsedMilliseconds} ms"); Assert.IsNotNull(resources.ApiResources.FirstOrDefault(f => f.Name == name)); //Remove stopwatch.Reset(); stopwatch.Start(); await store.RemoveApiResourceAsync(resource.Name); stopwatch.Stop(); Console.WriteLine($"ResourceStore.StoreAsync({resource.Name})-api: {stopwatch.ElapsedMilliseconds} ms"); stopwatch.Reset(); stopwatch.Start(); var findResource = await store.FindApiResourceAsync(resource.Name); stopwatch.Stop(); Console.WriteLine($"ResourceStore.FindResourceByIdAsync({resource.Name})-api: {stopwatch.ElapsedMilliseconds} ms"); Assert.IsNull(findResource); }
public async Task ResourceStore_Api_SaveGetTest() { Stopwatch stopwatch = new Stopwatch(); var storageContext = Services.BuildServiceProvider().GetService <ResourceStorageContext>(); Assert.IsNotNull(storageContext); var store = new ResourceStore(storageContext, _logger); Assert.IsNotNull(store); var resource = CreateApiTestObject(); Console.WriteLine(JsonConvert.SerializeObject(resource)); stopwatch.Start(); await store.StoreAsync(resource); stopwatch.Stop(); Console.WriteLine($"ResourceStore.StoreAsync({resource.Name})-api: {stopwatch.ElapsedMilliseconds} ms"); stopwatch.Reset(); stopwatch.Start(); var findResource = await store.FindApiResourceAsync(resource.Name); stopwatch.Stop(); Console.WriteLine($"ResourceStore.FindResourceByIdAsync({resource.Name})-api: {stopwatch.ElapsedMilliseconds} ms"); Assert.AreEqual <string>(resource.Name, findResource.Name); stopwatch.Reset(); stopwatch.Start(); string[] findScopes = new string[] { "api1Scope", Guid.NewGuid().ToString() }; var findScopesResources = await store.FindApiResourcesByScopeAsync(findScopes); stopwatch.Stop(); Console.WriteLine($"ResourceStore.FindApiResourcesByScopeAsync({string.Join(",", findScopes)})-api: {stopwatch.ElapsedMilliseconds} ms"); Assert.AreEqual <string>(resource.Name, findScopesResources.Single()?.Name); stopwatch.Reset(); stopwatch.Start(); var resources = await store.GetAllResourcesAsync(); int count = resources.ApiResources.Count(); stopwatch.Stop(); Console.WriteLine($"ResourceStore.GetAllResourcesAsync().ApiResources.Count: {count} : {stopwatch.ElapsedMilliseconds} ms"); Assert.IsTrue(count > 0); }
public void FindApiResourceAsync_ShoudReturnSavedResource() { var apiResource = A.New <ApiResource>(); using (var session = db.Store.LightweightSession()) { session.Store(apiResource); session.SaveChanges(); } using (var session = db.Store.LightweightSession()) { var store = new ResourceStore(session); var foundresource = store.FindApiResourceAsync(apiResource.Name).Result; Assert.NotNull(foundresource); Assert.Equal(apiResource.Name, foundresource.Name); } }
public async Task Updates_in_database() { var ctxName = Guid.NewGuid().ToString(); var cmdletMock = CmdletMock.CreateMock(); var newResource = new Models.ApiResource { Name = "MyResource", Scopes = new[] { new Models.Scope { Name = "Scope1" } } }; using (var ctx = _dbContextFixture.GetContext(ctxName)) { var controller = new ApiResourceController(ctx, cmdletMock.Object); controller.AddApiResource(newResource, false); } Models.ApiResource setResource; using (var ctx = _dbContextFixture.GetContext(ctxName)) { var store = new ResourceStore(ctx, NullLogger <ResourceStore> .Instance); setResource = await store.FindApiResourceAsync("MyResource"); } setResource.Scopes = new[] { new Models.Scope { Name = "Scope1" }, new Models.Scope { Name = "Scope2" } }; using (var ctx = _dbContextFixture.GetContext(ctxName)) { var controller = new ApiResourceController(ctx, cmdletMock.Object); controller.UpdateApiResource(setResource, "MyOtherResource", false); } using (var ctx = _dbContextFixture.GetContext(ctxName)) { var store = new ResourceStore(ctx, NullLogger <ResourceStore> .Instance); var resource = await store.FindApiResourceAsync("MyOtherResource"); Assert.NotNull(resource); Assert.Equal(2, resource.Scopes.Count); } }
public async Task Adds_to_database() { var cmdletMock = CmdletMock.CreateMock(); var ctxName = Guid.NewGuid().ToString(); var newApiResource = new Models.ApiResource { Name = "MyResource", Scopes = new Models.Scope[] { new Models.Scope { Name = "Scope1" }, new Models.Scope { Name = "Scope2" } } }; using (var ctx = _dbContextFixture.GetContext(ctxName)) { var controller = new ApiResourceController(ctx, cmdletMock.Object); controller.AddApiResource(newApiResource, true); } using (var ctx = _dbContextFixture.GetContext(ctxName)) { var resources = ctx.ApiResources.ToList(); Assert.Single(resources); var store = new ResourceStore(ctx, NullLogger <ResourceStore> .Instance); var resource = await store.FindApiResourceAsync("MyResource"); Assert.NotNull(resource); Assert.Equal(2, resource.Scopes.Count); } cmdletMock.Verify(cmdlet => cmdlet.WriteObject(newApiResource), Times.Exactly(1)); }
public void FindApiResourceAsync_Null_NotExist() { Assert.Null(store.FindApiResourceAsync("DoesNotExist").Result); }