public void WhenSearchForDeliveryResults_ThenReturnsMatchingResultsInOrder() { var subscription = new WebhookSubscription(); var subscriptionId = store.Add(subscription); var datum1 = SystemTime.UtcNow.ToNearestSecond(); var datum2 = datum1.AddDays(1); var result1 = new SubscriptionDeliveryResult { Id = "aresultid1", SubscriptionId = subscriptionId, AttemptedDateUtc = datum1 }; var result2 = new SubscriptionDeliveryResult { Id = "aresultid2", SubscriptionId = subscriptionId, AttemptedDateUtc = datum2 }; store.Add(subscriptionId, result1); store.Add(subscriptionId, result2); var results = store.Search(subscriptionId, 1); Assert.That(results.Count, Is.EqualTo(1)); Assert.That(results[0].Id, Is.EqualTo("aresultid2")); }
public void WhenWrite_ThenPostsEventToSubscribersAndUpdatesResults() { var config = new SubscriptionRelayConfig(); subscriptionCache.Setup(sc => sc.GetAll(It.IsAny <string>())) .Returns(new List <SubscriptionRelayConfig> { config }); var result = new SubscriptionDeliveryResult(); serviceClient.Setup(sc => sc.Relay(config, It.IsAny <WebhookEvent>())) .Returns(result); processor.ProcessMessage(new WebhookEvent { EventName = "aneventname", Data = new Dictionary <string, string> { { "akey", "avalue" } } }); subscriptionService.Verify(ss => ss.UpdateResults(It.Is <List <SubscriptionDeliveryResult> >(results => results.Count == 1 && results[0] == result))); }
private static void AssertDeliveryResult(SubscriptionDeliveryResult result, HttpStatusCode statusCode, string statusDescription = null) { Assert.That(result.Id.IsEntityId); Assert.That(result.SubscriptionId, Is.EqualTo("asubscriptionid")); Assert.That(result.AttemptedDateUtc, Is.EqualTo(DateTime.UtcNow).Within(1).Seconds); Assert.That(result.StatusCode, Is.EqualTo(statusCode)); Assert.That(result.StatusDescription, Is.EqualTo(statusDescription.HasValue() ? statusDescription : "astatusdescription")); }
public void Initialize() { dto = new SubscriptionDeliveryResult { Id = DataFormats.CreateEntityIdentifier(), SubscriptionId = DataFormats.CreateEntityIdentifier() }; validator = new SubscriptionDeliveryResultValidator(); }
public void Add(string subscriptionId, SubscriptionDeliveryResult result) { Guard.AgainstNullOrEmpty(() => subscriptionId, subscriptionId); Guard.AgainstNull(() => result, result); using (var db = dbFactory.Open()) { db.Insert(result); } }
public void Add(string subscriptionId, SubscriptionDeliveryResult result) { Guard.AgainstNullOrEmpty(() => subscriptionId, subscriptionId); Guard.AgainstNull(() => result, result); var subscription = Get(subscriptionId); if (subscription != null) { deliveryResults.TryAdd(result.Id, result); } }
/// <summary> /// Converts the specified subscription DTO to a <see cref="SubscriptionDeliveryResultEntity" /> entity /// </summary> public static SubscriptionDeliveryResultEntity ToEntity(this SubscriptionDeliveryResult subscription) { Guard.AgainstNull(() => subscription, subscription); var res = subscription.ConvertTo <SubscriptionDeliveryResultEntity>(); res.PartitionKey = string.Empty; res.RowKey = res.Id; res.StatusCode = subscription.StatusCode.ToString(); res.AttemptedDateUtc = subscription.AttemptedDateUtc.ToSafeAzureDateTime(); return(res); }
public void Add(string subscriptionId, SubscriptionDeliveryResult result) { Guard.AgainstNullOrEmpty(() => subscriptionId, subscriptionId); Guard.AgainstNull(() => result, result); var subscription = GetSubscription(subscriptionId); if (subscription.Value != null) { var cacheKey = FormatHistoryCacheKey(subscription.Value.CreatedById, subscription.Value.Event, result.Id); CacheClient.Add(cacheKey, result); } }
public void WhenSearchForDeliveryResults_ThenReturnsMatchingResults() { var subscription = new WebhookSubscription(); var subscriptionId = store.Add(subscription); var result = new SubscriptionDeliveryResult { Id = "aresultid", SubscriptionId = subscriptionId }; store.Add(subscriptionId, result); var results = store.Search(subscriptionId, 1); Assert.That(results.Count, Is.EqualTo(1)); Assert.That(results[0].Id, Is.EqualTo("aresultid")); }
public void WhenAddHistory_ThenAddsHistory() { var datum = DateTime.UtcNow.ToNearestSecond(); cacheClient.Setup(cc => cc.Get <object>("akey")) .Returns(new WebhookSubscription { Id = "asubscriptionid", Event = "aneventname", CreatedById = "auserid" }); var result = new SubscriptionDeliveryResult { Id = "aresultid", AttemptedDateUtc = datum }; store.Add("asubscriptionid", result); cacheClient.Verify(cc => cc.Add(CacheClientSubscriptionStore.FormatHistoryCacheKey("auserid", "aneventname", "aresultid"), It.Is <SubscriptionDeliveryResult>(sub => (sub.Id == "aresultid") && (sub.AttemptedDateUtc == datum)))); }
public void WhenWrite_ThenPostsEventToSubscribersAndUpdatesResults() { var config = new SubscriptionRelayConfig(); subscriptionCache.Setup(sc => sc.GetAll(It.IsAny <string>())) .Returns(new List <SubscriptionRelayConfig> { config }); var data = new Dictionary <string, string> { { "akey", "avalue" } }; var result = new SubscriptionDeliveryResult(); serviceClient.Setup(sc => sc.Relay(config, "aneventname", data)) .Returns(result); sink.Write("aneventname", data); subscriptionService.Verify(ss => ss.UpdateResults(It.Is <List <SubscriptionDeliveryResult> >(results => (results.Count == 1) && (results[0] == result)))); }
public void WhenAddDeliveryResult_ThenAddResults() { var result = new SubscriptionDeliveryResult { Id = "aresultid", SubscriptionId = "asubscriptionid" }; subscriptionStorage.Setup(ss => ss.Find(It.IsAny <TableStorageQuery>())) .Returns(new List <WebhookSubscriptionEntity> { new WebhookSubscriptionEntity { Id = "asubscriptionid" } }); store.Add("asubscriptionid", result); subscriptionStorage.Verify(ss => ss.Find(It.IsAny <TableStorageQuery>())); deliveryResultStorage.Verify(drs => drs.Add(It.Is <SubscriptionDeliveryResultEntity>(dre => dre.Id == "aresultid" && dre.SubscriptionId == "asubscriptionid"))); }
public void WhenWrite_ThenPostsEventToSubscribersAndUpdatesResults() { var config = new SubscriptionRelayConfig(); subscriptionCache.Setup(sc => sc.GetAll(It.IsAny <string>())) .Returns(new List <SubscriptionRelayConfig> { config }); var result = new SubscriptionDeliveryResult(); var whe = new WebhookEvent { EventName = "aneventname" }; serviceClient.Setup(sc => sc.Relay(config, whe)) .Returns(result); sink.Write(whe); subscriptionService.Verify(ss => ss.UpdateResults(It.Is <List <SubscriptionDeliveryResult> >(results => results.Count == 1 && results[0] == result))); }
private static bool ExistsInStore(ISubscriptionStore store, List <SubscriptionDeliveryResult> results, SubscriptionDeliveryResult incoming) { var existing = store.Search(incoming.SubscriptionId, results.Count).Safe(); return(existing.Any(exist => exist.Id.EqualsIgnoreCase(incoming.Id))); }
public void Add(string subscriptionId, SubscriptionDeliveryResult result) { throw new NotImplementedException(); }
public void WhenUpdateSubscriptionHistoryWithRepeats_ThenReturnsSubscriptionHistory() { appHost.LoginUser(client, "asubscriber", WebhookFeature.DefaultSubscriberRoles); var subscription = client.Post(new CreateSubscription { Name = "aname", Events = new List <string> { "anevent1" }, Config = new SubscriptionConfig { Url = "http://localhost:3333" } }).Subscriptions .First(); var datum1 = SystemTime.UtcNow.ToNearestSecond(); var datum2 = datum1.AddDays(1); var datum3 = datum1.AddDays(2); var result1 = new SubscriptionDeliveryResult { Id = DataFormats.CreateEntityIdentifier(), SubscriptionId = subscription.Id, AttemptedDateUtc = datum1 }; var result2 = new SubscriptionDeliveryResult { Id = DataFormats.CreateEntityIdentifier(), SubscriptionId = subscription.Id, AttemptedDateUtc = datum2 }; appHost.LoginUser(client, "arelay", WebhookFeature.DefaultRelayRoles); client.Put(new UpdateSubscriptionHistory { Results = new List <SubscriptionDeliveryResult> { result1, result2 } }); client.Put(new UpdateSubscriptionHistory { Results = new List <SubscriptionDeliveryResult> { result1, result2, new SubscriptionDeliveryResult { Id = DataFormats.CreateEntityIdentifier(), SubscriptionId = subscription.Id, AttemptedDateUtc = datum3 } } }); appHost.LoginUser(client, "asubscriber", WebhookFeature.DefaultSubscriberRoles); var result = client.Get(new GetSubscription { Id = subscription.Id }).History; Assert.That(result.Count, Is.EqualTo(3)); Assert.That(result[0].AttemptedDateUtc, Is.EqualTo(datum3)); Assert.That(result[1].AttemptedDateUtc, Is.EqualTo(datum2)); Assert.That(result[2].AttemptedDateUtc, Is.EqualTo(datum1)); }