public void ConnectUrl_ReturnsCorrectUrl()
{
string url = gateway.OAuth.ConnectUrl(new OAuthConnectUrlRequest {
MerchantId = "integration_merchant_id",
RedirectUri = "http://bar.example.com",
Scope = "read_write",
State = "baz_state",
LandingPage = "login",
User = new OAuthConnectUrlUserRequest {
Country = "USA",
Email = "[email protected]",
FirstName = "Bob",
LastName = "Jones",
Phone = "555-555-5555",
DobYear = "1970",
DobMonth = "01",
DobDay = "01",
StreetAddress = "222 W Merchandise Mart",
Locality = "Chicago",
Region = "IL",
PostalCode = "60606",
},
Business = new OAuthConnectUrlBusinessRequest {
Name = "14 Ladders",
RegisteredAs = "14.0 Ladders",
Industry = "Ladders",
Description = "We sell the best ladders",
StreetAddress = "111 N Canal",
Locality = "Chicago",
Region = "IL",
PostalCode = "60606",
Country = "USA",
AnnualVolumeAmount = "1000000",
AverageTransactionAmount = "100",
MaximumTransactionAmount = "10000",
ShipPhysicalGoods = true,
FulfillmentCompletedIn = 7,
Currency = "USD",
Website = "http://example.com",
EstablishedOn = "2010-10",
},
});
var uri = new Uri(url);
#if netcore
IDictionary query = QueryHelpers.ParseQuery(uri.Query);
#else
var query = HttpUtility.ParseQueryString(uri.Query); ;
#endif
Assert.AreEqual("localhost", uri.Host);
Assert.AreEqual("/oauth/connect", uri.AbsolutePath);
Assert.AreEqual("integration_merchant_id", query["merchant_id"]);
Assert.AreEqual("client_id$development$integration_client_id", query["client_id"]);
Assert.AreEqual("http://bar.example.com", query["redirect_uri"]);
Assert.AreEqual("read_write", query["scope"]);
Assert.AreEqual("baz_state", query["state"]);
Assert.AreEqual("login", query["landing_page"]);
Assert.AreEqual("USA", query["user[country]"]);
Assert.AreEqual("[email protected]", query["user[email]"]);
Assert.AreEqual("Bob", query["user[first_name]"]);
Assert.AreEqual("Jones", query["user[last_name]"]);
Assert.AreEqual("555-555-5555", query["user[phone]"]);
Assert.AreEqual("1970", query["user[dob_year]"]);
Assert.AreEqual("01", query["user[dob_month]"]);
Assert.AreEqual("01", query["user[dob_day]"]);
Assert.AreEqual("222 W Merchandise Mart", query["user[street_address]"]);
Assert.AreEqual("Chicago", query["user[locality]"]);
Assert.AreEqual("IL", query["user[region]"]);
Assert.AreEqual("60606", query["user[postal_code]"]);
Assert.AreEqual("14 Ladders", query["business[name]"]);
Assert.AreEqual("14.0 Ladders", query["business[registered_as]"]);
Assert.AreEqual("Ladders", query["business[industry]"]);
Assert.AreEqual("We sell the best ladders", query["business[description]"]);
Assert.AreEqual("111 N Canal", query["business[street_address]"]);
Assert.AreEqual("Chicago", query["business[locality]"]);
Assert.AreEqual("IL", query["business[region]"]);
Assert.AreEqual("60606", query["business[postal_code]"]);
Assert.AreEqual("USA", query["business[country]"]);
Assert.AreEqual("1000000", query["business[annual_volume_amount]"]);
Assert.AreEqual("100", query["business[average_transaction_amount]"]);
Assert.AreEqual("10000", query["business[maximum_transaction_amount]"]);
Assert.AreEqual("true", query["business[ship_physical_goods]"]);
Assert.AreEqual("7", query["business[fulfillment_completed_in]"]);
Assert.AreEqual("USD", query["business[currency]"]);
Assert.AreEqual("http://example.com", query["business[website]"]);
Assert.AreEqual("2010-10", query["business[established_on]"]);
Assert.AreEqual(64, query["signature"].ToString().Length);
var hexRegex = new Regex("^[a-f0-9]+$");
Assert.IsTrue(hexRegex.IsMatch(query["signature"].ToString()));
Assert.AreEqual("SHA256", query["algorithm"]);
}