public static async Task GetSignature_WithRequest_WillReturnTheCorrectSignature(string method)
        {
            // Arrange
            var testData = await method.FromResource();

            var mAuthCore = new MAuthCore();

            var expectedSignature =
                ($"{testData.Method}\n" +
                 $"{testData.Url.AbsolutePath}\n" +
                 $"{testData.Base64Content.ToStringContent()}\n" +
                 $"{testData.ApplicationUuidString}\n" +
                 $"{testData.SignedTimeUnixSeconds}")
                .AsSHA512Hash();

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

            // Act
            var result = await mAuthCore.GetSignature(testData.ToHttpRequestMessage(), authInfo);

            // Assert
            Assert.Equal(expectedSignature, result);
        }
        public static async Task AddAuthenticationInfo_WithRequestAndAuthInfo_WillAddCorrectInformation(string method)
        {
            // Arrange
            var testData = await method.FromResource();

            var expectedMAuthHeader = testData.MAuthHeader;
            var mAuthCore           = new MAuthCore();

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

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

            // Assert
            Assert.Equal(expectedMAuthHeader, actual.Headers.GetFirstValueOrDefault <string>(Constants.MAuthHeaderKey));
            Assert.Equal(
                authInfo.SignedTime.ToUnixTimeSeconds(),
                actual.Headers.GetFirstValueOrDefault <long>(Constants.MAuthTimeHeaderKey)
                );
        }
Esempio n. 3
0
        public static async Task GetSignature_WithRequest_WillReturnTheCorrectSignature(string method)
        {
            // Arrange
            var testData = await method.FromResourceV2();

            var version     = MAuthVersion.MWSV2;
            var mAuthCore   = new MAuthCoreV2();
            var queryParams = !string.IsNullOrEmpty(testData.Url.Query) ?
                              testData.Url.Query.Replace("?", "").BuildEncodedQueryParams().ToBytes() :new byte[] { };
            var content = !string.IsNullOrEmpty(testData.Base64Content) ?
                          Convert.FromBase64String(testData.Base64Content)
                : new byte[] { };

            var expectedSignature = new byte[][]
            {
                testData.Method.ToBytes(), Constants.NewLine,
                testData.Url.AbsolutePath.ToBytes(), Constants.NewLine,
                content.AsSHA512Hash(), Constants.NewLine,
                testData.ApplicationUuidString.ToBytes(), Constants.NewLine,
                testData.SignedTimeUnixSeconds.ToString().ToBytes(), Constants.NewLine,
                queryParams
            }.Concat();

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

            // Act
            var result = await mAuthCore.GetSignature(testData.ToHttpRequestMessage(version), authInfo);

            // Assert
            Assert.Equal(expectedSignature, result);
        }
Esempio n. 4
0
        public static async Task CalculatePayload_WithRequestAndAuthInfo_WillReturnCorrectPayload(string method)
        {
            // Arrange
            var testData = await method.FromResource();

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

            // Act
            var result = await testData.ToHttpRequestMessage().CalculatePayload(authInfo);

            // Assert
            Assert.Equal(testData.Payload, result);
        }
        public async Task GetSignature_WithRequest_WillReturnTheCorrectSignature(string method)
        {
            // Arrange
            var testData = await TestData.For(method);

            var expectedSignature =
                ($"{method}\n/\n{testData.Content}\n{TestExtensions.ClientUuid.ToHyphenString()}\n" +
                 $"{testData.SignedTime.ToUnixTimeSeconds()}")
                .AsSHA512Hash();

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

            // Act
            var result = await testData.Request.GetSignature(authInfo);

            // Assert
            Assert.Equal(expectedSignature, result);
        }
        public async Task AddAuthenticationInfo_WithRequestAndAuthInfo_WillAddCorrectInformation(string method)
        {
            // Arrange
            var testData = await TestData.For(method);

            var expectedMAuthHeader = $"MWS {TestExtensions.ClientUuid.ToHyphenString()}:{testData.Payload}";

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

            // Act
            var actual = await testData.Request.AddAuthenticationInfo(authInfo);

            // Assert
            Assert.Equal(expectedMAuthHeader, actual.Headers.GetFirstValueOrDefault <string>(Constants.MAuthHeaderKey));
            Assert.Equal(
                authInfo.SignedTime.ToUnixTimeSeconds(),
                actual.Headers.GetFirstValueOrDefault <long>(Constants.MAuthTimeHeaderKey)
                );
        }