예제 #1
0
        public void GetRestRequest_IfJsonSerializerIsNotSet_ReturnsRequestWithDefaultSerializer(RestClientParameters restClientParameters)
        {
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            var result = restClientWrapper.GetRestRequest(restClientParameters);

            Assert.Null(result.JsonSerializer);
            Assert.Null(result.XmlSerializer);
        }
예제 #2
0
        public void GetRestClient_IfUrlIsInvalid_ThrowsException(string baseUrl)
        {
            var wrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(It.IsAny <RestClientCredentials>());
            var restClientParameters = new RestClientParameters {
                BaseUrl = baseUrl
            };

            Assert.Catch <Exception>(() => wrapper.GetRestClient(restClientParameters));
        }
예제 #3
0
        public void GetRestRequest_IfRequestMethodExists_ReturnsRequestWithCorrectMethod(
            RestClientParameters restClientParameters,
            Method expectedMethod)
        {
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            var result = restClientWrapper.GetRestRequest(restClientParameters);

            Assert.AreEqual(expectedMethod, result.Method);
        }
예제 #4
0
        public void GetRestRequest_IfDataFormatDoesNotExist_ThrowsException(
            DataFormat format)
        {
            var restClientParameters = new RestClientParameters {
                RequestDataFormat = format
            };
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            Assert.Catch(() => restClientWrapper.GetRestRequest(restClientParameters));
        }
예제 #5
0
        public void GetRestRequest_IfDataFormatExists_ReturnsRequestWithCorrectRequestFormat(
            RestClientParameters restClientParameters,
            RestSharp.DataFormat expectedFormat)
        {
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            var result = restClientWrapper.GetRestRequest(restClientParameters);

            Assert.AreEqual(expectedFormat, result.RequestFormat);
        }
예제 #6
0
        public void GetRestRequest_IfRequestMethodDoesNotExist_ThrowsException(
            RequestMethod method)
        {
            var restClientParameters = new RestClientParameters {
                RequestMethod = method
            };
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            Assert.Catch(() => restClientWrapper.GetRestRequest(restClientParameters));
        }
예제 #7
0
        public void GetRestRequest_IfJsonSerializerIsSet_ReturnsRequestWithCustomSerializer(RestClientParameters restClientParameters)
        {
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            var result = restClientWrapper.GetRestRequest(restClientParameters);

            Assert.AreEqual(RestSharp.DataFormat.Json, result.RequestFormat);
            Assert.AreEqual(restClientParameters.RequestDataSerializer, result.JsonSerializer);
            Assert.Null(result.XmlSerializer);
        }
예제 #8
0
        public void GetRestClient_IDataFormatDoesNotExist_ThrowsException(DataFormat responseDataFormat)
        {
            var wrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(It.IsAny <RestClientCredentials>());
            var restClientParameters = new RestClientParameters
            {
                BaseUrl            = TestValidUrl,
                ResponseDataFormat = responseDataFormat,
            };

            Assert.Catch(() => wrapper.GetRestClient(restClientParameters));
        }
예제 #9
0
        public void GetRestRequest_ReturnsRequestWithCorrectUrl(string url, string expectedResource)
        {
            var restClientParameters = new RestClientParameters {
                RequestUrl = url,
            };
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            var result = restClientWrapper.GetRestRequest(restClientParameters);

            Assert.AreEqual(expectedResource, result.Resource);
        }
예제 #10
0
        public void GetRestClient_IfUrlIsValid_ReturnsCorrectlyWithInitializedUrl(string baseUrl)
        {
            var wrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(It.IsAny <RestClientCredentials>());
            var restClientParameters = new RestClientParameters {
                BaseUrl = baseUrl
            };

            var result = wrapper.GetRestClient(restClientParameters);

            Assert.AreEqual(restClientParameters.BaseUrl, result.BaseUrl.OriginalString);
        }
예제 #11
0
        public void Execute_IfResponseNotWithServerError_TriesToExecuteOnce(RestResponse response)
        {
            var request    = It.IsAny <IRestRequest>();
            var clientMock = new Mock <RestClient>();

            clientMock.Setup(x => x.Execute(request)).Returns(response);
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(100);

            restClientWrapper.Execute(clientMock.Object, request);

            clientMock.Verify(mock => mock.Execute(request), Times.Once);
        }
예제 #12
0
        public void GetRestClient_IfAuthenticatorCannotBeCreated_ReturnsCorrectlyWithAuthenticatorAsNull(
            RestClientCredentials credentials)
        {
            var wrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(credentials);
            var restClientParameters = new RestClientParameters {
                BaseUrl = TestValidUrl
            };

            var result = wrapper.GetRestClient(restClientParameters);

            Assert.Null(result.Authenticator);
        }
예제 #13
0
        public void GenericExecute_IfMaxAttemptsCountIsNotSet_IfExceptionInsteadOfResponse_TriesToExecuteAtLeastTwiceAndThrowsException()
        {
            var request    = It.IsAny <IRestRequest>();
            var clientMock = new Mock <RestClient>();

            clientMock.Setup(x => x.Execute <object>(request)).Callback(() => throw new Exception());
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            Assert.Catch(() => restClientWrapper.Execute <object>(clientMock.Object, request));

            clientMock.Verify(mock => mock.Execute <object>(request), Times.AtLeast(2));
        }
예제 #14
0
        public void Execute_IfMaxAttemptsCountIsSet_IfResponseFailedWithServerError_TriesToExecuteMaxCountTimes(RestResponse response, int maxCount, int expectedCount)
        {
            var request    = It.IsAny <IRestRequest>();
            var clientMock = new Mock <RestClient>();

            clientMock.Setup(x => x.Execute(request)).Returns(response);
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(maxCount);

            restClientWrapper.Execute(clientMock.Object, request);

            clientMock.Verify(mock => mock.Execute(request), Times.Exactly(expectedCount));
        }
예제 #15
0
        public void Execute_IfMaxAttemptsCountIsNotSet_IfResponseFailedWithServerError_TriesToExecuteAtLeastTwice(RestResponse response)
        {
            var request    = It.IsAny <IRestRequest>();
            var clientMock = new Mock <RestClient>();

            clientMock.Setup(x => x.Execute(request)).Returns(response);
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            restClientWrapper.Execute(clientMock.Object, request);

            clientMock.Verify(mock => mock.Execute(request), Times.AtLeast(2));
        }
예제 #16
0
        public void GenericExecute_IfMaxAttemptsCountIsSet_IfExceptionInsteadOfResponse_TriesToExecuteMaxCountTimesAndThrowsException(
            int maxCount,
            int expectedCount)
        {
            var request    = It.IsAny <IRestRequest>();
            var clientMock = new Mock <RestClient>();

            clientMock.Setup(x => x.Execute <object>(request)).Callback(() => throw new Exception());
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(maxCount);

            Assert.Catch(() => restClientWrapper.Execute <object>(clientMock.Object, request));

            clientMock.Verify(mock => mock.Execute <object>(request), Times.Exactly(expectedCount));
        }
예제 #17
0
        public void GetRestRequest_ReturnsRequestWithCorrectBody(
            RestClientParameters restClientParameters,
            string expectedBodyType)
        {
            var expectedBodyCount = restClientParameters.RequestBody != null ? 1 : 0;
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            var result = restClientWrapper.GetRestRequest(restClientParameters);

            var body = result.Parameters.Where(x => x.Type == ParameterType.RequestBody);

            Assert.AreEqual(expectedBodyCount, body.Count());
            Assert.AreEqual(expectedBodyType, body.FirstOrDefault()?.ContentType);
        }
예제 #18
0
        public void GetRestClient_IfAuthenticatorCanBeCreated_ReturnsCorrectlyWithAuthenticator(
            RestClientCredentials credentials,
            IAuthenticator expectedAuthenticator,
            string expectedHeader)
        {
            var wrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper(credentials);
            var restClientParameters = new RestClientParameters {
                BaseUrl = TestValidUrl
            };
            var request = new RestRequest();

            var result = wrapper.GetRestClient(restClientParameters);

            result.Authenticator?.Authenticate(It.IsAny <IRestClient>(), request);

            Assert.IsInstanceOf(expectedAuthenticator.GetType(), result.Authenticator);
            var authParam = request.Parameters.FirstOrDefault(x =>
                                                              x.Type == ParameterType.HttpHeader && x.Name == "Authorization");

            Assert.NotNull(authParam);
            Assert.AreEqual(expectedHeader, authParam.Value);
        }
예제 #19
0
        public void GetRestRequest_ReturnsRequestWithCorrectQueryParams(RestClientParameters restClientParameters)
        {
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            var result = restClientWrapper.GetRestRequest(restClientParameters);

            var parameters    = result.Parameters.Where(x => x.Type == ParameterType.QueryString);
            var expectedCount = restClientParameters.RequestQueryParameters?.Count ?? 0;

            Assert.AreEqual(expectedCount, parameters.Count());
            if (expectedCount <= 0)
            {
                return;
            }

            foreach (var keyValue in restClientParameters.RequestQueryParameters)
            {
                var requestParameter = parameters.FirstOrDefault(x => x.Name == keyValue.Key);
                Assert.NotNull(requestParameter);
                Assert.AreEqual(keyValue.Value, requestParameter.Value);
            }
        }
예제 #20
0
        public void GetRestClient_IfParametersIsNull_ThrowsException()
        {
            var restClientWrapper = new SDK.Utilities.RestClientWrapper.RestClientWrapper();

            Assert.Catch(() => restClientWrapper.GetRestClient(null));
        }