public async Task Post_Missing_SubscriptionId_In_Header() { var @event = new ServiceHookEvent <ApprovalResource>(); var strategies = new List <IEventStrategy>(); var dcMock = new Mock <IDocumentClient>(); var target = new EventController(dcMock.Object, strategies) { Request = new HttpRequestMessage() }; target.Request.SetConfiguration(new HttpConfiguration()); var result = await target.Post(@event); result.StatusCode.Should().Be(HttpStatusCode.BadRequest); }
/// <inheritdoc /> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { reader.ThrowIfNull(nameof(reader)); serializer.ThrowIfNull(nameof(serializer)); if (reader.TokenType == JsonToken.Null) { return(null); } var @object = JObject.Load(reader); var type = @object["eventType"].ToString(); switch (type) { case "ms.vss-release.deployment-approval-pending-event": var target = new ServiceHookEvent <ApprovalResource>(); serializer.Populate(@object.CreateReader(), target); return(target); default: return(null); } }
public async Task Post() { var @event = new ServiceHookEvent <ApprovalResource>(); var subscription = new Subscription(); var strategies = new List <IEventStrategy>(); var dcMock = new Mock <IDocumentClient>(); var strategyMock = new Mock <IEventStrategy>(); strategies.Add(strategyMock.Object); var target = new EventController(dcMock.Object, strategies) { Request = new HttpRequestMessage { Headers = { { "subscriptionToken", subscription.Id.ToString() } } } }; target.Request.SetConfiguration(new HttpConfiguration()); dcMock .Setup(dc => dc.CreateDocumentQuery <Subscription>(It.IsAny <Uri>(), It.IsAny <SqlQuerySpec>(), null)) .Returns(new List <Subscription> { subscription }.AsQueryable().OrderBy(s => s.Id)); strategyMock .Setup(s => s.ShouldHandle(@event)) .Returns(true); strategyMock .Setup(s => s.Handle(@event, subscription)) .Returns(Task.CompletedTask); var result = await target.Post(@event); result.StatusCode.Should().Be(HttpStatusCode.OK); }