Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 5
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);
 }