public void ShouldNotDeleteClaimSetHasAnAssociatedApplication()
        {
            var testApplication = new Application
            {
                ApplicationName = "TestApplication3"
            };

            Save(testApplication);

            var testClaimSet = new ClaimSet {
                ClaimSetName = $"TestClaimSet{DateTime.Now:O}", Application = testApplication
            };

            Save(testClaimSet);

            var claimSetToDelete = new DeleteClaimSetModel()
            {
                Name                   = testClaimSet.ClaimSetName,
                Id                     = testClaimSet.ClaimSetId,
                IsEditable             = true,
                VendorApplicationCount = 1
            };

            Scoped <ISecurityContext>(securityContext =>
            {
                var validator         = new DeleteClaimSetModelValidator(securityContext);
                var validationResults = validator.Validate(claimSetToDelete);
                validationResults.IsValid.ShouldBe(false);
                validationResults.Errors.Single().ErrorMessage.ShouldBe($"Cannot delete this claim set. This claim set has {claimSetToDelete.VendorApplicationCount} associated application(s).");
            });
        }
        public void ShouldNotDeleteClaimSetIfNotEditable()
        {
            var testApplication = new Application
            {
                ApplicationName = "TestApplication1"
            };

            Save(testApplication);

            var testClaimSet = new ClaimSet {
                ClaimSetName = $"TestClaimSet{DateTime.Now:O}", Application = testApplication
            };

            Save(testClaimSet);

            var claimSetToDelete = new DeleteClaimSetModel()
            {
                Name       = testClaimSet.ClaimSetName,
                Id         = testClaimSet.ClaimSetId,
                IsEditable = false
            };

            Scoped <ISecurityContext>(securityContext =>
            {
                var validator         = new DeleteClaimSetModelValidator(securityContext);
                var validationResults = validator.Validate(claimSetToDelete);
                validationResults.IsValid.ShouldBe(false);
                validationResults.Errors.Single().ErrorMessage.ShouldBe("Only user created claim sets can be deleted");
            });
        }
        public void ShouldNotDeleteClaimSetIfNotAnExistingId()
        {
            var testApplication = new Application
            {
                ApplicationName = "TestApplication2"
            };

            Save(testApplication);

            var testClaimSet = new ClaimSet {
                ClaimSetName = $"TestClaimSet{DateTime.Now:O}", Application = testApplication
            };

            Save(testClaimSet);

            var claimSetToDelete = new DeleteClaimSetModel()
            {
                Name       = testClaimSet.ClaimSetName,
                Id         = 99,
                IsEditable = true
            };

            Scoped <ISecurityContext>(securityContext =>
            {
                var validator         = new DeleteClaimSetModelValidator(securityContext);
                var validationResults = validator.Validate(claimSetToDelete);
                validationResults.IsValid.ShouldBe(false);
                validationResults.Errors.Single().ErrorMessage.ShouldBe("No such claim set exists in the database");
            });
        }
 public ActionResult DeleteClaimSet(DeleteClaimSetModel model)
 {
     _deleteClaimSetCommand.Execute(model);
     return(JsonResult(new
     {
         successMessage = $"Claimset deleted successfully"
     }));
 }
        public ActionResult DeleteClaimSetModal(int claimSetId)
        {
            var existingClaimSet = _getClaimSetByIdQuery.Execute(claimSetId);
            var vendorApplicationCountForClaimSet = _getApplicationsByClaimSetIdQuery.Execute(claimSetId).Count();
            var model = new DeleteClaimSetModel
            {
                Id                     = claimSetId,
                Name                   = existingClaimSet.Name,
                IsEditable             = existingClaimSet.IsEditable,
                VendorApplicationCount = vendorApplicationCountForClaimSet
            };

            return(PartialView("_DeleteClaimSetModal", model));
        }