Beispiel #1
0
        public async Task HttpStart_returns_retryafter_header()
        {
            // Define constants
            const string functionName = "SampleFunction";
            const string instanceId   = "7E467BDB-213F-407A-B86A-1954053D3C24";

            // Mock TraceWriter
            var loggerMock = new Mock <ILogger>();

            // Mock DurableOrchestrationClientBase
            var durableOrchestrationClientBaseMock = new Mock <DurableOrchestrationClientBase>();

            // Mock StartNewAsync method
            durableOrchestrationClientBaseMock.
            Setup(x => x.StartNewAsync(functionName, It.IsAny <object>())).
            ReturnsAsync(instanceId);

            // Mock CreateCheckStatusResponse method
            durableOrchestrationClientBaseMock
            .Setup(x => x.CreateCheckStatusResponse(It.IsAny <HttpRequestMessage>(), instanceId))
            .Returns(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(string.Empty),
                Headers    =
                {
                    RetryAfter = new RetryConditionHeaderValue(TimeSpan.FromSeconds(10))
                }
            });

            // Call Orchestration trigger function
            var result = await HttpStart.Run(
                new HttpRequestMessage()
            {
                Content    = new StringContent("{}", Encoding.UTF8, "application/json"),
                RequestUri = new Uri("http://localhost:7071/orchestrators/E1_HelloSequence"),
            },
                durableOrchestrationClientBaseMock.Object,
                functionName,
                loggerMock.Object);

            // Validate that output is not null
            Assert.NotNull(result.Headers.RetryAfter);

            // Validate output's Retry-After header value
            Assert.Equal(TimeSpan.FromSeconds(10), result.Headers.RetryAfter.Delta);
        }
        public async Task Test1()
        {
            // arrange
            var functionName = "Function1";
            var instanceId   = "testid";

            _durableOrchestrationClientMock.
            Setup(x => x.StartNewAsync(functionName, It.IsAny <string>(), It.IsAny <object>())).
            ReturnsAsync(instanceId);

            _durableOrchestrationClientMock
            .Setup(x => x.CreateCheckStatusResponse(It.IsAny <HttpRequestMessage>(), instanceId, false))
            .Returns(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(string.Empty),
                Headers    =
                {
                    RetryAfter = new RetryConditionHeaderValue(TimeSpan.FromSeconds(10))
                }
            });

            // act
            var result = await HttpStart.Run(
                new HttpRequestMessage()
            {
                Content    = new StringContent("{}", Encoding.UTF8, "application/json"),
                RequestUri = new Uri("http://localhost:7071/orchestrators/E1_HelloSequence"),
            },
                _durableOrchestrationClientMock.Object,
                _loggerMock.Object);

            // assert
            Assert.NotNull(result.Headers.RetryAfter);
            Assert.Equal(TimeSpan.FromSeconds(10), result.Headers.RetryAfter.Delta);
        }