public void XpathPredicateGroupNestedTest()
        {
            string          testValue1    = "test1";
            string          testValue2    = "test2";
            long            testValue3    = 55L;
            string          nonMatchValue = "test3";
            XPathQuery      predicate1    = new XPathQuery(UnitTestHelper.AttributeStringSV, ComparisonOperator.Equals, testValue1);
            XPathQuery      predicate2    = new XPathQuery(UnitTestHelper.AttributeStringMV, ComparisonOperator.Equals, testValue2);
            XPathQuery      predicate3    = new XPathQuery(UnitTestHelper.AttributeIntegerSV, ComparisonOperator.Equals, testValue3);
            XPathQueryGroup childGroup    = new XPathQueryGroup(GroupOperator.Or, predicate1, predicate2);
            XPathQueryGroup group         = new XPathQueryGroup(GroupOperator.And, predicate3, childGroup);

            string expected = string.Format("(({4} = {5}) and (({0} = '{1}') or ({2} = '{3}')))", UnitTestHelper.AttributeStringSV, testValue1, UnitTestHelper.AttributeStringMV, testValue2, UnitTestHelper.AttributeIntegerSV, testValue3);

            ResourceObject matchObject    = UnitTestHelper.CreateTestResource(UnitTestHelper.AttributeStringSV, testValue1);
            ResourceObject nonMatchObject = UnitTestHelper.CreateTestResource(UnitTestHelper.AttributeStringSV, nonMatchValue);

            matchObject.Attributes[UnitTestHelper.AttributeIntegerSV].SetValue(testValue3);
            matchObject.Save();

            try
            {
                this.SubmitXpath(group, expected, matchObject);
            }
            finally
            {
                UnitTestHelper.CleanupTestResources(matchObject, nonMatchObject);
            }
        }
        private void SubmitXpath(XPathQueryGroup group, string expectedXpath, params ResourceObject[] matchResources)
        {
            Assert.AreEqual(expectedXpath, group.ToString());

            XPathExpression expression = new XPathExpression(UnitTestHelper.ObjectTypeUnitTestObjectName, group);

            ISearchResultCollection results = client.GetResources(expression.ToString());

            if (results.Count == 0)
            {
                if (matchResources != null && matchResources.Length > 0)
                {
                    Assert.Fail("The query returned no results");
                }
            }

            if (matchResources == null || matchResources.Length == 0)
            {
                Assert.Fail("The query returned results where none were expectedXpath");
            }

            if (results.Count != matchResources.Length)
            {
                Assert.Fail("The query returned an unexpected number of results");
            }

            if (!results.All(t => matchResources.Any(u => u.ObjectID == t.ObjectID)))
            {
                Assert.Fail("The query did not return the correct results");
            }
        }
예제 #3
0
        private string GetRequestXPath(DateTime LastImport)
        {
            List <XPathQuery> queries = new List <XPathQuery>();

            if (LastImport == null)
            {
                LastImport = DateTime.MinValue;
            }
            else if (LastImport == DateTime.MinValue)
            {
                LastImport = DateTime.Now;
            }

            queries.Add(new XPathQuery("msidmCompletedTime", ComparisonOperator.GreaterThan, LastImport));
            queries.Add(new XPathQuery("RequestStatus", ComparisonOperator.Equals, "Completed"));

            if (RMObserverSetting.ChangeMode == ChangeModeType.My)
            {
                if (requestor == null)
                {
                    string filter = string.Format("/Person[AccountName = '{0}' and Domain = '{1}']",
                                                  Environment.UserName,
                                                  Environment.UserDomainName);

                    ResourceObject identity = RmcWrapper.Client.GetResources(filter).First();
                    requestor = identity.ObjectID.Value;
                }
                queries.Add(new XPathQuery("Creator", ComparisonOperator.Equals, requestor));
            }

            XPathQueryGroup xPathGroup = new XPathQueryGroup(GroupOperator.And, queries);
            XPathExpression expression = new XPathExpression("Request", xPathGroup);

            return(expression.ToString());
        }
        public void XpathPredicateGroupSingleValueTest()
        {
            string          testValue1    = "test1";
            string          nonMatchValue = "test3";
            XPathQuery      predicate1    = new XPathQuery(UnitTestHelper.AttributeStringSV, ComparisonOperator.Equals, testValue1);
            XPathQueryGroup group         = new XPathQueryGroup(GroupOperator.And, predicate1);

            string expected = string.Format("({0} = '{1}')", UnitTestHelper.AttributeStringSV, testValue1);

            ResourceObject matchObject    = UnitTestHelper.CreateTestResource(UnitTestHelper.AttributeStringSV, testValue1);
            ResourceObject nonMatchObject = UnitTestHelper.CreateTestResource(UnitTestHelper.AttributeStringSV, nonMatchValue);

            try
            {
                this.SubmitXpath(group, expected, matchObject);
            }
            finally
            {
                UnitTestHelper.CleanupTestResources(matchObject, nonMatchObject);
            }
        }