コード例 #1
0
            public async Task CalculatesSignatureForExpectedRequest()
            {
                var compositionRequest = new SigningStringCompositionRequest();
                HttpRequestForSigning interceptedRequest         = null;
                SigningSettings       interceptedSigningSettings = null;
                DateTimeOffset?       interceptedTimeOfSigning   = null;
                TimeSpan?interceptedExpires = null;

                A.CallTo(() => _stringCompositionRequestFactory.CreateForSigning(A <HttpRequestForSigning> ._, A <SigningSettings> ._, A <DateTimeOffset?> ._, A <TimeSpan?> ._))
                .Invokes(call => {
                    interceptedRequest         = call.GetArgument <HttpRequestForSigning>(0);
                    interceptedSigningSettings = call.GetArgument <SigningSettings>(1);
                    interceptedTimeOfSigning   = call.GetArgument <DateTimeOffset?>(2);
                    interceptedExpires         = call.GetArgument <TimeSpan?>(3);
                })
                .Returns(compositionRequest);

                var composedString = "{the composed string}";

                A.CallTo(() => _signingStringComposer.Compose(A <SigningStringCompositionRequest> ._))
                .Returns(composedString);

                await _sut.CreateSignature(_httpRequestMessage, _settings, _timeOfSigning, _expires);

                interceptedRequest.Should().BeEquivalentTo(new HttpRequestForSigning {
                    Method     = HttpMethod.Post,
                    RequestUri = "http://dalion.eu/api/resource/id1".ToUri(),
                    Headers    = new HeaderDictionary(new Dictionary <string, StringValues> {
                        { "H1", "v1" }
                    })
                });
                interceptedSigningSettings.Should().Be(_settings);
                interceptedTimeOfSigning.Should().Be(_timeOfSigning);
                interceptedExpires.Should().Be(_expires);
            }
コード例 #2
0
            public async Task ReturnsSignatureWithExpectedNonceValue()
            {
                var compositionRequest = new SigningStringCompositionRequest {
                    Nonce = _nonce
                };

                A.CallTo(() => _stringCompositionRequestFactory.CreateForSigning(A <HttpRequestForSigning> ._, A <SigningSettings> ._, A <DateTimeOffset?> ._, A <TimeSpan?> ._))
                .Returns(compositionRequest);

                var actual = await _sut.CreateSignature(_httpRequestMessage, _settings, _timeOfSigning, _expires);

                actual.Nonce.Should().Be(_nonce);
            }
コード例 #3
0
            public async Task ReturnsSignatureWithExpectedHeaders()
            {
                var compositionRequest = new SigningStringCompositionRequest {
                    HeadersToInclude = _settings.Headers
                };

                A.CallTo(() => _stringCompositionRequestFactory.CreateForSigning(A <HttpRequestForSigning> ._, A <SigningSettings> ._, A <DateTimeOffset?> ._, A <TimeSpan?> ._))
                .Returns(compositionRequest);

                var actual = await _sut.CreateSignature(_httpRequestMessage, _settings, _timeOfSigning, _expires);

                actual.Headers.Should().BeEquivalentTo(
                    new[] {
                    HeaderName.PredefinedHeaderNames.RequestTarget,
                    HeaderName.PredefinedHeaderNames.Date,
                    new HeaderName("dalion_app_id")
                },
                    options => options.WithStrictOrdering());
            }
            public async Task WhenEverythingIsSpecified_CallsSigningStringComposerWithCreatedCompositionRequest()
            {
                var compositionRequest = new SigningStringCompositionRequest {
                    Request               = _signedRequest.ToHttpRequestForSignatureString(),
                    Expires               = _signature.Expires.Value - _signature.Created.Value,
                    HeadersToInclude      = _signature.Headers,
                    RequestTargetEscaping = _client.RequestTargetEscaping,
                    TimeOfComposing       = _now
                };

                A.CallTo(() => _stringCompositionRequestFactory.CreateForVerification(_signedRequest, _client, _signature))
                .Returns(compositionRequest);

                SigningStringCompositionRequest interceptedRequest = null;

                _composeCall().Invokes(call => interceptedRequest = call.GetArgument <SigningStringCompositionRequest>(0))
                .Returns(_composedSignatureString);

                await _method(_signedRequest, _signature, _client);

                interceptedRequest.Should().Be(compositionRequest);
            }