Ejemplo n.º 1
0
        public void AddSecurableItemByItemId_Successful()
        {
            //Arrange
            var existingClient       = _existingClients.First(c => c.Id == FabricSampleAppClientId);
            var innerSecurable2      = existingClient.TopLevelSecurableItem.SecurableItems.First(s => s.Name == "inner-securable-2");
            var securableItemsModule = CreateBrowser(new Claim(Claims.ClientId, existingClient.Id),
                                                     new Claim(Claims.Scope, Scopes.WriteScope), new Claim(Claims.Scope, Scopes.ReadScope));
            var securableItemToPost = new SecurableItemApiModel
            {
                ClientOwner = FabricSampleAppClientId,
                Name        = "inner-securable-3"
            };

            //Act
            var result = securableItemsModule.Post($"/securableitems/{innerSecurable2.Id}", with => with.JsonBody(securableItemToPost))
                         .Result;

            Assert.Equal(HttpStatusCode.Created, result.StatusCode);
            var newSecurableItem = result.Body.DeserializeJson <SecurableItemApiModel>();

            Assert.Equal(securableItemToPost.Name, newSecurableItem.Name);
            Assert.NotNull(newSecurableItem.Id);

            //Get the whole hierarchy to ensure that the new item is in the expected location
            var getResult = securableItemsModule.Get("/securableitems").Result;

            Assert.Equal(HttpStatusCode.OK, getResult.StatusCode);
            var securableItemHierarchy = getResult.Body.DeserializeJson <SecurableItemApiModel>();

            newSecurableItem = securableItemHierarchy.SecurableItems.First(s => s.Name == "inner-securable-2")
                               .SecurableItems.First(s => s.Name == securableItemToPost.Name);
            Assert.NotNull(newSecurableItem);
        }
Ejemplo n.º 2
0
        public void AddSecurableItem_ReturnsForbidden(Claim scopeClaim, Claim clientIdClaim, bool itemLevel)
        {
            var existingClient       = _existingClients.First(c => c.Id == FabricSampleAppClientId);
            var requestClientIdClaim = (clientIdClaim != null && clientIdClaim.Value == "valid")
                ? new Claim(Claims.ClientId, existingClient.Id)
                : clientIdClaim;
            var securableItemToPost = new SecurableItemApiModel
            {
                ClientOwner = FabricSampleAppClientId,
                Name        = "inner-securable-3"
            };
            var securableItemsModule = CreateBrowser(scopeClaim, requestClientIdClaim);
            var requestUrl           = "/securableitems";

            if (itemLevel)
            {
                var innerSecurable1 =
                    existingClient.TopLevelSecurableItem.SecurableItems.First(s => s.Name == "inner-securable-1");
                requestUrl = requestUrl + $"/{innerSecurable1.Id}";
            }
            var result = securableItemsModule.Post(requestUrl, with => with.JsonBody(securableItemToPost))
                         .Result;

            Assert.Equal(HttpStatusCode.Forbidden, result.StatusCode);
        }
Ejemplo n.º 3
0
        public void AddSecurableItem_BadRequest(SecurableItemApiModel securableItemToPost, int errorCount,
                                                bool itemLevel)
        {
            var existingClient       = _existingClients.First(c => c.Id == FabricSampleAppClientId);
            var securableItemsModule = CreateBrowser(new Claim(Claims.ClientId, existingClient.Id),
                                                     new Claim(Claims.Scope, Scopes.WriteScope));
            var requestUrl = "/securableitems";

            if (itemLevel)
            {
                var innerSecurable1 =
                    existingClient.TopLevelSecurableItem.SecurableItems.First(s => s.Name == "inner-securable-1");
                requestUrl = $"{requestUrl}/{innerSecurable1.Id}";
            }
            var result = securableItemsModule.Post(requestUrl, with => with.JsonBody(securableItemToPost)).Result;

            Assert.Equal(HttpStatusCode.BadRequest, result.StatusCode);
            var error = result.Body.DeserializeJson <Error>();

            Assert.NotNull(error);
            if (errorCount > 0)
            {
                Assert.Equal(errorCount, error.Details.Length);
            }
        }
Ejemplo n.º 4
0
        public void AddSecurableItem_Conflict(SecurableItemApiModel securableItemToPost, bool itemLevel)
        {
            var existingClient  = _existingClients.First(c => c.Id == FabricSampleAppClientId);
            var innerSecurable1 =
                existingClient.TopLevelSecurableItem.SecurableItems.First(s => s.Name == "inner-securable-1");
            var securableItemsModule = CreateBrowser(new Claim(Claims.ClientId, existingClient.Id),
                                                     new Claim(Claims.Scope, Scopes.WriteScope));
            var requestUrl = "/securableitems";

            if (itemLevel)
            {
                requestUrl = $"{requestUrl}/{innerSecurable1.Id}";
            }
            var result = securableItemsModule.Post(requestUrl, with => with.JsonBody(securableItemToPost)).Result;

            Assert.Equal(HttpStatusCode.Conflict, result.StatusCode);
        }
        public void AddSecurableItemByClientId_Successful()
        {
            var existingClient       = _existingClients.First();
            var securableItemsModule = CreateBrowser(new Claim(Claims.ClientId, existingClient.Id),
                                                     new Claim(Claims.Scope, Scopes.WriteScope));
            var securableItemToPost = new SecurableItemApiModel
            {
                Name = "inner-securable-3"
            };
            var result = securableItemsModule.Post("/securableitems", with => with.JsonBody(securableItemToPost))
                         .Result;

            Assert.Equal(HttpStatusCode.Created, result.StatusCode);
            var newSecurableItem = result.Body.DeserializeJson <SecurableItemApiModel>();

            Assert.Equal(securableItemToPost.Name, newSecurableItem.Name);
            Assert.NotNull(newSecurableItem.Id);
        }
Ejemplo n.º 6
0
        public async Task AddSecurableItem_MissingRequiredScope_ForbiddenAsync()
        {
            var browser = CreateBrowser(
                new Claim(Claims.ClientId, DosClientId),
                new Claim(Claims.Scope, Scopes.WriteScope),
                new Claim(Claims.Scope, Scopes.ReadScope));

            var securableItemApiModel = new SecurableItemApiModel
            {
                Name        = $"dos-child-sec-item-{Guid.NewGuid()}",
                ClientOwner = DosClientId,
                Grain       = Domain.Defaults.Authorization.DosGrain
            };

            var dosSecItem = await _mockSecurableItemStore.Object.Get("datamarts");

            var result = await browser.Post($"/securableitems/{dosSecItem.Id}", with => with.JsonBody(securableItemApiModel));

            Assert.Equal(HttpStatusCode.Forbidden, result.StatusCode);
        }
Ejemplo n.º 7
0
        public async Task AddSecurableItem_MismatchGrain_BadRequestAsync()
        {
            var existingClient       = _existingClients.First(c => c.Id == FabricSampleAppClientId);
            var innerSecurable2      = existingClient.TopLevelSecurableItem.SecurableItems.First(s => s.Name == "inner-securable-2");
            var securableItemsModule = CreateBrowser(
                new Claim(Claims.ClientId, existingClient.Id),
                new Claim(Claims.Scope, Scopes.WriteScope),
                new Claim(Claims.Scope, Scopes.ReadScope));

            var securableItemApiModel = new SecurableItemApiModel
            {
                Name        = $"dos-child-sec-item-{Guid.NewGuid()}",
                ClientOwner = FabricSampleAppClientId,
                Grain       = Domain.Defaults.Authorization.DosGrain
            };

            var result = await securableItemsModule.Post(
                $"/securableitems/{innerSecurable2.Id}",
                with => with.JsonBody(securableItemApiModel));

            Assert.Equal(HttpStatusCode.BadRequest, result.StatusCode);
        }