Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
            }
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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());
        }