コード例 #1
0
        public static async Task MAuthAuthenticatingHandler_WithValidMWSV2Request_WillAuthenticate(string method)
        {
            // Arrange
            var testData = await method.FromResourceV2();

            var actual  = new AssertSigningHandler();
            var version = MAuthVersion.MWSV2;
            var handler = new MAuthAuthenticatingHandler(new MAuthWebApiOptions()
            {
                ApplicationUuid    = TestExtensions.ServerUuid,
                MAuthServiceUrl    = TestExtensions.TestUri,
                PrivateKey         = TestExtensions.ServerPrivateKey,
                MAuthServerHandler = new MAuthServerHandler()
            }, actual);

            using (var server = new HttpClient(handler))
            {
                // Act
                var response = await server.SendAsync(testData.ToHttpRequestMessage(version));

                // Assert
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                Assert.Equal(testData.MAuthHeaderV2, actual.MAuthHeaderV2);
                Assert.Equal(testData.SignedTime, long.Parse(actual.MAuthTimeHeaderV2).FromUnixTimeSeconds());
            }
        }
コード例 #2
0
        public static async Task MAuthAuthenticatingHandler_WithEnabledExceptions_WillThrowException(string method)
        {
            // Arrange
            var testData = await method.FromResource();

            var handler = new MAuthAuthenticatingHandler(new MAuthWebApiOptions()
            {
                ApplicationUuid    = TestExtensions.ServerUuid,
                MAuthServiceUrl    = TestExtensions.TestUri,
                PrivateKey         = TestExtensions.ServerPrivateKey,
                MAuthServerHandler = new MAuthServerHandler(),
                HideExceptionsAndReturnUnauthorized = false
            });

            using (var server = new HttpClient(handler))
            {
                // Act, Assert
                var ex = await Assert.ThrowsAsync <AuthenticationException>(
                    () => server.SendAsync(
                        new HttpRequestMessage(testData.Method.ToHttpMethod(), testData.Url)));

                Assert.Equal("The request has invalid MAuth authentication headers.", ex.Message);
                Assert.NotNull(ex.InnerException);
            }
        }
コード例 #3
0
        public async Task MAuthAuthenticatingHandler_WithValidRequest_WillAuthenticate(string method)
        {
            // Arrange
            var testData = await TestData.For(method);

            var actual = new AssertSigningHandler();

            var handler = new MAuthAuthenticatingHandler(new MAuthWebApiOptions()
            {
                ApplicationUuid    = TestExtensions.ServerUuid,
                MAuthServiceUrl    = TestExtensions.TestUri,
                PrivateKey         = TestExtensions.ServerPrivateKey,
                MAuthServerHandler = new MAuthServerHandler()
            }, actual);

            using (var server = new HttpClient(handler))
            {
                // Act
                var response = await server.SendAsync(
                    await testData.Request.Sign(TestExtensions.ClientOptions(testData.SignedTime)));

                // Assert
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                Assert.Equal(testData.MAuthHeader, actual.MAuthHeader);
                Assert.Equal(testData.SignedTime, actual.MAuthTimeHeader.FromUnixTimeSeconds());
            }
        }
コード例 #4
0
        public async Task MAuthAuthenticatingHandler_WithoutMAuthHeader_WillNotAuthenticate(string method)
        {
            // Arrange
            var testData = await TestData.For(method);

            var handler = new MAuthAuthenticatingHandler(new MAuthWebApiOptions()
            {
                ApplicationUuid    = TestExtensions.ServerUuid,
                MAuthServiceUrl    = TestExtensions.TestUri,
                PrivateKey         = TestExtensions.ServerPrivateKey,
                MAuthServerHandler = new MAuthServerHandler()
            });

            using (var server = new HttpClient(handler))
            {
                // Act
                var response = await server.SendAsync(testData.Request);

                // Assert
                Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
            }
        }