Beispiel #1
0
        private void CompleteOptions(RequestOptions options, GetStatementRequest request)
        {
            if (request.StatementId.HasValue)
            {
                options.QueryStringParameters.Add("statementId", request.StatementId.Value.ToString());
            }
            if (request.VoidedStatementId.HasValue)
            {
                options.QueryStringParameters.Add("voidedStatementId", request.VoidedStatementId.Value.ToString());
            }

            foreach (string language in request.GetAcceptedLanguages())
            {
                options.CustomHeaders.Add("Accept-Language", language);
            }
        }
Beispiel #2
0
        public async Task cannot_get_single_statement_when_it_does_not_exist()
        {
            // Arrange
            var request = new GetStatementRequest()
            {
                StatementId = STATEMENT_ID_2
            };

            this._mockHttp
            .When(HttpMethod.Get, this.GetApiUrl("statements"))
            .WithQueryString("statementId", STATEMENT_ID_2.ToString())
            .WithHeaders("Accept-Language", "*")
            .Respond(HttpStatusCode.NotFound);

            // Act
            Statement statement = await this._client.Statements.Get(request);

            // Assert
            statement.Should().BeNull();
        }
Beispiel #3
0
        public async Task can_get_single_statement()
        {
            // Arrange
            var request = new GetStatementRequest()
            {
                StatementId = STATEMENT_ID
            };

            this._mockHttp
            .When(HttpMethod.Get, this.GetApiUrl("statements"))
            .WithQueryString("statementId", STATEMENT_ID.ToString())
            .WithHeaders("Accept-Language", "*")
            .Respond(HttpStatusCode.OK, "application/json", this.ReadDataFile(Constants.STATEMENT_FULL));

            // Act
            Statement statement = await this._client.Statements.Get(request);

            // Assert
            statement.Should().NotBeNull();
            statement.Id.Should().Be(STATEMENT_ID);
        }
Beispiel #4
0
        public void cannot_get_single_statement_when_unauthorized()
        {
            // Arrange
            var request = new GetStatementRequest()
            {
                StatementId = STATEMENT_ID
            };

            this._mockHttp
            .When(HttpMethod.Get, this.GetApiUrl("statements"))
            .WithQueryString("statementId", STATEMENT_ID.ToString())
            .WithHeaders("Accept-Language", "*")
            .Respond(HttpStatusCode.Forbidden);

            // Act
            Func <Task> action = async() =>
            {
                await this._client.Statements.Get(request);
            };

            // Assert
            action.ShouldThrow <ForbiddenException>();
        }
Beispiel #5
0
        async Task <Statement> IStatementsApi.Get(GetStatementRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            request.Validate();

            var options = new RequestOptions(ENDPOINT);

            this.CompleteOptions(options, request);

            try
            {
                HttpResponseMessage response = await this._client.GetJson(options);

                return(await response.Content.ReadAsAsync <Statement>(new[] { new StrictJsonMediaTypeFormatter() }));
            }
            catch (NotFoundException)
            {
                return(null);
            }
        }