Esempio n. 1
0
        public async Task OnPostAsync_AllRemoved()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync_AllRemoved)}";
            var options      = new DbContextOptionsBuilder <IdentityServerDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            SecretsModel  secrets;
            IActionResult post;
            var           apiResourceId = Random.Next();
            var           apiResource   = new ApiResource
            {
                Id      = apiResourceId,
                Secrets = new List <ApiSecret>
                {
                    new ApiSecret {
                        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))
            {
                secrets = new SecretsModel(context)
                {
                    ApiResource = new ApiResource {
                        Id = apiResourceId
                    }
                };
                post = await secrets.OnPostAsync().ConfigureAwait(false);
            }

            // Assert
            using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object))
            {
                apiResource = await context.ApiResources
                              .Include(x => x.Secrets)
                              .SingleOrDefaultAsync(x => x.Id.Equals(apiResourceId))
                              .ConfigureAwait(false);

                Assert.Empty(apiResource.Secrets);
            }

            var result = Assert.IsType <RedirectToPageResult>(post);

            Assert.Equal("../Details/Secrets", result.PageName);
            Assert.Collection(result.RouteValues, routeValue =>
            {
                var(key, value) = routeValue;
                Assert.Equal(nameof(ApiResource.Id), key);
                Assert.Equal(secrets.ApiResource.Id, value);
            });
        }
Esempio n. 2
0
        public async Task OnPostAsync_InvalidModel()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync)}";
            var options      = new DbContextOptionsBuilder <OidcDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            IActionResult post;
            var           client = new Client {
                Id = Random.Next()
            };

            using (var context = new OidcDbContext(options))
            {
                context.Add(client);
                await context.SaveChangesAsync().ConfigureAwait(false);
            }

            // Act
            using (var context = new OidcDbContext(options))
            {
                var secrets = new SecretsModel(context)
                {
                    Client = new Client {
                        Id = Random.Next()
                    }
                };
                post = await secrets.OnPostAsync().ConfigureAwait(false);
            }

            // Assert
            Assert.IsType <PageResult>(post);
        }
Esempio n. 3
0
        public async Task OnPostAsync_InvalidModel()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync)}";
            var options      = new DbContextOptionsBuilder <IdentityServerDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            IActionResult post;
            var           apiResource = new ApiResource {
                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))
            {
                var secrets = new SecretsModel(context)
                {
                    ApiResource = new ApiResource {
                        Id = Random.Next()
                    }
                };
                post = await secrets.OnPostAsync().ConfigureAwait(false);
            }

            // Assert
            Assert.IsType <PageResult>(post);
        }
Esempio n. 4
0
        public async Task OnPostAsync_AllRemoved()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnPostAsync_AllRemoved)}";
            var options      = new DbContextOptionsBuilder <OidcDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            SecretsModel  secrets;
            IActionResult post;
            var           client = new Client
            {
                Id            = Random.Next(),
                ClientSecrets = new List <ClientSecret>
                {
                    new ClientSecret {
                        Id = Random.Next()
                    }
                }
            };

            using (var context = new OidcDbContext(options))
            {
                context.Add(client);
                await context.SaveChangesAsync().ConfigureAwait(false);
            }

            // Act
            using (var context = new OidcDbContext(options))
            {
                secrets = new SecretsModel(context)
                {
                    Client = new Client {
                        Id = client.Id
                    }
                };
                post = await secrets.OnPostAsync().ConfigureAwait(false);
            }

            // Assert
            using (var context = new OidcDbContext(options))
            {
                client = await context.Clients
                         .Include(x => x.ClientSecrets)
                         .SingleOrDefaultAsync(x => x.Id.Equals(client.Id))
                         .ConfigureAwait(false);

                Assert.Empty(client.ClientSecrets);
            }

            var result = Assert.IsType <RedirectToPageResult>(post);

            Assert.Equal("../Details/Secrets", result.PageName);
            Assert.Collection(result.RouteValues, routeValue =>
            {
                var(key, value) = routeValue;
                Assert.Equal(nameof(Client.Id), key);
                Assert.Equal(secrets.Client.Id, value);
            });
        }
Esempio n. 5
0
        public IActionResult Secrets(int id)
        {
            var client = _configurationDbContext.Clients
                         .Include(x => x.ClientSecrets)
                         .FirstOrDefault(x => x.Id == id);

            return(View(SecretsModel.FromEntity(client)));
        }
        public IActionResult Secrets(int id)
        {
            var api = _configurationDbContext.ApiResources
                      .Include(x => x.Secrets)
                      .FirstOrDefault(x => x.Id == id);

            return(View(SecretsModel.FromEntity(api)));
        }
Esempio n. 7
0
 public SecretsModel LoadSecrets()
 {
     if (File.Exists(SecretsFile))
     {
         return(LoadedSecrets = JsonConvert.DeserializeObject <SecretsModel>(File.ReadAllText(SecretsFile)));
     }
     else
     {
         throw new FileNotFoundException("Unable to locate the Secrtes File!");
     }
 }
Esempio n. 8
0
        public async Task OnGetAsync_InvalidId()
        {
            // Arrange
            var model = new SecretsModel(new Mock <IConfigurationDbContext>().Object);

            // Act

            var get = await model.OnGetAsync(0).ConfigureAwait(false);

            // Assert
            Assert.Null(model.ApiResource);
            Assert.Null(model.Secrets);
            Assert.IsType <NotFoundResult>(get);
        }
Esempio n. 9
0
        public async Task OnPostAsync_InvalidId()
        {
            // Arrange
            var context = new Mock <IConfigurationDbContext>();
            var secrets = new SecretsModel(context.Object)
            {
                Client = new Client {
                    Id = 0
                }
            };

            // Act
            var post = await secrets.OnPostAsync().ConfigureAwait(false);

            // Assert
            context.Verify(x => x.SaveChangesAsync(), Times.Never);
            Assert.IsType <PageResult>(post);
        }
Esempio n. 10
0
        public IActionResult Secrets(SecretsModel model)
        {
            var client = _configurationDbContext.Clients
                         .Include(x => x.ClientSecrets)
                         .FirstOrDefault(x => x.Id == model.Client.Id);

            var secret = new ClientSecret
            {
                Created = DateTime.Now,
            };

            model.HashSecret();
            model.UpdateEntity(secret);
            client.ClientSecrets.Add(secret);

            _configurationDbContext.SaveChanges();

            return(RedirectToAction(nameof(Secrets), new { id = client.Id }));
        }
        public IActionResult Secrets(SecretsModel model)
        {
            var api = _configurationDbContext.ApiResources
                      .Include(x => x.Secrets)
                      .FirstOrDefault(x => x.Id == model.ApiResourceId);

            var secret = new ApiSecret
            {
                Created = DateTime.UtcNow,
            };

            model.HashSecret();
            model.UpdateEntity(secret);
            api.Secrets.Add(secret);

            _configurationDbContext.SaveChanges();

            return(RedirectToAction(nameof(Secrets), new { id = api.Id }));
        }
Esempio n. 12
0
        public async Task OnGetAsync()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnGetAsync)}";
            var options      = new DbContextOptionsBuilder <OidcDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            var apiResource = new ApiResource
            {
                Id      = Random.Next(),
                Secrets = new List <ApiSecret>
                {
                    new ApiSecret(),
                    new ApiSecret(),
                    new ApiSecret()
                }
            };
            SecretsModel  model;
            IActionResult get;

            using (var context = new OidcDbContext(options))
            {
                context.Add(apiResource);
                await context.SaveChangesAsync().ConfigureAwait(false);
            }

            // Act
            using (var context = new OidcDbContext(options))
            {
                model = new SecretsModel(context);
                get   = await model.OnGetAsync(apiResource.Id).ConfigureAwait(false);
            }

            // Assert
            Assert.NotNull(model.ApiResource);
            Assert.Equal(apiResource.Id, model.ApiResource.Id);
            var secrets = Assert.IsAssignableFrom <IEnumerable <ApiSecret> >(model.Secrets);

            Assert.Equal(apiResource.Secrets.Count, secrets.Count());
            Assert.IsType <PageResult>(get);
        }
Esempio n. 13
0
        public async Task OnGetAsync()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnGetAsync)}";
            var options      = new DbContextOptionsBuilder <IdentityServerDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            var client = new Client
            {
                Id            = Random.Next(),
                ClientSecrets = new List <ClientSecret>
                {
                    new ClientSecret(),
                    new ClientSecret(),
                    new ClientSecret()
                }
            };
            SecretsModel  model;
            IActionResult get;

            using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object))
            {
                context.Add(client);
                await context.SaveChangesAsync().ConfigureAwait(false);
            }

            // Act
            using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object))
            {
                model = new SecretsModel(context);
                get   = await model.OnGetAsync(client.Id).ConfigureAwait(false);
            }

            // Assert
            Assert.NotNull(model.Client);
            Assert.Equal(client.Id, model.Client.Id);
            var secrets = Assert.IsAssignableFrom <IEnumerable <ClientSecret> >(model.Secrets);

            Assert.Equal(client.ClientSecrets.Count, secrets.Count());
            Assert.IsType <PageResult>(get);
        }
Esempio n. 14
0
        public async Task OnGetAsync_InvalidModel()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnGetAsync_InvalidModel)}";
            var options      = new DbContextOptionsBuilder <OidcDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            SecretsModel  model;
            IActionResult get;

            // Act
            using (var context = new OidcDbContext(options))
            {
                model = new SecretsModel(context);
                get   = await model.OnGetAsync(Random.Next()).ConfigureAwait(false);
            }

            // Assert
            Assert.Null(model.ApiResource);
            Assert.Null(model.Secrets);
            Assert.IsType <NotFoundResult>(get);
        }
Esempio n. 15
0
        public async Task OnGetAsync_InvalidModel()
        {
            // Arrange
            var databaseName = $"{DatabaseNamePrefix}.{nameof(OnGetAsync_InvalidModel)}";
            var options      = new DbContextOptionsBuilder <IdentityServerDbContext>()
                               .UseInMemoryDatabase(databaseName)
                               .Options;
            SecretsModel  model;
            IActionResult get;

            // Act
            using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object))
            {
                model = new SecretsModel(context);
                get   = await model.OnGetAsync(Random.Next()).ConfigureAwait(false);
            }

            // Assert
            Assert.Null(model.Client);
            Assert.Null(model.Secrets);
            Assert.IsType <NotFoundResult>(get);
        }
Esempio n. 16
0
 public SecretsProvider()
 {
     secrets = JsonSerializer.Deserialize <SecretsModel>(File.ReadAllText($@"{Environment.CurrentDirectory}\secrets.json"));
 }
Esempio n. 17
0
        public async Task OnPostAsync()
        {
            // Arrange
            const string secret1OriginalValue = "Original Value";
            const string secret1EditedValue   = "Edited Value";
            const string newSecretValue       = "New Value";
            var          databaseName         = $"{DatabaseNamePrefix}.{nameof(OnPostAsync)}";
            var          options = new DbContextOptionsBuilder <OidcDbContext>()
                                   .UseInMemoryDatabase(databaseName)
                                   .Options;
            SecretsModel  secrets;
            IActionResult post;
            var           secret1 = new ClientSecret
            {
                Id    = Random.Next(),
                Value = secret1OriginalValue
            };
            var secret2 = new ClientSecret {
                Id = Random.Next()
            };
            var client = new Client
            {
                Id            = Random.Next(),
                ClientSecrets = new List <ClientSecret>
                {
                    secret1,
                    secret2
                }
            };

            using (var context = new OidcDbContext(options))
            {
                context.Add(client);
                await context.SaveChangesAsync().ConfigureAwait(false);
            }

            // Act
            using (var context = new OidcDbContext(options))
            {
                secrets = new SecretsModel(context)
                {
                    Client = new Client
                    {
                        Id            = client.Id,
                        ClientSecrets = new List <ClientSecret>
                        {
                            new ClientSecret
                            {
                                Id    = secret1.Id,
                                Value = secret1EditedValue
                            },
                            new ClientSecret {
                                Value = newSecretValue
                            }
                        }
                    }
                };
                post = await secrets.OnPostAsync().ConfigureAwait(false);
            }

            // Assert
            using (var context = new OidcDbContext(options))
            {
                client = await context.Clients
                         .Include(x => x.ClientSecrets)
                         .SingleOrDefaultAsync(x => x.Id.Equals(client.Id))
                         .ConfigureAwait(false);

                secret1 = client.ClientSecrets.SingleOrDefault(x => x.Id.Equals(secret1.Id));
                secret2 = client.ClientSecrets.SingleOrDefault(x => x.Id.Equals(secret2.Id));
                var newSecret = client.ClientSecrets.SingleOrDefault(x => x.Value.Equals(newSecretValue));

                Assert.NotNull(secret1);
                Assert.Equal(secret1EditedValue, secret1.Value);
                Assert.Null(secret2);
                Assert.NotNull(newSecret);
            }

            var result = Assert.IsType <RedirectToPageResult>(post);

            Assert.Equal("../Details/Secrets", result.PageName);
            Assert.Collection(result.RouteValues, routeValue =>
            {
                var(key, value) = routeValue;
                Assert.Equal(nameof(Client.Id), key);
                Assert.Equal(secrets.Client.Id, value);
            });
        }
Esempio n. 18
0
        public async Task OnPostAsync()
        {
            // Arrange
            const string secret1OriginalValue = "Original Value";
            const string secret1EditedValue   = "Edited Value";
            const string newSecretValue       = "New Value";
            var          databaseName         = $"{DatabaseNamePrefix}.{nameof(OnPostAsync)}";
            var          options = new DbContextOptionsBuilder <IdentityServerDbContext>()
                                   .UseInMemoryDatabase(databaseName)
                                   .Options;
            SecretsModel  secrets;
            IActionResult post;
            var           secret1 = new ApiSecret
            {
                Id    = Random.Next(),
                Value = secret1OriginalValue
            };
            var secret2 = new ApiSecret {
                Id = Random.Next()
            };
            var apiResourceId = Random.Next();
            var apiResource   = new ApiResource
            {
                Id      = apiResourceId,
                Secrets = new List <ApiSecret>
                {
                    secret1,
                    secret2
                }
            };

            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))
            {
                secrets = new SecretsModel(context)
                {
                    ApiResource = new ApiResource
                    {
                        Id      = apiResourceId,
                        Secrets = new List <ApiSecret>
                        {
                            new ApiSecret
                            {
                                Id    = secret1.Id,
                                Value = secret1EditedValue
                            },
                            new ApiSecret {
                                Value = newSecretValue
                            }
                        }
                    }
                };
                post = await secrets.OnPostAsync().ConfigureAwait(false);
            }

            // Assert
            using (var context = new IdentityServerDbContext(options, _configurationStoreOptions.Object, _operationalStoreOptions.Object))
            {
                apiResource = await context.ApiResources
                              .Include(x => x.Secrets)
                              .SingleOrDefaultAsync(x => x.Id.Equals(apiResourceId))
                              .ConfigureAwait(false);

                secret1 = apiResource.Secrets.SingleOrDefault(x => x.Id.Equals(secret1.Id));
                secret2 = apiResource.Secrets.SingleOrDefault(x => x.Id.Equals(secret2.Id));
                var newSecret = apiResource.Secrets.SingleOrDefault(x => x.Value.Equals(newSecretValue));

                Assert.NotNull(secret1);
                Assert.Equal(secret1EditedValue, secret1.Value);
                Assert.Null(secret2);
                Assert.NotNull(newSecret);
            }

            var result = Assert.IsType <RedirectToPageResult>(post);

            Assert.Equal("../Details/Secrets", result.PageName);
            Assert.Collection(result.RouteValues, routeValue =>
            {
                var(key, value) = routeValue;
                Assert.Equal(nameof(ApiResource.Id), key);
                Assert.Equal(secrets.ApiResource.Id, value);
            });
        }