public async Task When_ResourceSetId_Doesnt_Exist_Then_Exception_Is_Thrown() { // ARRANGE InitializeFakeObjects(); const string resourceSetId = "resource_set_id"; var addPolicyParameter = new AddPolicyParameter { ResourceSetIds = new List <string> { resourceSetId }, Scopes = new List <string> { "invalid_scope" }, ClientIdsAllowed = new List <string> { "client_id" } }; _repositoryExceptionHelper.Setup(r => r.HandleException(string.Format(ErrorDescriptions.TheResourceSetCannotBeRetrieved, resourceSetId), It.IsAny <Func <Task <ResourceSet> > >())) .Returns(Task.FromResult((ResourceSet)null)); // ACT & ASSERTS var exception = await Assert.ThrowsAsync <BaseUmaException>(() => _addAuthorizationPolicyAction.Execute(addPolicyParameter)); Assert.NotNull(exception); Assert.True(exception.Code == ErrorCodes.InvalidResourceSetId); Assert.True(exception.Message == string.Format(ErrorDescriptions.TheResourceSetDoesntExist, resourceSetId)); }
public async Task <string> Execute(AddPolicyParameter addPolicyParameter) { var json = addPolicyParameter == null ? string.Empty : JsonConvert.SerializeObject(addPolicyParameter); _umaServerEventSource.StartAddingAuthorizationPolicy(json); if (addPolicyParameter == null) { throw new ArgumentNullException(nameof(addPolicyParameter)); } if (addPolicyParameter.ResourceSetIds == null || !addPolicyParameter.ResourceSetIds.Any()) { throw new BaseUmaException(ErrorCodes.InvalidRequestCode, string.Format(ErrorDescriptions.TheParameterNeedsToBeSpecified, Constants.AddPolicyParameterNames.ResourceSetIds)); } foreach (var resourceSetId in addPolicyParameter.ResourceSetIds) { var resourceSet = await _repositoryExceptionHelper.HandleException( string.Format(ErrorDescriptions.TheResourceSetCannotBeRetrieved, resourceSetId), () => _resourceSetRepository.Get(resourceSetId)); if (resourceSet == null) { throw new BaseUmaException(ErrorCodes.InvalidResourceSetId, string.Format(ErrorDescriptions.TheResourceSetDoesntExist, resourceSetId)); } if (addPolicyParameter.Scopes.Any(r => !resourceSet.Scopes.Contains(r))) { throw new BaseUmaException(ErrorCodes.InvalidScope, ErrorDescriptions.OneOrMoreScopesDontBelongToAResourceSet); } } // Insert policy var policy = new Policy { Id = Guid.NewGuid().ToString(), ClientIds = addPolicyParameter.ClientIdsAllowed, ResourceSetIds = addPolicyParameter.ResourceSetIds, IsResourceOwnerConsentNeeded = addPolicyParameter.IsResourceOwnerConsentNeeded, Script = addPolicyParameter.Script, Scopes = addPolicyParameter.Scopes, Claims = addPolicyParameter.Claims == null ? new List <Claim>() : addPolicyParameter.Claims.Select(c => new Claim { Type = c.Type, Value = c.Value }).ToList() }; await _repositoryExceptionHelper.HandleException(ErrorDescriptions.ThePolicyCannotBeInserted, () => _policyRepository.Add(policy)); _umaServerEventSource.FinishToAddAuthorizationPolicy(JsonConvert.SerializeObject(policy)); return(policy.Id); }
public async Task When_Passing_Empty_ResourceSetId_Then_Exception_Is_Thrown() { // ARRANGE InitializeFakeObjects(); var addPolicyParameter = new AddPolicyParameter(); // ACT & ASSERTS var exception = await Assert.ThrowsAsync <BaseUmaException>(() => _addAuthorizationPolicyAction.Execute(addPolicyParameter)); Assert.NotNull(exception); Assert.True(exception.Code == ErrorCodes.InvalidRequestCode); Assert.True(exception.Message == string.Format(ErrorDescriptions.TheParameterNeedsToBeSpecified, Constants.AddPolicyParameterNames.ResourceSetIds)); }
public async Task When_Adding_AuthorizationPolicy_Then_Id_Is_Returned() { // ARRANGE InitializeFakeObjects(); const string resourceSetId = "resource_set_id"; var addPolicyParameter = new AddPolicyParameter { ResourceSetIds = new List <string> { resourceSetId }, Rules = new List <AddPolicyRuleParameter> { new AddPolicyRuleParameter { Scopes = new List <string> { "scope" }, ClientIdsAllowed = new List <string> { "client_id" }, Claims = new List <AddClaimParameter> { new AddClaimParameter { Type = "type", Value = "value" } } } } }; var resourceSet = new ResourceSet { Scopes = new List <string> { "scope" } }; _repositoryExceptionHelper.Setup(r => r.HandleException(string.Format(ErrorDescriptions.TheResourceSetCannotBeRetrieved, resourceSetId), It.IsAny <Func <Task <ResourceSet> > >())) .Returns(Task.FromResult(resourceSet)); // ACT var result = await _addAuthorizationPolicyAction.Execute(addPolicyParameter); // ASSERTS Assert.NotNull(result); }
public async Task When_Passing_No_Rules_Then_Exception_Is_Thrown() { // ARRANGE InitializeFakeObjects(); const string resourceSetId = "resource_set_id"; var addPolicyParameter = new AddPolicyParameter { ResourceSetIds = new List <string> { resourceSetId } }; _repositoryExceptionHelper.Setup(r => r.HandleException(string.Format(ErrorDescriptions.TheResourceSetCannotBeRetrieved, resourceSetId), It.IsAny <Func <Task <ResourceSet> > >())) .Returns(Task.FromResult((ResourceSet)null)); // ACT & ASSERTS var exception = await Assert.ThrowsAsync <BaseUmaException>(() => _addAuthorizationPolicyAction.Execute(addPolicyParameter)); Assert.NotNull(exception); Assert.True(exception.Code == ErrorCodes.InvalidRequestCode); Assert.True(exception.Message == string.Format(ErrorDescriptions.TheParameterNeedsToBeSpecified, Constants.AddPolicyParameterNames.Rules)); }
public Task <string> AddPolicy(AddPolicyParameter addPolicyParameter) { return(_addAuthorizationPolicyAction.Execute(addPolicyParameter)); }