Example #1
0
        public void MustBePending_NonDraft_ReturnsError(
            [Values(
                 Roles.Buyer,
                 Roles.Supplier,
                 Roles.Admin
                 )]
            string role,
            [Values(
                 CapabilitiesImplementedStatus.Submitted,
                 CapabilitiesImplementedStatus.Remediation,
                 CapabilitiesImplementedStatus.Approved,
                 CapabilitiesImplementedStatus.Rejected
                 )]
            CapabilitiesImplementedStatus status)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object);
            var claim     = Creator.GetCapabilitiesImplemented(status: status);

            validator.MustBePending();
            var valres = validator.Validate(claim);

            valres.Errors.Should()
            .ContainSingle(x => x.ErrorMessage == "Only supplier can delete a draft claim")
            .And
            .HaveCount(1);
        }
        public void Filter_Supplier_Returns_OwnNHSD()
        {
            var orgId = Guid.NewGuid().ToString();
            var org   = Creator.GetOrganisation(id: orgId, primaryRoleId: PrimaryRole.ApplicationServiceProvider);

            _organisationDatastore.Setup(x => x.ById(orgId)).Returns(org);

            var otherOrgId = Guid.NewGuid().ToString();
            var otherOrg   = Creator.GetOrganisation(id: otherOrgId, primaryRoleId: PrimaryRole.ApplicationServiceProvider);

            _organisationDatastore.Setup(x => x.ById(otherOrgId)).Returns(otherOrg);

            var nhsdOrgId = Guid.NewGuid().ToString();
            var nhsd      = Creator.GetOrganisation(id: nhsdOrgId, primaryRoleId: PrimaryRole.GovernmentDepartment);

            _organisationDatastore.Setup(x => x.ById(nhsdOrgId)).Returns(nhsd);

            var ctx = Creator.GetContext(orgId: orgId, role: Roles.Supplier);

            _context.Setup(c => c.HttpContext).Returns(ctx);

            var filter   = new ContactFilter(_context.Object, _organisationDatastore.Object);
            var cont1    = GetContact(orgId: orgId);
            var cont2    = GetContact(orgId: orgId);
            var cont3    = GetContact(orgId: otherOrgId);
            var cont4    = GetContact(orgId: nhsdOrgId);
            var contacts = new[] { cont1, cont2, cont3, cont4 };


            var res = filter.Filter(contacts.AsQueryable());


            res.Should().BeEquivalentTo(new[] { cont1, cont2, cont4 });
        }
Example #3
0
        public void Validate_Update_FinalState_ReturnsError(
            [Values(
                 CapabilitiesImplementedStatus.Approved,
                 CapabilitiesImplementedStatus.Rejected)]
            CapabilitiesImplementedStatus oldStatus,
            [Values(
                 CapabilitiesImplementedStatus.Draft,
                 CapabilitiesImplementedStatus.Submitted,
                 CapabilitiesImplementedStatus.Remediation,
                 CapabilitiesImplementedStatus.Approved,
                 CapabilitiesImplementedStatus.Rejected)]
            CapabilitiesImplementedStatus newStatus,
            [Values(
                 Roles.Admin,
                 Roles.Buyer,
                 Roles.Supplier)]
            string role)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object);
            var oldClaim  = Creator.GetCapabilitiesImplemented(status: oldStatus);
            var newClaim  = Creator.GetCapabilitiesImplemented(status: newStatus);

            _claimDatastore.Setup(x => x.ById(newClaim.Id)).Returns(oldClaim);

            validator.MustBeValidStatusTransition();
            var valres = validator.Validate(newClaim);

            valres.Errors.Should()
            .ContainSingle(x => x.ErrorMessage == "Invalid Status transition")
            .And
            .HaveCount(1);
        }
        public void Filter_Supplier_Returns_NotOther()
        {
            var orgId = Guid.NewGuid().ToString();
            var ctx   = Creator.GetContext(orgId: orgId, role: Roles.Supplier);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var filter     = new FrameworkFilter(_context.Object, _solutionDatastore.Object, _frameworkDatastore.Object);
            var fw1        = GetFramework();
            var fw2        = GetFramework();
            var fw3        = GetFramework();
            var frameworks = new[] { fw1, fw2, fw3 };
            var soln1      = Creator.GetSolution(orgId: orgId);
            var soln2      = Creator.GetSolution(orgId: orgId);
            var soln3      = Creator.GetSolution();

            _solutionDatastore
            .Setup(x => x.ByOrganisation(orgId))
            .Returns(new[] { soln1, soln2 }.AsQueryable());
            _frameworkDatastore
            .Setup(x => x.BySolution(soln1.Id))
            .Returns(new[] { fw1 }.AsQueryable());
            _frameworkDatastore
            .Setup(x => x.BySolution(soln2.Id))
            .Returns(new[] { fw1, fw2 }.AsQueryable());
            _frameworkDatastore
            .Setup(x => x.BySolution(soln3.Id))
            .Returns(new[] { fw1, fw2, fw3 }.AsQueryable());

            var res = filter.Filter(frameworks.AsQueryable());

            res.Should().BeEquivalentTo(new[] { fw1, fw2 });
        }
        public void ContextOrganisationId_Returns_Expected(string orgId)
        {
            var ctx = Creator.GetContext(orgId: orgId);

            _context.Setup(c => c.HttpContext).Returns(ctx);

            var ctxOrgId = _context.Object.OrganisationId();

            ctxOrgId.Should().Be(orgId);
        }
        public void HasRole_Returns_Expected(string role)
        {
            var ctx = Creator.GetContext(role: role);

            _context.Setup(c => c.HttpContext).Returns(ctx);

            var isAdmin = _context.Object.HasRole(role);

            isAdmin.Should().BeTrue();
        }
        public void ContextEmail_Returns_Expected(string email)
        {
            var ctx = Creator.GetContext(email: email);

            _context.Setup(c => c.HttpContext).Returns(ctx);

            var ctxOrgId = _context.Object.Email();

            ctxOrgId.Should().Be(email);
        }
Example #8
0
        public void MustBeSupplier_Supplier_Succeeds(string role)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new DummyValidatorBase(_context.Object, _logger.Object);
            var evidence  = Creator.GetEvidenceBase();

            validator.MustBeSupplier();
            var valres = validator.Validate(evidence);

            valres.Errors.Should().BeEmpty();
        }
Example #9
0
        public void ForCreate_SetsOriginalDate_ToUtcNow()
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());
            var modifier = new DummyEvidenceBaseModifier(_context.Object, _contacts.Object);
            var evidence = Creator.GetEvidenceBase(originalDate: DateTime.MinValue);

            modifier.ForCreate(evidence);

            evidence.OriginalDate.Should().BeCloseTo(DateTime.UtcNow);
        }
        public void Validate_Admin_Returns_NoError()
        {
            var ctx = Creator.GetContext(role: Roles.Admin);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new LinkManagerValidator(_context.Object);

            var valres = validator.Validate(_context.Object);

            valres.Errors.Should().BeEmpty();
        }
        public void Validate_Admin_Update_Returns_NoError()
        {
            var ctx = Creator.GetContext(role: Roles.Admin);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new CapabilityValidator(_context.Object);

            var valres = validator.Validate(new Capability(), ruleSet: nameof(ICapabilityLogic.Update));

            valres.Errors.Should().BeEmpty();
        }
        public void Validate_Admin_Delete_Completes(string role)
        {
            var ctx = Creator.GetContext(role: role);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new ContactValidator(_context.Object);

            var valres = validator.Validate(new Contact(), ruleSet: nameof(IContactLogic.Delete));

            valres.Errors.Should().BeEmpty();
        }
        public void Validate_Supplier_Returns_Error()
        {
            var ctx = Creator.GetContext(role: Roles.Supplier);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new LinkManagerValidator(_context.Object);

            var valres = validator.Validate(_context.Object);

            valres.Errors.Count().Should().Be(1);
        }
        public void ForCreate_SetsCreatedOn_ToUtcNow()
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());
            var modifier = new DummyReviewsBaseModifier(_context.Object, _contacts.Object);
            var review   = Creator.GetReviewsBase(createdOn: DateTime.MinValue);

            modifier.ForCreate(review);

            review.CreatedOn.Should().BeCloseTo(DateTime.UtcNow);
        }
Example #15
0
        public void MustBePending_Draft_Succeeds(string role)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object);
            var claim     = Creator.GetCapabilitiesImplemented(status: CapabilitiesImplementedStatus.Draft);

            validator.MustBePending();
            var valres = validator.Validate(claim);

            valres.Errors.Should().BeEmpty();
        }
        public void Validate_NonAdmin_Update_Returns_Error(string role)
        {
            var ctx = Creator.GetContext(role: role);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new CapabilityValidator(_context.Object);

            var valres = validator.Validate(new Capability(), ruleSet: nameof(ICapabilityLogic.Update));

            valres.Errors.Count().Should().Be(1);
        }
        public void Validate_NonAdmin_Delete_Returns_Error(string role)
        {
            var ctx = Creator.GetContext(role: role);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new OrganisationValidator(_context.Object);

            var valres = validator.Validate(new Organisation(), ruleSet: nameof(IOrganisationLogic.Delete));

            valres.Errors.Count().Should().Be(1);
        }
        public void ForUpdate_DefaultOriginalDate_SetsOriginalDate_ToUtcNow()
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());
            var modifier = new DummyReviewsBaseModifier(_context.Object, _contacts.Object);
            var review   = Creator.GetReviewsBase(originalDate: default(DateTime));

            modifier.ForUpdate(review);

            review.OriginalDate.Should().BeCloseTo(DateTime.UtcNow);
        }
Example #19
0
        public void MustBeAdminOrSupplier_AdminSupplier_Succeeds(string role)
        {
            var ctx = Creator.GetContext(role: role);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new DummyValidatorBase(_context.Object, _logger.Object);

            validator.MustBeAdminOrSupplier();
            var valres = validator.Validate(_context.Object);

            valres.Errors.Should().BeEmpty();
        }
        public void ForUpdate_OriginalDate_DoesNotSet_OriginalDate()
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());
            var modifier     = new DummyReviewsBaseModifier(_context.Object, _contacts.Object);
            var originalDate = new DateTime(2006, 2, 20, 6, 3, 0);
            var review       = Creator.GetReviewsBase(originalDate: originalDate);

            modifier.ForUpdate(review);

            review.OriginalDate.Should().BeCloseTo(originalDate);
        }
        public void MustBeFromSameOrganisationOrAdmin_Same_Succeeds()
        {
            var orgId = Guid.NewGuid().ToString();

            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(orgId: orgId, role: Roles.Supplier));
            var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object);
            var soln      = Creator.GetSolution(orgId: orgId);

            validator.MustBeFromSameOrganisationOrAdmin();
            var valres = validator.Validate(soln);

            valres.Errors.Should().BeEmpty();
        }
Example #22
0
        public void Validate_Buyer_AllOperations_ReturnsError(
            [ValueSource(nameof(Operations))] string operation
            )
        {
            var ctx = Creator.GetContext(role: Roles.Buyer);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new AssessmentMessageValidator(_context.Object);

            var res = validator.Validate(Creator.GetAssessmentMessage(), ruleSet: operation);

            res.Errors.Count().Should().Be(1);
        }
        public void Validate_Admin_Succeeds(
            [ValueSource(nameof(Operations))] string operation)
        {
            var ctx = Creator.GetContext(role: Roles.Admin);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var techCont  = Creator.GetTechnicalContact();
            var validator = new TechnicalContactValidator(_context.Object, _solutionDatastore.Object);

            var res = validator.Validate(techCont, ruleSet: operation);

            res.Errors.Should().BeEmpty();
        }
Example #24
0
        public void MustBePending_Draft_ReturnsError(string role)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object);
            var claim     = Creator.GetCapabilitiesImplemented(status: CapabilitiesImplementedStatus.Draft);

            validator.MustBePending();
            var valres = validator.Validate(claim);

            valres.Errors.Should()
            .ContainSingle(x => x.ErrorMessage == "Only supplier can delete a draft claim")
            .And
            .HaveCount(1);
        }
Example #25
0
        public void Validate_AdminSupplier_BySolutionCreate_ReturnsNoError(
            [Values(nameof(IAssessmentMessageLogic.BySolution), nameof(IAssessmentMessageLogic.Create))] string operation,
            [Values(Roles.Admin, Roles.Supplier)] string role
            )
        {
            var ctx = Creator.GetContext(role: role);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var validator = new AssessmentMessageValidator(_context.Object);

            var res = validator.Validate(Creator.GetAssessmentMessage(), ruleSet: operation);

            res.Errors.Should().BeEmpty();
        }
Example #26
0
        public void MustBeValidStatusTransition_Valid_Succeeds(CapabilitiesImplementedStatus oldStatus, CapabilitiesImplementedStatus newStatus, string role)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object);
            var oldClaim  = Creator.GetCapabilitiesImplemented(status: oldStatus);
            var newClaim  = Creator.GetCapabilitiesImplemented(status: newStatus);

            _claimDatastore.Setup(x => x.ById(newClaim.Id)).Returns(oldClaim);

            validator.MustBeValidStatusTransition();
            var valres = validator.Validate(newClaim);

            valres.Errors.Should().BeEmpty();
        }
Example #27
0
        public void MustBeSupplier_NonSupplier_ReturnsError(string role)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new DummyValidatorBase(_context.Object, _logger.Object);
            var evidence  = Creator.GetEvidenceBase();

            validator.MustBeSupplier();
            var valres = validator.Validate(evidence);

            valres.Errors.Should()
            .ContainSingle(x => x.ErrorMessage == "Must be supplier")
            .And
            .HaveCount(1);
        }
        public void ForCreate_SetsCreatedById()
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            var contactId = Guid.NewGuid().ToString();
            var contact   = Creator.GetContact(id: contactId);

            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(contact);
            var modifier = new DummyReviewsBaseModifier(_context.Object, _contacts.Object);
            var review   = Creator.GetReviewsBase(originalDate: DateTime.MinValue);

            modifier.ForCreate(review);

            review.CreatedById.Should().Be(contactId);
        }
Example #29
0
        public void MustBePending_Draft_Succeeds(
            [Values(Roles.Supplier)]
            string role,
            [Values(StandardsApplicableStatus.Draft, StandardsApplicableStatus.NotStarted)]
            StandardsApplicableStatus status)
        {
            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new StandardsApplicableValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object);
            var claim     = Creator.GetStandardsApplicable(status: status);

            validator.MustBePending();
            var valres = validator.Validate(claim);

            valres.Errors.Should().BeEmpty();
        }
Example #30
0
        public void Filter_SupplierOther_ReturnsNull()
        {
            var filter = new DummyClaimsFilterBase(_context.Object, _solutionDatastore.Object);
            var orgId  = Guid.NewGuid().ToString();
            var soln   = Creator.GetSolution(orgId: orgId);
            var claim  = Creator.GetClaimsBase(solnId: soln.Id);
            var ctx    = Creator.GetContext();

            _context.Setup(c => c.HttpContext).Returns(ctx);
            _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln);

            var res = filter.FilterForSupplier(claim);

            res.Should().BeNull();
        }