示例#1
0
        public static async Task AddAuthenticationInfo_WithRequestAndAuthInfo_WillAddCorrectInformation(string method)
        {
            // Arrange
            var testData = await method.FromResourceV2();

            var expectedMAuthHeader = testData.MAuthHeaderV2;
            var version             = MAuthVersion.MWSV2;
            var mAuthCore           = new MAuthCoreV2();

            var authInfo = new PrivateKeyAuthenticationInfo()
            {
                ApplicationUuid = testData.ApplicationUuid,
                SignedTime      = testData.SignedTime,
                PrivateKey      = TestExtensions.ClientPrivateKey
            };

            // Act
            var actual = await mAuthCore.AddAuthenticationInfo(testData.ToHttpRequestMessage(version), authInfo);

            // Assert
            Assert.Equal(expectedMAuthHeader, actual.Headers.GetFirstValueOrDefault <string>(Constants.MAuthHeaderKeyV2));
            Assert.Equal(
                authInfo.SignedTime.ToUnixTimeSeconds(),
                actual.Headers.GetFirstValueOrDefault <long>(Constants.MAuthTimeHeaderKeyV2)
                );
        }
        public static async Task AuthenticateRequest_WithMWSV2Request_AfterNumberOfAttempts_WillThrowExceptionWithRequestFailure(
            MAuthServiceRetryPolicy policy)
        {
            // Arrange
            var testData      = await "GET".FromResource();
            var version       = MAuthVersion.MWSV2;
            var authenticator = new MAuthAuthenticator(TestExtensions.GetServerOptionsWithAttempts(
                                                           policy, shouldSucceedWithin: false), NullLogger <MAuthAuthenticator> .Instance);
            var mAuthCore = new MAuthCoreV2();

            var signedRequest = await mAuthCore
                                .AddAuthenticationInfo(testData.ToHttpRequestMessage(version), new PrivateKeyAuthenticationInfo()
            {
                ApplicationUuid = testData.ApplicationUuid,
                PrivateKey      = TestExtensions.ClientPrivateKey,
                SignedTime      = testData.SignedTime
            });

            // Act
            var exception = (await Assert.ThrowsAsync <AuthenticationException>(
                                 () => authenticator.AuthenticateRequest(signedRequest)));

            var innerException = exception.InnerException as RetriedRequestException;

            // Assert
            Assert.NotNull(innerException);
            Assert.Equal((int)policy + 1, innerException.Responses.Count);
            Assert.Equal(HttpStatusCode.ServiceUnavailable, innerException.Responses.First().StatusCode);
        }
        public static async Task AuthenticateRequest_WithValidMWSV2Request_WillAuthenticate(string method)
        {
            // Arrange
            var testData = await method.FromResourceV2();

            var version       = MAuthVersion.MWSV2;
            var authenticator = new MAuthAuthenticator(TestExtensions.ServerOptions, NullLogger <MAuthAuthenticator> .Instance);
            var mAuthCore     = new MAuthCoreV2();

            var signedRequest = await mAuthCore
                                .AddAuthenticationInfo(testData.ToHttpRequestMessage(version), new PrivateKeyAuthenticationInfo()
            {
                ApplicationUuid = testData.ApplicationUuid,
                PrivateKey      = TestExtensions.ClientPrivateKey,
                SignedTime      = testData.SignedTime
            });

            // Act
            var isAuthenticated = await authenticator.AuthenticateRequest(signedRequest);

            // Assert
            Assert.True(isAuthenticated);
        }
        public static async Task AuthenticateRequest_WithNumberOfAttempts_WillAuthenticate(
            MAuthServiceRetryPolicy policy)
        {
            // Arrange
            var testData = await "GET".FromResourceV2();

            var authenticator = new MAuthAuthenticator(TestExtensions.GetServerOptionsWithAttempts(
                                                           policy, shouldSucceedWithin: true), NullLogger <MAuthAuthenticator> .Instance);
            var mAuthCore = new MAuthCoreV2();

            var signedRequest = await mAuthCore
                                .AddAuthenticationInfo(testData.ToDefaultHttpRequestMessage(), new PrivateKeyAuthenticationInfo()
            {
                ApplicationUuid = testData.ApplicationUuid,
                PrivateKey      = TestExtensions.ClientPrivateKey,
                SignedTime      = testData.SignedTime
            });

            // Act
            var isAuthenticated = await authenticator.AuthenticateRequest(signedRequest);

            // Assert
            Assert.True(isAuthenticated);
        }