public void Should_PopulateComments_When_ReturningModuleMetadata()
        {
            // arrange...
            PasswordPolicyModule mod = new PasswordPolicyModule();

            // act...
            var meta = mod.GetModuleMetadata();

            // assert...
            Assert.IsFalse(string.IsNullOrEmpty(meta.Comment));
        }
        public void Should_BeInSecurityCategory_When_ReturningModuleMetadata()
        {
            // arrange...
            PasswordPolicyModule mod = new PasswordPolicyModule();

            // act...
            var meta = mod.GetModuleMetadata();

            // assert...
            Assert.IsTrue(meta.Category.Equals("Security"));
        }
        public void Should_HaveCorrectSupportedVersions_When_ReturningModuleMetadata()
        {
            // arrange...
            List<Version> expectedVersions = new List<Version>() { new Version("7.0"), new Version("8.0"), new Version("8.1"), new Version("8.2"), new Version("9.0") };
            PasswordPolicyModule mod = new PasswordPolicyModule();

            // act...
            var meta = mod.GetModuleMetadata();

            // assert...
            Assert.IsTrue((meta.SupportedVersions.Except(expectedVersions).ToList()).Count.Equals(0));
        }
        public void Should_HaveStatusGood_When_PasswordPolicyDataIsGood()
        {
            // arrange...
            // Mocks...
            var mockDbs = Mock.Of<IDatabaseService>();
            Mock.Get(mockDbs).Setup(_ => _.ExecuteAndGetTableFromFile(It.IsAny<string>())).Returns(this.MakeData(true,3,0));
            var mockInstanceInfo = new Mock<IInstanceInfo>(MockBehavior.Strict);
            mockInstanceInfo.Setup(_ => _.DBService).Returns(mockDbs);

            // Real Module under test...
            PasswordPolicyModule mod = new PasswordPolicyModule();

            // act...
            var result = mod.GetResults(mockInstanceInfo.Object);

            // assert...
            StringAssert.Equals(result.ResultComment, "Password settings look good.");
            Assert.AreEqual(Status.Good, result.Status);
            mockInstanceInfo.VerifyAll();
            Mock.Get(mockDbs).VerifyAll();
        }
        public void Should_HaveStatusError_When_PasswordFormatIsNotCorrect()
        {
            // arrange...
            // Mocks...
            var mockDbs = Mock.Of<IDatabaseService>();
            Mock.Get(mockDbs).Setup(_ => _.ExecuteAndGetTableFromFile(It.IsAny<string>())).Returns(this.MakeData(false, 2,0));
            var mockInstanceInfo = new Mock<IInstanceInfo>(MockBehavior.Strict);
            mockInstanceInfo.Setup(_ => _.DBService).Returns(mockDbs);

            // Real Module under test...
            PasswordPolicyModule mod = new PasswordPolicyModule();

            // act...
            var result = mod.GetResults(mockInstanceInfo.Object);

            // assert...
            StringAssert.Equals(result.ResultComment, "The CMSPasswordFormat should be set to 'SHA2SALT'.");
            Assert.AreEqual(Status.Error, result.Status);
            mockInstanceInfo.VerifyAll();
            Mock.Get(mockDbs).VerifyAll();
        }
        public void Should_HaveStatusError_When_NoRecordsAreRetrieved()
        {
            // arrange...
            // Mocks...
            var mockDbs = Mock.Of<IDatabaseService>();
            Mock.Get(mockDbs).Setup(_ => _.ExecuteAndGetTableFromFile(It.IsAny<string>())).Returns(this.MakeEmptyTable());
            var mockInstanceInfo = new Mock<IInstanceInfo>(MockBehavior.Strict);
            mockInstanceInfo.Setup(_ => _.DBService).Returns(mockDbs);

            // Real Module under test...
            PasswordPolicyModule mod = new PasswordPolicyModule();

            // act...
            var result = mod.GetResults(mockInstanceInfo.Object);

            // assert...
            StringAssert.Equals(result.ResultComment, "Failed to check settings as expected.");
            Assert.AreEqual(Status.Error, result.Status);
            mockInstanceInfo.VerifyAll();
            Mock.Get(mockDbs).VerifyAll();
        }
        public void Should_HaveStatusWarning_When_PasswordPolicyIsFalseForAnySite()
        {
            // arrange...
            // Mocks...
            var mockDbs = Mock.Of<IDatabaseService>();
            Mock.Get(mockDbs).Setup(_ => _.ExecuteAndGetTableFromFile(It.IsAny<string>())).Returns(this.MakeData(true, 2,1));
            var mockInstanceInfo = new Mock<IInstanceInfo>(MockBehavior.Strict);
            mockInstanceInfo.Setup(_ => _.DBService).Returns(mockDbs);

            // Real Module under test...
            PasswordPolicyModule mod = new PasswordPolicyModule();

            // act...
            var result = mod.GetResults(mockInstanceInfo.Object);

            // assert...
            StringAssert.Equals(result.ResultComment, "It is recommended that you have CMSUsePasswordPolicy set to 'True'.");
            Assert.AreEqual(Status.Warning, result.Status);
            mockInstanceInfo.VerifyAll();
            Mock.Get(mockDbs).VerifyAll();
        }