Exemple #1
0
        public void CheckPolicyTest_DoubleParentRegexValue()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "FIRST"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "SECOND"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = "CHILD"
            });
            string script          = "This is to make sure the second Parentregex is the one that is used. Need to add child to get it to pass!";
            bool   expected        = true;
            string message         = string.Empty;
            string messageExpected = string.Empty;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }
Exemple #2
0
        public void CheckPolicyTest_ParentAndDoubleChildDontPairPass()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "PARENT"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildDontPairRegex", Value = "NEVER"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildDontPairRegex", Value = "NEVERAGAIN"
            });
            string script          = "This script does have a parent and is missing the a child dont match regex match";
            string message         = string.Empty;
            string messageExpected = string.Empty;
            bool   expected        = true;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }
Exemple #3
0
        public void CheckPolicyTest_ParentAndChildInCommentMatchFail_WithFailureText()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "PARENT", FailureMessage = ""
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = "CHILD", FailureMessage = "This is my failure text"
            });
            string script          = @"This script does have a 
 parent with a 
-- a child regex match in a comment
";
            string message         = string.Empty;
            string messageExpected = "This is my failure text";
            bool   expected        = false;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }
Exemple #4
0
        public void ScriptSyntaxPairingCheckPolicyConstructorTest()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            Assert.IsNotNull(target);
            Assert.IsInstanceOfType(target, typeof(ScriptSyntaxPairingCheckPolicy));
        }
Exemple #5
0
        public void CheckPolicyTest_ParentInCommentAndChildMatchPass()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "PARENT"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = "CHILD"
            });
            string script          = @"This script does have a 
-- parent but it is in a comment
and a child regex match";
            string message         = string.Empty;
            string messageExpected = "No uncommented parent match found. Policy passes.";
            bool   expected        = true;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }
Exemple #6
0
        public void PolicyIdTest()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();
            string actual;

            actual = target.PolicyId;
            Assert.AreEqual(PolicyIdKey.ScriptSyntaxPairingCheckPolicy, actual);
        }
Exemple #7
0
        public void ShortDescriptionTest()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();
            string expected = "Short Desc";
            string actual;

            target.ShortDescription = expected;
            actual = target.ShortDescription;
            Assert.AreEqual(expected, actual);
        }
Exemple #8
0
        public void LongDescriptionTest()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();
            string expected = "This is my long description";
            string actual;

            target.LongDescription = expected;
            actual = target.LongDescription;
            Assert.AreEqual(expected, actual);
        }
Exemple #9
0
        public void ErrorMessageTest()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();
            string expected = "This is my error message";
            string actual;

            target.ErrorMessage = expected;
            actual = target.ErrorMessage;
            Assert.AreEqual(expected, actual);
        }
Exemple #10
0
        public void EnforceTest()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();
            bool expected = true;
            bool actual;

            target.Enforce = expected;
            actual         = target.Enforce;
            Assert.AreEqual(expected, actual);
        }
Exemple #11
0
        public void CheckPolicyTest_ParentAndChildPairMatchAddPrimaryKey_TargetMatchFail()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "TargetDatabase", Value = @"MyTarget"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = @"\bALTER\b\s*\bTABLE\b.*\bADD\b\s*\bCONSTRAINT\b.*\bPRIMARY\b\s*\bKEY\b"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bPAD_INDEX\b\s*=\s*\bON\b"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bSTATISTICS_NORECOMPUTE\b\s*=\s*\bON\b", FailureMessage = @"PRIMARY KEYS require a STATISTICS_NORECOMPUTE = ON setting"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bSORT_IN_TEMPDB\b\s*=\s*\bOFF\b"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bONLINE\b\s*=\s*\bON\b"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bFILLFACTOR\b\s*=\s*\b90\b"
            });
            string script          = @"ALTER TABLE [dbo].[MyTable] ADD  CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED 
(
      [MyTableID] ASC
)WITH (PAD_INDEX  = ON, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = ON, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
GO
;
";
            string message         = string.Empty;
            string messageExpected = @"PRIMARY KEYS require a STATISTICS_NORECOMPUTE = ON setting";
            bool   expected        = false;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, "MyTarget", commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }
Exemple #12
0
        public void CheckPolicyTest_ParentAndChildPairMatchCreateIndexFail_CheckFailureMessage()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = @"\bCREATE\b.*\bINDEX\b.*\bON"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bPAD_INDEX\b\s*=\s*\bON\b"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bSTATISTICS_NORECOMPUTE\b\s*=\s*\bON\b"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bSORT_IN_TEMPDB\b\s*=\s*\bOFF\b", FailureMessage = @"INDEXES require a SORT_IN_TEMPDB = OFF setting"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bONLINE\b\s*=\s*\bON\b"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = @"\bFILLFACTOR\b\s*=\s*\b90\b"
            });
            string script          = @"CREATE NONCLUSTERED INDEX [mytable_index] ON [dbo].[MyTable] 
(
      [ColumnX] ASC
)
INCLUDE ( [ColumnX],
[ColumnY],
[ColumnZ]) WITH (PAD_INDEX  = ON, STATISTICS_NORECOMPUTE  = ON, SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = ON, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
GO

";
            string message         = string.Empty;
            string messageExpected = @"INDEXES require a SORT_IN_TEMPDB = OFF setting";
            bool   expected        = false;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }
Exemple #13
0
        public void ArgumentsTest()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "HI"
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildPairRegex", Value = "There"
            });

            Assert.AreEqual(2, target.Arguments.Count);
            Assert.AreEqual("ParentRegex", target.Arguments[0].Name);
            Assert.AreEqual("There", target.Arguments[1].Value);
        }
Exemple #14
0
        public void CheckPolicyTest_MissingChildRegexValue()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "PARENT"
            });
            string script          = string.Empty;
            string message         = string.Empty;
            string messageExpected = String.Format("The ScriptSyntaxPairingCheckPolicy \"{0}\" does not have any {1} or {2} argument/values. Unable to process policy.", target.ShortDescription, ScriptSyntaxPairingCheckPolicy.childPairRegexKey, ScriptSyntaxPairingCheckPolicy.childDontPairRegexKey);
            bool   expected        = true;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }
Exemple #15
0
        public void CheckPolicyTest_ParentAndChildDontPairFail()
        {
            ScriptSyntaxPairingCheckPolicy target = new ScriptSyntaxPairingCheckPolicy();

            target.ShortDescription = "My Short Desc";
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ParentRegex", Value = "PARENT", FailureMessage = ""
            });
            target.Arguments.Add(new IScriptPolicyArgument()
            {
                Name = "ChildDontPairRegex", Value = "CHILD", FailureMessage = ""
            });
            string script          = "This script does have a parent and also has a child dont match regex match. Fail!";
            string message         = string.Empty;
            string messageExpected = String.Format("A child match was found for regular expression \"{0}\". This script pairing is not allowed.", "CHILD");
            bool   expected        = false;
            bool   actual;

            System.Collections.Generic.List <System.Text.RegularExpressions.Match> commentCollection = ScriptHandling.ScriptHandlingHelper.GetScriptCommentBlocks(script);
            actual = target.CheckPolicy(script, commentCollection, out message);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(expected, actual);
        }