public void AuthenticateIfTokenExpiredAsync_TokenHasExpired_ErrorResponse_TikkieErrorResponseExceptionExpected()
        {
            // Arrange
            // Mocks Tikkie Configuration
            var mockTikkieConfiguration = new Mock <ITikkieConfiguration>();

            mockTikkieConfiguration
            .Setup(m => m.RSAKey)
            .Returns(new RSACryptoServiceProvider());
            mockTikkieConfiguration
            .Setup(m => m.ApiBaseUrl)
            .Returns("https://tikkie.unittests");

            // Mocks HttpClient
            var errorResponse = new ErrorResponses()
            {
                ErrorResponseArray = new[] { new ErrorResponse() }
            };
            var mockHttp = new MockHttpMessageHandler();

            mockHttp
            .When($"{mockTikkieConfiguration.Object.ApiBaseUrl}{UrlProvider.AuthenticationUrlSuffix}")
            .Respond(HttpStatusCode.BadRequest, "application/json", JsonConvert.SerializeObject(errorResponse));

            // Sets up authorization token
            var sut = CreateSut(mockTikkieConfiguration.Object, () => mockHttp.ToHttpClient(), new AuthorizationToken());

            // Act + Assert
            Assert.ThrowsAsync <TikkieErrorResponseException>(async() => await sut.AuthenticateIfTokenExpiredAsync());
        }
Пример #2
0
        public ActionResult <string> GetUserSubmission(string userName, string antName)
        {
            string fileName = $"{userName}_{antName}";

            if (_fileService.UserSubmissionExists(fileName))
            {
                return(Ok(_fileService.GetUserSubmission(antName, userName)));
            }
            return(NotFound(new ErrorResponse {
                ErrorCode = 404, ErrorMessage = ErrorResponses.SubmissionNotFound($"{userName}_{antName}")
            }));
        }
Пример #3
0
        public ActionResult DeleteSubmission(string antName, string userName)
        {
            string fileName = $"{userName}_{antName}";

            if (_fileService.UserSubmissionExists(fileName))
            {
                _fileService.DeleteUserSubmission(antName, userName);
                return(NoContent());
            }
            return(NotFound(new ErrorResponse {
                ErrorCode = 404, ErrorMessage = ErrorResponses.SubmissionNotFound($"{userName}_{antName}")
            }));
        }
Пример #4
0
        public void PostOrExceptionAsync_ErrorResponse_CallsAuthentication_AddsHeaders_TikkieErrorResponseExceptionExpected()
        {
            // Arrange
            var requestUrlSuffix = "/test/post";
            var jsonRequest      = JsonConvert.SerializeObject(new TestRequest());
            var content          = new StringContent(jsonRequest, Encoding.UTF8, "application/json");

            // Mock Tikkie Configuration
            var mockTikkieConfiguration = new Mock <ITikkieConfiguration>();

            mockTikkieConfiguration
            .Setup(m => m.ApiBaseUrl)
            .Returns("https://tikkie.unittests");
            mockTikkieConfiguration
            .Setup(m => m.ApiKey)
            .Returns("AnAPIKey");

            // Mock Authentication Requests Handler
            var mockAuthenticationRequestsHandler = new Mock <IAuthenticationRequestsHandler>();

            mockAuthenticationRequestsHandler
            .Setup(m => m.AuthorizationTokenInfo)
            .Returns(new AuthorizationToken()
            {
                TokenType   = "Bearer",
                AccessToken = "tHeToKen"
            });

            // Mock Http Client
            var errorResponse = new ErrorResponses()
            {
                ErrorResponseArray = new[] { new ErrorResponse() }
            };
            var mockHttp = new MockHttpMessageHandler();

            mockHttp
            .When($"{mockTikkieConfiguration.Object.ApiBaseUrl}{requestUrlSuffix}")
            .Respond(HttpStatusCode.BadRequest, "application/json", JsonConvert.SerializeObject(errorResponse));
            var httpClient = mockHttp.ToHttpClient();

            var sut = CreateSut(mockTikkieConfiguration.Object, mockAuthenticationRequestsHandler.Object, () => httpClient);

            // Act + Assert
            Assert.ThrowsAsync <TikkieErrorResponseException>(async() => await sut.PostOrExceptionAsync <TestResponse>(requestUrlSuffix, content));
            mockAuthenticationRequestsHandler.Verify(m => m.AuthenticateIfTokenExpiredAsync(), Times.Once);
            Assert.IsTrue(httpClient.DefaultRequestHeaders.Contains("Authorization"));
            Assert.IsTrue(httpClient.DefaultRequestHeaders.Contains("API-Key"));
        }
Пример #5
0
        protected override IActionResult CreateResult(HttpContext context)
        {
            var result = ErrorResponses.MethodNotAllowed(context, Code, Message);

            return(allowedMethods.Length == 0 ? result : new AllowHeaderResult(result, allowedMethods));
        }
Пример #6
0
        internal static dynamic DoAPIRequest(string Baseurl, string ApiPath, string token, string requestBody, string RequestType, bool isObject = false)
        {
            if (!string.IsNullOrEmpty(Baseurl) && !string.IsNullOrEmpty(ApiPath) && !string.IsNullOrEmpty(token) && !string.IsNullOrEmpty(requestBody))
            {
                ErrorResponses error = new ErrorResponses();
                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token);
                    var response = client.PostAsync(Baseurl + ApiPath, new StringContent(requestBody)).Result;
                    var content  = response.Content.ReadAsStringAsync().Result;
                    if (content.Contains("statusCode"))
                    {
                        error = JsonConvert.DeserializeObject <ErrorResponses>(content);
                    }

                    if (!string.IsNullOrEmpty(content) && error.statusCode != 0 && (error.statusCode != 200 || error.statusCode != 201))
                    {
                        throw new System.ArgumentException(error.statusCode + " Response Received With " + error.message);
                    }

                    else if (!string.IsNullOrEmpty(content) && content.Contains("keyword"))
                    {
                        if (isObject)
                        {
                            return(JsonConvert.DeserializeObject <KeywordsResponse[][]>(content));
                        }
                        else
                        {
                            return(content);
                        }
                    }
                    else if (!string.IsNullOrEmpty(content) && content.Contains("uniqueFeatures"))
                    {
                        if (isObject)
                        {
                            return(JsonConvert.DeserializeObject <List <ClassifierInformationResponse> >(content));
                        }
                        else
                        {
                            return(content);
                        }
                    }
                    else if (!string.IsNullOrEmpty(content) && content.Contains("textCoverage"))
                    {
                        if (isObject)
                        {
                            return(JsonConvert.DeserializeObject <ClassificationResponse[]>(content)[0]);
                        }
                        else
                        {
                            return(content);
                        }
                    }
                    else
                    {
                        return(true);
                    }
                }
            }
            else
            {
                throw new System.ArgumentException("Baseurl,ApiPath,Token,RequestBody cant be null or empty!");
            }
        }
 protected override IActionResult CreateResult(HttpContext context) =>
 ErrorResponses.BadRequest(context, Code, Message);