public void Given_RequestMessage_When_ToRoutineResponseMessage_ForRoutine_Invoked_Then_It_Should_Return_Result(HttpStatusCode responseStatusCode, string upn, InterfaceType @interface, string routine, params TargetType[] targets) { var response = new Mock <Response>(); response.SetupGet(p => p.Status).Returns((int)responseStatusCode); var correlationId = Guid.NewGuid(); var spanId = Guid.NewGuid(); var request = new RoutineRequestMessage() { Upn = upn, CorrelationId = correlationId, Interface = @interface, SpanId = spanId, Routine = routine, Targets = targets.ToList(), }; var eventId = Guid.NewGuid(); var routineId = Guid.NewGuid(); var statusCode = HttpStatusCode.OK; var result = AzureResponseExtensions.ToRoutineResponseMessage(response.Object, request, eventId, routineId, statusCode); result.Should().BeOfType <ObjectResult>(); result.Value.Should().BeOfType <RoutineResponseMessage>(); result.StatusCode.Should().Be((int)statusCode); (result.Value as RoutineResponseMessage).Upn.Should().Be(upn); (result.Value as RoutineResponseMessage).CorrelationId.Should().Be(correlationId); (result.Value as RoutineResponseMessage).Interface.Should().Be(@interface); (result.Value as RoutineResponseMessage).SpanId.Should().Be(spanId); (result.Value as RoutineResponseMessage).EventId.Should().Be(eventId); (result.Value as RoutineResponseMessage).RoutineId.Should().Be(routineId); (result.Value as RoutineResponseMessage).Routine.Should().Be(routine); (result.Value as RoutineResponseMessage).Targets.Should().BeEquivalentTo(targets.ToList()); }
public void Given_Error_StatusCode_When_ToRoutineResponseMessage_ForRoutine_Invoked_Then_It_Should_Return_ErrorObjectResult(HttpStatusCode responseStatusCode, string reasonPhrase) { var response = new Mock <Response>(); response.SetupGet(p => p.Status).Returns((int)responseStatusCode); response.SetupGet(p => p.ReasonPhrase).Returns(reasonPhrase); var request = new RoutineRequestMessage(); var eventId = Guid.NewGuid(); var routineId = Guid.NewGuid(); var statusCode = HttpStatusCode.OK; var result = AzureResponseExtensions.ToRoutineResponseMessage(response.Object, request, eventId, routineId, statusCode); result.Should().BeOfType <ObjectResult>(); result.Value.Should().BeOfType <ErrorResponseMessage>(); result.StatusCode.Should().Be((int)responseStatusCode); (result.Value as ErrorResponseMessage).Message.Should().Be($"{(int)responseStatusCode}: {reasonPhrase}"); }
/// <summary> /// Gets the <see cref="ObjectResult"/> object containing the <see cref="RoutineResponseMessage"/> object. /// </summary> /// <param name="response"><see cref="Response"/> object.</param> /// <param name="request"><see cref="RoutineRequestMessage"/> object.</param> /// <param name="eventId">Event ID.</param> /// <param name="routineId">Routine ID.</param> /// <param name="httpStatusCode"><see cref="HttpStatusCode"/> value.</param> /// <returns>Returns the <see cref="ObjectResult"/> object.</returns> public static ObjectResult ToRoutineResponseMessage(this Response response, RoutineRequestMessage request, Guid eventId, Guid routineId, HttpStatusCode httpStatusCode = HttpStatusCode.OK) { if (response.Status >= (int)HttpStatusCode.BadRequest) { var result = new ErrorObjectResult() { Upn = request.Upn, CorrelationId = request.CorrelationId, Interface = request.Interface, SpanId = request.SpanId, EventId = eventId, Message = $"{response.Status}: {response.ReasonPhrase}", StatusCode = response.Status, }; return(result); } var msg = new RoutineResponseMessage() { Upn = request.Upn, CorrelationId = request.CorrelationId, Interface = request.Interface, SpanId = request.SpanId, EventId = eventId, RoutineId = routineId, Routine = request.Routine, Targets = request.Targets, }; return(new ObjectResult(msg) { StatusCode = (int)httpStatusCode }); }