|
|
@@ -128,103 +128,6 @@ describe "RecurlyWrapper", ->
|
|
|
after ->
|
|
|
tk.reset()
|
|
|
|
|
|
- describe "sign", ->
|
|
|
- before (done) ->
|
|
|
- @RecurlyWrapper.sign({
|
|
|
- subscription :
|
|
|
- plan_code : "gold"
|
|
|
- name : "$$$"
|
|
|
- }, (error, signature) =>
|
|
|
- @signature = signature
|
|
|
- done()
|
|
|
- )
|
|
|
-
|
|
|
- it "should be signed correctly", ->
|
|
|
- signed = @signature.split("|")[0]
|
|
|
- query = @signature.split("|")[1]
|
|
|
- crypto.createHmac("sha1", @settings.apis.recurly.privateKey).update(query).digest("hex").should.equal signed
|
|
|
-
|
|
|
- it "should be url escaped", ->
|
|
|
- query = @signature.split("|")[1]
|
|
|
- should.equal query.match(/\[/), null
|
|
|
- query.match(/\%5B/).should.not.equal null
|
|
|
-
|
|
|
- it "should contain the passed data", ->
|
|
|
- query = querystring.parse @signature.split("|")[1]
|
|
|
- query["subscription[plan_code]"].should.equal "gold"
|
|
|
- query["subscription[name]"].should.equal "$$$"
|
|
|
-
|
|
|
- it "should contain a nonce", ->
|
|
|
- query = querystring.parse @signature.split("|")[1]
|
|
|
- should.exist query["nonce"]
|
|
|
-
|
|
|
- it "should contain a timestamp", ->
|
|
|
- query = querystring.parse @signature.split("|")[1]
|
|
|
- query["timestamp"].should.equal Math.round(Date.now() / 1000) + ""
|
|
|
-
|
|
|
- describe "_parseXml", ->
|
|
|
- it "should convert different data types into correct representations", (done) ->
|
|
|
- xml = """
|
|
|
- <?xml version="1.0" encoding="UTF-8"?>
|
|
|
- <subscription href="https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96">
|
|
|
- <account href="https://api.recurly.com/v2/accounts/1"/>
|
|
|
- <plan href="https://api.recurly.com/v2/plans/gold">
|
|
|
- <plan_code>gold</plan_code>
|
|
|
- <name>Gold plan</name>
|
|
|
- </plan>
|
|
|
- <uuid>44f83d7cba354d5b84812419f923ea96</uuid>
|
|
|
- <state>active</state>
|
|
|
- <unit_amount_in_cents type="integer">800</unit_amount_in_cents>
|
|
|
- <currency>EUR</currency>
|
|
|
- <quantity type="integer">1</quantity>
|
|
|
- <activated_at type="datetime">2011-05-27T07:00:00Z</activated_at>
|
|
|
- <canceled_at nil="nil"></canceled_at>
|
|
|
- <expires_at nil="nil"></expires_at>
|
|
|
- <current_period_started_at type="datetime">2011-06-27T07:00:00Z</current_period_started_at>
|
|
|
- <current_period_ends_at type="datetime">2011-07-27T07:00:00Z</current_period_ends_at>
|
|
|
- <trial_started_at nil="nil"></trial_started_at>
|
|
|
- <trial_ends_at nil="nil"></trial_ends_at>
|
|
|
- <subscription_add_ons type="array">
|
|
|
- <subscription_add_on>
|
|
|
- <add_on_code>ipaddresses</add_on_code>
|
|
|
- <quantity>10</quantity>
|
|
|
- <unit_amount_in_cents>150</unit_amount_in_cents>
|
|
|
- </subscription_add_on>
|
|
|
- </subscription_add_ons>
|
|
|
- <a name="cancel" href="https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96/cancel" method="put"/>
|
|
|
- <a name="terminate" href="https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96/terminate" method="put"/>
|
|
|
- <a name="postpone" href="https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96/postpone" method="put"/>
|
|
|
- </subscription>
|
|
|
- """
|
|
|
- @RecurlyWrapper._parseXml xml, (error, data) ->
|
|
|
- data.subscription.plan.plan_code.should.equal "gold"
|
|
|
- data.subscription.plan.name.should.equal "Gold plan"
|
|
|
- data.subscription.uuid.should.equal "44f83d7cba354d5b84812419f923ea96"
|
|
|
- data.subscription.state.should.equal "active"
|
|
|
- data.subscription.unit_amount_in_cents.should.equal 800
|
|
|
- data.subscription.currency.should.equal "EUR"
|
|
|
- data.subscription.quantity.should.equal 1
|
|
|
-
|
|
|
- data.subscription.activated_at.should.deep.equal new Date("2011-05-27T07:00:00Z")
|
|
|
- should.equal data.subscription.canceled_at, null
|
|
|
- should.equal data.subscription.expires_at, null
|
|
|
-
|
|
|
- data.subscription.current_period_started_at.should.deep.equal new Date("2011-06-27T07:00:00Z")
|
|
|
-
|
|
|
- data.subscription.current_period_ends_at.should.deep.equal new Date("2011-07-27T07:00:00Z")
|
|
|
- should.equal data.subscription.trial_started_at, null
|
|
|
- should.equal data.subscription.trial_ends_at, null
|
|
|
-
|
|
|
- data.subscription.subscription_add_ons[0].should.deep.equal {
|
|
|
- add_on_code: "ipaddresses"
|
|
|
- quantity: "10"
|
|
|
- unit_amount_in_cents: "150"
|
|
|
- }
|
|
|
- data.subscription.account.url.should.equal "https://api.recurly.com/v2/accounts/1"
|
|
|
- data.subscription.url.should.equal "https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96"
|
|
|
- data.subscription.plan.url.should.equal "https://api.recurly.com/v2/plans/gold"
|
|
|
- done()
|
|
|
-
|
|
|
describe "getSubscription", ->
|
|
|
|
|
|
describe "with proper subscription id", ->
|