Example #1
0
        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);
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        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);
        }