public async Task WebHookSubscription_RelevantEvent() { await Test( builder => { builder.UseComponent(new WebHookComponent()); }, async() => { var wh = await CreateWebHookSubscriptionAsync(@"{ ""Path"": ""/Root/Content"", ""ContentTypes"": [ { ""Name"": ""Folder"", ""Events"": [ ""Create"", ""Delete"", ""MoveToTrash"", ""RestoreFromTrash"" ] } ] }"); var parent1 = await Node.LoadNodeAsync("/Root/Content", CancellationToken.None); var node1 = new Folder(parent1); var event1 = new NodeCreatedEvent(new TestNodeEventArgs(node1, NodeEvent.Created)); var event2 = new TestEvent1(new TestNodeEventArgs(node1, NodeEvent.Created)); var event3 = new NodeForcedDeletedEvent(new TestNodeEventArgs(node1, NodeEvent.DeletedPhysically)); var event4 = new NodeDeletedEvent(new TestNodeEventArgs(node1, NodeEvent.Deleted)); var event5 = new NodeRestoredEvent(new TestNodeEventArgs(node1, NodeEvent.Restored)); Assert.AreEqual(WebHookEventType.Create, wh.GetRelevantEventTypes(event1).Single()); Assert.AreEqual(0, wh.GetRelevantEventTypes(event2).Length); Assert.AreEqual(WebHookEventType.Delete, wh.GetRelevantEventTypes(event3).Single()); Assert.AreEqual(WebHookEventType.MoveToTrash, wh.GetRelevantEventTypes(event4).Single()); Assert.AreEqual(WebHookEventType.RestoreFromTrash, wh.GetRelevantEventTypes(event5).Single()); }); }
public async Task WebHookSubscription_RelevantEvent_All() { await Test( builder => { builder.UseComponent(new WebHookComponent()); }, async() => { // TriggersForAllEvents is TRUE var wh = await CreateWebHookSubscriptionAsync(@"{ ""Path"": ""/Root/Content"", ""TriggersForAllEvents"": true, ""ContentTypes"": [ { ""Name"": ""Folder"", ""Events"": [ ""Pending"" ] } ] }"); var parent1 = await Node.LoadNodeAsync("/Root/Content", CancellationToken.None); var node1 = new Folder(parent1); var event1 = new NodeCreatedEvent(new TestNodeEventArgs(node1, NodeEvent.Created)); var event2 = new NodeForcedDeletedEvent(new TestNodeEventArgs(node1, NodeEvent.DeletedPhysically)); // triggered for ALL events: only the appropriate events should be returned var re1 = wh.GetRelevantEventTypes(event1); Assert.AreEqual(2, re1.Length); Assert.IsTrue(re1.Contains(WebHookEventType.Create)); Assert.IsTrue(re1.Contains(WebHookEventType.Approve)); // automatic approve Assert.AreEqual(WebHookEventType.Delete, wh.GetRelevantEventTypes(event2).Single()); // TriggersForAllEvents is FALSE, but All is selected for the type. wh = await CreateWebHookSubscriptionAsync(@"{ ""Path"": ""/Root/Content"", ""TriggersForAllEvents"": false, ""ContentTypes"": [ { ""Name"": ""Folder"", ""Events"": [ ""All"" ] } ] }"); // triggered for ALL events of the type: only the appropriate events should be returned re1 = wh.GetRelevantEventTypes(event1); Assert.AreEqual(2, re1.Length); Assert.IsTrue(re1.Contains(WebHookEventType.Create)); Assert.IsTrue(re1.Contains(WebHookEventType.Approve)); // automatic approve Assert.AreEqual(WebHookEventType.Delete, wh.GetRelevantEventTypes(event2).Single()); }); }
public async Task WebHook_Basic() { await Test( builder => { builder.UseComponent(new WebHookComponent()); }, async() => { var provider = BuildServiceProvider(); var ep = provider.GetRequiredService <IEventProcessor>(); var whc = (TestWebHookClient)provider.GetRequiredService <IWebHookClient>(); var parent1 = await Node.LoadNodeAsync("/Root/Content", CancellationToken.None); var parent2 = await Node.LoadNodeAsync("/Root/System", CancellationToken.None); var node1 = new Folder(parent1); var node2 = new Folder(parent2); // create mock events var event1 = new NodeCreatedEvent(new TestNodeEventArgs(node1, NodeEvent.Created)); var event2 = new NodeCreatedEvent(new TestNodeEventArgs(node2, NodeEvent.Created)); var event3 = new NodeForcedDeletedEvent(new TestNodeEventArgs(node1, NodeEvent.DeletedPhysically)); // ACTION: fire mock events await ep.ProcessEventAsync(event1, CancellationToken.None); await ep.ProcessEventAsync(event2, CancellationToken.None); await ep.ProcessEventAsync(event3, CancellationToken.None); // test webhook client should contain the event log Assert.AreEqual(2, whc.Requests.Count); var request1 = whc.Requests[0]; Assert.AreEqual(node1.Id, request1.NodeId); Assert.AreEqual(node1.Path, request1.Path); Assert.AreEqual("Create", request1.EventName); var request2 = whc.Requests[1]; Assert.AreEqual(node1.Id, request2.NodeId); Assert.AreEqual(node1.Path, request2.Path); Assert.AreEqual("Delete", request2.EventName); }); }