Пример #1
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);
        }
Пример #2
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);
        }
Пример #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);
        }
Пример #4
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);
        }
Пример #5
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);
        }
Пример #6
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);
        }
Пример #7
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);
        }
Пример #8
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);
        }