public async Task TryInvokeAsync_ReturnsTupleContainingTrueAndNullIfHttpResponseHas200StatusCodeAndTypeParameterIsVoid() { // Arrange var dummyInvocationRequest = new InvocationRequest(ModuleSourceType.Cache, "dummyModuleSource"); Mock <HttpContent> mockRequestHttpContent = _mockRepository.Create <HttpContent>(); // HttpContent is an abstract class Mock <IHttpContentFactory> mockHttpContentFactory = _mockRepository.Create <IHttpContentFactory>(); mockHttpContentFactory.Setup(h => h.Create(dummyInvocationRequest)).Returns(mockRequestHttpContent.Object); var dummyHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK); Mock <IHttpClientService> mockHttpClientService = _mockRepository.Create <IHttpClientService>(); mockHttpClientService.Setup(h => h.SendAsync(It.Is <HttpRequestMessage>(hr => ReferenceEquals(hr.Content, mockRequestHttpContent.Object)), HttpCompletionOption.ResponseHeadersRead, CancellationToken.None)). ReturnsAsync(dummyHttpResponseMessage); #pragma warning disable IDE0067 ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(httpContentFactory: mockHttpContentFactory.Object, httpClientService: mockHttpClientService.Object); #pragma warning disable IDE0067 // Act (bool success, Void value) = await testSubject.ExposedTryInvokeAsync <Void>(dummyInvocationRequest, CancellationToken.None).ConfigureAwait(false); // Assert _mockRepository.VerifyAll(); Assert.True(success); Assert.Null(value); }
public async Task TryInvokeAsync_ThrowsInvocationExceptionIfHttpResponseHasAnUnexpectedStatusCode() { // Arrange var dummyInvocationRequest = new InvocationRequest(ModuleSourceType.Cache, "dummyModuleSource"); Mock <HttpContent> mockRequestHttpContent = _mockRepository.Create <HttpContent>(); // HttpContent is an abstract class Mock <IHttpContentFactory> mockHttpContentFactory = _mockRepository.Create <IHttpContentFactory>(); mockHttpContentFactory.Setup(h => h.Create(dummyInvocationRequest)).Returns(mockRequestHttpContent.Object); const HttpStatusCode dummyHttpStatusCode = HttpStatusCode.NoContent; var dummyHttpResponseMessage = new HttpResponseMessage(dummyHttpStatusCode); Mock <IHttpClientService> mockHttpClientService = _mockRepository.Create <IHttpClientService>(); mockHttpClientService.Setup(h => h.SendAsync(It.Is <HttpRequestMessage>(hr => ReferenceEquals(hr.Content, mockRequestHttpContent.Object)), HttpCompletionOption.ResponseHeadersRead, CancellationToken.None)). ReturnsAsync(dummyHttpResponseMessage); #pragma warning disable IDE0067 ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(httpContentFactory: mockHttpContentFactory.Object, httpClientService: mockHttpClientService.Object); #pragma warning disable IDE0067 // Act and assert InvocationException result = await Assert.ThrowsAsync <InvocationException>(() => testSubject.ExposedTryInvokeAsync <string>(dummyInvocationRequest, CancellationToken.None)).ConfigureAwait(false); // Assert _mockRepository.VerifyAll(); Assert.Equal(string.Format(Strings.InvocationException_HttpNodeJSService_UnexpectedStatusCode, dummyHttpStatusCode), result.Message); }
public async Task TryInvokeAsync_ThrowsInvocationExceptionIfHttpResponseHas500StatusCode() { // Arrange var dummyInvocationRequest = new InvocationRequest(ModuleSourceType.Cache, "dummyModuleSource"); Mock <HttpContent> mockRequestHttpContent = _mockRepository.Create <HttpContent>(); // HttpContent is an abstract class Mock <IHttpContentFactory> mockHttpContentFactory = _mockRepository.Create <IHttpContentFactory>(); mockHttpContentFactory.Setup(h => h.Create(dummyInvocationRequest)).Returns(mockRequestHttpContent.Object); var dummyHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StreamContent(new MemoryStream()) }; Mock <IHttpClientService> mockHttpClientService = _mockRepository.Create <IHttpClientService>(); mockHttpClientService.Setup(h => h.SendAsync(It.Is <HttpRequestMessage>(hr => ReferenceEquals(hr.Content, mockRequestHttpContent.Object)), HttpCompletionOption.ResponseHeadersRead, CancellationToken.None)). ReturnsAsync(dummyHttpResponseMessage); var dummyInvocationError = new InvocationError("dummyErrorMessage", "dummyErrorStack"); Mock <IJsonService> mockJsonService = _mockRepository.Create <IJsonService>(); mockJsonService.Setup(j => j.DeserializeAsync <InvocationError>(It.IsAny <Stream>(), CancellationToken.None)).ReturnsAsync(dummyInvocationError); #pragma warning disable IDE0067 ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(httpContentFactory: mockHttpContentFactory.Object, httpClientService: mockHttpClientService.Object, jsonService: mockJsonService.Object); #pragma warning disable IDE0067 // Act and assert InvocationException result = await Assert.ThrowsAsync <InvocationException>(() => testSubject.ExposedTryInvokeAsync <string>(dummyInvocationRequest, CancellationToken.None)).ConfigureAwait(false); _mockRepository.VerifyAll(); Assert.Equal(dummyInvocationError.ErrorMessage + Environment.NewLine + dummyInvocationError.ErrorStack, result.Message, ignoreLineEndingDifferences: true); }
public async Task TryInvokeAsync_ReturnsTupleContainingTrueAndAnObjectIfHttpResponseHas200StatusCodeAndTypeParameterIsAnObject() { // Arrange var dummyInvocationRequest = new InvocationRequest(ModuleSourceType.Cache, moduleSource: "dummyModuleSource"); Mock <HttpContent> mockRequestHttpContent = _mockRepository.Create <HttpContent>(); // HttpContent is an abstract class Mock <IHttpContentFactory> mockHttpContentFactory = _mockRepository.Create <IHttpContentFactory>(); mockHttpContentFactory.Setup(h => h.Create(dummyInvocationRequest)).Returns(mockRequestHttpContent.Object); var dummyHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(new MemoryStream()) }; Mock <IHttpClientService> mockHttpClientService = _mockRepository.Create <IHttpClientService>(); mockHttpClientService.Setup(h => h.SendAsync(It.Is <HttpRequestMessage>(hr => ReferenceEquals(hr.Content, mockRequestHttpContent.Object)), HttpCompletionOption.ResponseHeadersRead, CancellationToken.None)). ReturnsAsync(dummyHttpResponseMessage); var dummyObject = new DummyClass(); Mock <IJsonService> mockJsonService = _mockRepository.Create <IJsonService>(); mockJsonService.Setup(j => j.Deserialize <DummyClass>(It.IsAny <JsonTextReader>())).Returns(dummyObject); ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(httpContentFactory: mockHttpContentFactory.Object, httpClientService: mockHttpClientService.Object, jsonService: mockJsonService.Object); // Act (bool success, DummyClass value) = await testSubject.ExposedTryInvokeAsync <DummyClass>(dummyInvocationRequest, CancellationToken.None).ConfigureAwait(false); // Assert _mockRepository.VerifyAll(); Assert.True(success); Assert.Same(dummyObject, value); }
public async Task TryInvokeAsync_ReturnsTupleContainingTrueAndAStringIfHttpResponseHas200StatusCodeAndTypeParameterIsString() { // Arrange var dummyInvocationRequest = new InvocationRequest(ModuleSourceType.Cache, moduleSource: "dummyModuleSource"); Mock <HttpContent> mockRequestHttpContent = _mockRepository.Create <HttpContent>(); // HttpContent is an abstract class Mock <IHttpContentFactory> mockHttpContentFactory = _mockRepository.Create <IHttpContentFactory>(); mockHttpContentFactory.Setup(h => h.Create(dummyInvocationRequest)).Returns(mockRequestHttpContent.Object); const string dummyValue = "dummyValue"; var dummyMemoryStream = new MemoryStream(Encoding.UTF8.GetBytes(dummyValue)); var dummyHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(dummyMemoryStream) }; Mock <IHttpClientService> mockHttpClientService = _mockRepository.Create <IHttpClientService>(); mockHttpClientService.Setup(h => h.SendAsync(It.Is <HttpRequestMessage>(hr => ReferenceEquals(hr.Content, mockRequestHttpContent.Object)), HttpCompletionOption.ResponseHeadersRead, CancellationToken.None)). ReturnsAsync(dummyHttpResponseMessage); ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(httpContentFactory: mockHttpContentFactory.Object, httpClientService: mockHttpClientService.Object); // Act (bool success, string value) = await testSubject.ExposedTryInvokeAsync <string>(dummyInvocationRequest, CancellationToken.None).ConfigureAwait(false); // Assert _mockRepository.VerifyAll(); Assert.True(success); Assert.Equal(dummyValue, value); }
public async Task TryInvokeAsync_ReturnsTupleContainingFalseAndDefaultIfHttpResponseHas404StatusCode() { // Arrange var dummyInvocationRequest = new InvocationRequest(ModuleSourceType.Cache, moduleSource: "dummyModuleSource"); Mock <HttpContent> mockRequestHttpContent = _mockRepository.Create <HttpContent>(); // HttpContent is an abstract class Mock <IHttpContentFactory> mockHttpContentFactory = _mockRepository.Create <IHttpContentFactory>(); mockHttpContentFactory.Setup(h => h.Create(dummyInvocationRequest)).Returns(mockRequestHttpContent.Object); var dummyHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.NotFound); Mock <IHttpClientService> mockHttpClientService = _mockRepository.Create <IHttpClientService>(); mockHttpClientService.Setup(h => h.SendAsync(It.Is <HttpRequestMessage>(hr => ReferenceEquals(hr.Content, mockRequestHttpContent.Object)), HttpCompletionOption.ResponseHeadersRead, CancellationToken.None)). ReturnsAsync(dummyHttpResponseMessage); using (ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(httpContentFactory: mockHttpContentFactory.Object, httpClientService: mockHttpClientService.Object)) { // Act (bool success, string value) = await testSubject.ExposedTryInvokeAsync <string>(dummyInvocationRequest, CancellationToken.None).ConfigureAwait(false); // Assert _mockRepository.VerifyAll(); Assert.False(success); Assert.Null(value); } }
public void OnConnectionEstablishedMessageReceived_ExtractsEndPoint(string dummyIP, string dummyPort, string expectedResult) { // Arrange string dummyConnectionEstablishedMessage = $"[Jering.Javascript.NodeJS: Listening on IP - {dummyIP} Port - {dummyPort}]"; ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(); // Act testSubject.ExposedOnConnectionEstablishedMessageReceived(dummyConnectionEstablishedMessage); // Assert Assert.Equal(expectedResult, testSubject.Endpoint.AbsoluteUri); }
public void OnConnectionEstablishedMessageReceived_ExtractsEndPoint(string dummyIP, string dummyPort, string expectedResult) { // Arrange var loggerStringBuilder = new StringBuilder(); string dummyConnectionEstablishedMessage = $"[Jering.Javascript.NodeJS: Listening on IP - {dummyIP} Port - {dummyPort}]"; ExposedHttpNodeJSService testSubject = CreateHttpNodeJSService(loggerStringBuilder: loggerStringBuilder); // Act testSubject.ExposedOnConnectionEstablishedMessageReceived(dummyConnectionEstablishedMessage); // Assert Assert.Equal(expectedResult, testSubject._endpoint.AbsoluteUri); Assert.Contains(string.Format(Strings.LogInformation_HttpEndpoint, expectedResult), loggerStringBuilder.ToString()); }