Esempio n. 1
0
        public void TestParameterEncoding_ShouldCreateExpectedSignatureBaseString_WhenQueryParamsNotEncodedInUri()
        {
            // GIVEN
            const string uri = "https://example.com/?param=token1:token2";

            // WHEN
            var queryParams = OAuth.ExtractQueryParams(uri);
            var paramString = OAuth.GetOAuthParamString(queryParams, new Dictionary <string, string>());
            var baseString  = OAuth.GetSignatureBaseString("https://example.com", "GET", paramString);

            // THEN
            Assert.AreEqual("GET&https%3A%2F%2Fexample.com&param%3Dtoken1%3Atoken2", baseString);
        }
Esempio n. 2
0
        public void TestExtractQueryParams_ShouldEncodeParams_WhenUriStringWithEncodedParams()
        {
            // GIVEN
            const string uri = "https://example.com/request?colon=%3A&plus=%2B&comma=%2C";

            // WHEN
            var queryParams = OAuth.ExtractQueryParams(uri);

            // THEN
            Assert.AreEqual(3, queryParams.Count);
            Assert.IsFalse(new List <string> {
                "%3A"
            }.Except(queryParams["colon"]).Any());
            Assert.IsFalse(new List <string> {
                "%2B"
            }.Except(queryParams["plus"]).Any());
            Assert.IsFalse(new List <string> {
                "%2C"
            }.Except(queryParams["comma"]).Any());
        }
Esempio n. 3
0
        public void TestGetSignatureBaseString_Integrated()
        {
            var          encoding        = Encoding.GetEncoding("ISO-8859-1");
            const string body            = "<?xml version=\"1.0\" encoding=\"Windows-1252\"?><ns2:TerminationInquiryRequest xmlns:ns2=\"http://mastercard.com/termination\"><AcquirerId>1996</AcquirerId><TransactionReferenceNumber>1</TransactionReferenceNumber><Merchant><Name>TEST</Name><DoingBusinessAsName>TEST</DoingBusinessAsName><PhoneNumber>5555555555</PhoneNumber><NationalTaxId>1234567890</NationalTaxId><Address><Line1>5555 Test Lane</Line1><City>TEST</City><CountrySubdivision>XX</CountrySubdivision><PostalCode>12345</PostalCode><Country>USA</Country></Address><Principal><FirstName>John</FirstName><LastName>Smith</LastName><NationalId>1234567890</NationalId><PhoneNumber>5555555555</PhoneNumber><Address><Line1>5555 Test Lane</Line1><City>TEST</City><CountrySubdivision>XX</CountrySubdivision><PostalCode>12345</PostalCode><Country>USA</Country></Address><DriversLicense><Number>1234567890</Number><CountrySubdivision>XX</CountrySubdivision></DriversLicense></Principal></Merchant></ns2:TerminationInquiryRequest>";
            const string method          = "POST";
            const string uri             = "https://sandbox.api.mastercard.com/fraud/merchant/v1/termination-inquiry?Format=XML&PageOffset=0&PageLength=10";
            var          queryParameters = OAuth.ExtractQueryParams(uri);
            var          oauthParameters = new Dictionary <string, string>
            {
                { "oauth_consumer_key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" },
                { "oauth_nonce", "1111111111111111111" },
                { "oauth_signature_method", "RSA-SHA256" },
                { "oauth_timestamp", "1111111111" },
                { "oauth_version", "1.0" },
                { "oauth_body_hash", OAuth.GetBodyHash(body, encoding) }
            };
            var          oauthParamString            = OAuth.GetOAuthParamString(queryParameters, oauthParameters);
            var          actualSignatureBaseString   = OAuth.GetSignatureBaseString(OAuth.GetBaseUriString(uri), method, oauthParamString);
            const string expectedSignatureBaseString = "POST&https%3A%2F%2Fsandbox.api.mastercard.com%2Ffraud%2Fmerchant%2Fv1%2Ftermination-inquiry&Format%3DXML%26PageLength%3D10%26PageOffset%3D0%26oauth_body_hash%3Dh2Pd7zlzEZjZVIKB4j94UZn%2FxxoR3RoCjYQ9%2FJdadGQ%3D%26oauth_consumer_key%3Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%26oauth_nonce%3D1111111111111111111%26oauth_signature_method%3DRSA-SHA256%26oauth_timestamp%3D1111111111%26oauth_version%3D1.0";

            Assert.AreEqual(expectedSignatureBaseString, actualSignatureBaseString);
        }
Esempio n. 4
0
        public void TestExtractQueryParams_ShouldSupportRfcExample()
        {
            // GIVEN
            const string uri = "https://example.com/request?b5=%3D%253D&a3=a&c%40=&a2=r%20b"; // See: https://tools.ietf.org/html/rfc5849#section-3.4.1.3.1

            // WHEN
            var queryParams = OAuth.ExtractQueryParams(uri);

            // THEN
            Assert.AreEqual(4, queryParams.Count);
            Assert.IsFalse(new List <string> {
                "%3D%253D"
            }.Except(queryParams["b5"]).Any());
            Assert.IsFalse(new List <string> {
                "a"
            }.Except(queryParams["a3"]).Any());
            Assert.IsFalse(new List <string> {
                string.Empty
            }.Except(queryParams["c%40"]).Any());
            Assert.IsFalse(new List <string> {
                "r%20b"
            }.Except(queryParams["a2"]).Any());
        }
Esempio n. 5
0
        public void TestExtractQueryParams_ShouldSupportDuplicateKeysAndEmptyValues()
        {
            // GIVEN
            const string uri = "https://sandbox.api.mastercard.com/audiences/v1/getcountries?offset=0&offset=1&length=10&empty&odd=";

            // WHEN
            var queryParams = OAuth.ExtractQueryParams(uri);

            // THEN
            Assert.AreEqual(4, queryParams.Count);
            Assert.IsFalse(new List <string> {
                "10"
            }.Except(queryParams["length"]).Any());
            Assert.IsFalse(new List <string> {
                "0", "1"
            }.Except(queryParams["offset"]).Any());
            Assert.IsFalse(new List <string> {
                string.Empty
            }.Except(queryParams["empty"]).Any());
            Assert.IsFalse(new List <string> {
                string.Empty
            }.Except(queryParams["odd"]).Any());
        }