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");
            }
        }
        private void SubmitXpath(object value, string expected, string attributeName, ComparisonOperator xpathOp, GroupOperator queryOp, params ResourceObject[] matchResources)
        {
            XPathQuery predicate = new XPathQuery(attributeName, xpathOp, value);
            string     xpath     = XPathFilterBuilder.CreateFilter(UnitTestHelper.ObjectTypeUnitTestObjectName, queryOp, predicate);

            Assert.AreEqual(expected, xpath);

            ISearchResultCollection results = client.GetResources(xpath);

            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");
            }
        }
        private void SubmitXpath(XPathExpression expression, string expectedXpath, params ResourceObject[] matchResources)
        {
            Assert.AreEqual(expectedXpath, expression.ToString());

            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. Expected {0}, Actual {1}", matchResources.Length, results.Count);
            }

            if (!results.All(t => matchResources.Any(u => u.ObjectID == t.ObjectID)))
            {
                Assert.Fail("The query did not return the correct results");
            }
        }
示例#4
0
        private async void ProcessingChanges(DateTime RequestsSince)
        {
            WriteDebug("Starting Processing changes");

            ISearchResultCollection requests = await GetRequestsAsync(RequestsSince);

            foreach (ResourceObject request in requests)
            {
                List <ObserverRequest> observerRequests;
                if (request.Attributes["TargetObjectType"].StringValue == "	msidmCompositeType")
                {
                    WriteVerbose(String.Format("Detected new msidmCompositeType with ID {0} and operation {1}", request.ObjectID.Value, request.Attributes["Operation"].StringValue));
                    observerRequests = GetObserverRequestFromCompositeRequest(request);
                }
                else
                {
                    WriteVerbose(String.Format("Detected new request with ID {0} and operation {1}", request.ObjectID.Value, request.Attributes["Operation"].StringValue));
                    observerRequests = new List <ObserverRequest> {
                        new ObserverRequest(
                            request.Attributes["Target"].ReferenceValue,
                            request.Attributes["TargetObjectType"].StringValue,
                            request.Attributes["Operation"].StringValue)
                    };
                }

                foreach (ObserverRequest observerRequest in observerRequests)
                {
                    var observerObjectSetting = RMObserverSetting.ObserverObjectSettings.Where(c => c.ObjectType == observerRequest.TargetObjectType).FirstOrDefault();

                    if (observerObjectSetting == null)
                    {
                        WriteVerbose("Change is skipped. No ObserverConfiguration for this ObjectType is configured.");
                        continue;
                    }

                    // ^(Create|Get|Put|Delete|Enumerate|Pull|SystemEvent)$
                    switch (observerRequest.RequestOperationType)
                    {
                    case "Create":
                        var filesCreated = ProcessingCreate(observerRequest.TargetObjectID, observerObjectSetting);
                        WriteModificationToConsole(filesCreated);
                        break;

                    case "Put":
                        var filesModifications = ProcessingPut(observerRequest.TargetObjectID, observerObjectSetting);
                        WriteModificationToConsole(filesModifications);
                        break;

                    case "Delete":
                        var filesDeleted = ProcessingDelete(observerRequest.TargetObjectID, observerObjectSetting);
                        WriteModificationToConsole(filesDeleted);
                        break;

                    default:
                        break;
                    }
                }
            }
        }
        protected override void ProcessRecord()
        {
            ISearchResultCollection results = RmcWrapper.Client.GetApprovals(this.Status);

            foreach (ResourceObject result in results)
            {
                this.WriteObject(new RmaObject(result));
            }
        }
 public SearchService(
     IGraphQLService graphQlService,
     ICachingService cachingService,
     ISearchResultCollection searchResultCollection)
 {
     _graphQLService         = graphQlService;
     _cachingService         = cachingService;
     _searchResultCollection = searchResultCollection;
 }
示例#7
0
        protected override void ProcessRecord()
        {
            IEnumerable <string> attributes = null;
            string filter = this.GetQueryString();

            attributes = new List <string>()
            {
                "ObjectID"
            };

            ISearchResultCollection results = RmcWrapper.Client.GetResources(filter, 0, attributes);

            this.WriteObject(results.Count);
        }
示例#8
0
        public void SearchTestSync()
        {
            ResourceManagementClient c = new ResourceManagementClient();

            ISearchResultCollection results = c.GetResources("/Set", 200);

            Debug.WriteLine("Getting {0} results", results.Count);

            int count = 0;

            foreach (ResourceObject o in results)
            {
                Debug.WriteLine("UT got object " + o.ObjectID);
                count++;
            }

            Assert.AreEqual(results.Count, count);
        }
        private void CheckTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            try
            {
                ResourceManagementClient c = new ResourceManagementClient(this.HostName);

                string xpath;

                if (this.lastCheckDateTime == null)
                {
                    xpath = "/Request";
                    this.Trace("No watermark available. Querying for latest request history item");
                }
                else
                {
                    xpath = string.Format("/Request[msidmCompletedTime > '{0}']", this.lastCheckDateTime.Value.ToResourceManagementServiceDateFormat(false));
                    this.Trace($"Searching for changes since {this.lastCheckDateTime.Value.ToResourceManagementServiceDateFormat(false)}");
                }

                ISearchResultCollection r = c.GetResources(xpath, 1, new[] { "msidmCompletedTime" }, "msidmCompletedTime", false);

                this.Trace($"Found {r.Count} change{r.Count.Pluralize()}");

                if (r.Count <= 0)
                {
                    return;
                }

                this.lastCheckDateTime = r.First().Attributes["msidmCompletedTime"].DateTimeValue;

                this.Fire(MARunProfileType.DeltaImport, "default");
            }
            catch (Exception ex)
            {
                this.LogError("Change detection failed", ex);

                if (MessageSender.CanSendMail())
                {
                    string messageContent = MessageBuilder.GetMessageBody(this.ManagementAgentName, this.Type, this.Description, DateTime.Now, false, ex);
                    MessageSender.SendMessage($"{this.ManagementAgentName}: {this.Type} trigger error", messageContent);
                }
            }
        }
示例#10
0
        public void SearchTestAsyncNoResults()
        {
            ResourceManagementClient c = new ResourceManagementClient();

            ISearchResultCollection results = c.GetResourcesAsync("Set[DisplayName='...!!!...']", 200);

            Debug.WriteLine("Getting {0} results", results.Count);

            int count = 0;

            foreach (ResourceObject o in results)
            {
                Debug.WriteLine("UT got object " + o.ObjectID);
                count++;
            }

            Assert.AreEqual(results.Count, count);
            Assert.AreEqual(0, count);
        }
示例#11
0
        public void SearchTestSyncSortedDesc()
        {
            ResourceManagementClient c = new ResourceManagementClient();
            List <SortingAttribute>  sortAttributes = new List <SortingAttribute>();

            sortAttributes.Add(new SortingAttribute("AccountName", false));
            string query = String.Format("/{0}[starts-with('{1}', 'reftest')]", UnitTestHelper.ObjectTypeUnitTestObjectName, AttributeNames.AccountName);

            ISearchResultCollection results = c.GetResources(query, -1, new string[] { "AccountName" }, sortAttributes);

            ResourceObject[] arrayResults = results.ToArray();

            Assert.AreEqual(6, results.Count);
            Assert.AreEqual("reftest6", arrayResults[0].Attributes[AttributeNames.AccountName].StringValue);
            Assert.AreEqual("reftest5", arrayResults[1].Attributes[AttributeNames.AccountName].StringValue);
            Assert.AreEqual("reftest4", arrayResults[2].Attributes[AttributeNames.AccountName].StringValue);
            Assert.AreEqual("reftest3", arrayResults[3].Attributes[AttributeNames.AccountName].StringValue);
            Assert.AreEqual("reftest2", arrayResults[4].Attributes[AttributeNames.AccountName].StringValue);
            Assert.AreEqual("reftest1", arrayResults[5].Attributes[AttributeNames.AccountName].StringValue);
        }
示例#12
0
        public void SearchBadFilter()
        {
            ResourceManagementClient c = new ResourceManagementClient();

            try
            {
                ISearchResultCollection results = c.GetResources("!not a filter!", 200);
                Debug.WriteLine("Getting {0} results", results.Count);

                foreach (ResourceObject o in results)
                {
                    Debug.WriteLine("UT got object " + o.ObjectID);
                }
            }
            catch (CannotProcessFilterException)
            {
                return;
            }

            Assert.Fail("The expected exception was not thrown");
        }
示例#13
0
        public void SearchTestSyncRestrictedAttributeList()
        {
            ResourceManagementClient c = new ResourceManagementClient();

            List <string> attributesToGet = new List <string>();

            attributesToGet.Add("ObjectID");
            attributesToGet.Add("ObjectType");
            attributesToGet.Add("DisplayName");

            ISearchResultCollection results = c.GetResources("/Group", 200, attributesToGet);

            Debug.WriteLine("Getting {0} results", results.Count);
            int count = 0;

            foreach (ResourceObject o in results)
            {
                Debug.WriteLine("UT got object " + o.ObjectID);
                count++;
            }

            Assert.AreEqual(results.Count, count);
        }
        public void DeleteAllGroups()
        {
            ResourceManagementClient client = new ResourceManagementClient();

            // We are performing a delete, so we are only interested in the object ID and object type
            List <string> attributesToGet = new List <string>()
            {
                "ObjectID", "ObjectType"
            };

            // Get all the group objects to delete
            ISearchResultCollection resources = client.GetResources("/Group", attributesToGet);

            try
            {
                client.DeleteResources(resources);
            }
            catch (Exception)
            {
                // An error occurred while deleting the resources
                throw;
            }
        }
 protected override void Because()
 {
     this.Result = this.Sut.FindAll();
 }