-
Notifications
You must be signed in to change notification settings - Fork 758
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge changes from stripe/stripe-node master
- Loading branch information
Showing
11 changed files
with
329 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
/** | ||
* example_template.py - This is a template for defining new examples. It is not intended to be used directly. | ||
* <describe what this example does> | ||
* In this example, we: | ||
* - <key step 1> | ||
* - <key step 2 | ||
* - ... | ||
* <describe assumptions about the user's stripe account, environment, or configuration; | ||
* or things to watch out for when running> | ||
*/ | ||
|
||
import {Stripe} from 'stripe'; | ||
|
||
const apiKey = '{{API_KEY}}'; | ||
|
||
console.log('Hello World'); | ||
// const client = new Stripe(apiKey); | ||
// client.v2.... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,64 @@ | ||
// File generated from our OpenAPI spec | ||
|
||
// This file is manually maintained | ||
import {StripeResource} from '../../../StripeResource.js'; | ||
|
||
const stripeMethod = StripeResource.method; | ||
|
||
export const Events = StripeResource.extend({ | ||
retrieve: stripeMethod({method: 'GET', fullPath: '/v2/core/events/{id}'}), | ||
list: stripeMethod({ | ||
method: 'GET', | ||
fullPath: '/v2/core/events', | ||
methodType: 'list', | ||
}), | ||
retrieve(...args: any[]) { | ||
const transformResponseData = (response: any): any => { | ||
return this.addFetchRelatedObjectIfNeeded(response); | ||
}; | ||
return stripeMethod({ | ||
method: 'GET', | ||
fullPath: '/v2/core/events/{id}', | ||
transformResponseData, | ||
}).apply(this, args); | ||
}, | ||
|
||
list(...args: any[]) { | ||
const transformResponseData = (response: any): any => { | ||
return { | ||
...response, | ||
data: response.data.map(this.addFetchRelatedObjectIfNeeded.bind(this)), | ||
}; | ||
}; | ||
return stripeMethod({ | ||
method: 'GET', | ||
fullPath: '/v2/core/events', | ||
methodType: 'list', | ||
transformResponseData, | ||
}).apply(this, args); | ||
}, | ||
|
||
/** | ||
* @private | ||
* | ||
* For internal use in stripe-node. | ||
* | ||
* @param pulledEvent The retrieved event object | ||
* @returns The retrieved event object with a fetchRelatedObject method, | ||
* if pulledEvent.related_object is valid (non-null and has a url) | ||
*/ | ||
addFetchRelatedObjectIfNeeded(pulledEvent: any) { | ||
if (!pulledEvent.related_object || !pulledEvent.related_object.url) { | ||
return pulledEvent; | ||
} | ||
return { | ||
...pulledEvent, | ||
fetchRelatedObject: (): Promise<null | any> => | ||
// call stripeMethod with 'this' resource to fetch | ||
// the related object. 'this' is needed to construct | ||
// and send the request, but the method spec controls | ||
// the url endpoint and method, so it doesn't matter | ||
// that 'this' is an Events resource object here | ||
stripeMethod({ | ||
method: 'GET', | ||
fullPath: pulledEvent.related_object.url, | ||
}).apply(this, [ | ||
{ | ||
stripeAccount: pulledEvent.context, | ||
}, | ||
]), | ||
}; | ||
}, | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,209 @@ | ||
'use strict'; | ||
|
||
const testUtils = require('../../../testUtils.js'); | ||
const expect = require('chai').expect; | ||
|
||
const stripe = testUtils.getSpyableStripe(); | ||
|
||
const v2EventPayloadWithoutRelatedObject = ` | ||
{ | ||
"context": "context", | ||
"created": "1970-01-12T21:42:34.472Z", | ||
"id": "obj_123", | ||
"livemode": true, | ||
"object":"v2.core.event", | ||
"reason": | ||
{ | ||
"type": "request", | ||
"request": | ||
{ | ||
"id": "obj_123", | ||
"idempotency_key": "idempotency_key" | ||
} | ||
}, | ||
"type": "type" | ||
} | ||
`; | ||
|
||
const v2EventPayloadWithRelatedObject = ` | ||
{ | ||
"context": "context", | ||
"created": "1970-01-12T21:42:34.472Z", | ||
"id": "obj_123", | ||
"livemode": true, | ||
"object":"v2.core.event", | ||
"reason": | ||
{ | ||
"type": "request", | ||
"request": | ||
{ | ||
"id": "obj_123", | ||
"idempotency_key": "idempotency_key" | ||
} | ||
}, | ||
"type": "type", | ||
"related_object": | ||
{ | ||
"id": "obj_123", | ||
"type": "thing", | ||
"url": "/v1/things/obj_123" | ||
} | ||
} | ||
`; | ||
|
||
describe('V2 Core Events Resource', () => { | ||
describe('retrieve', () => { | ||
it('Sends the correct request', () => { | ||
stripe.v2.core.events.retrieve('eventIdBaz'); | ||
expect(stripe.LAST_REQUEST).to.deep.equal({ | ||
method: 'GET', | ||
url: '/v2/core/events/eventIdBaz', | ||
headers: {}, | ||
data: null, | ||
settings: {}, | ||
}); | ||
}); | ||
|
||
it('Does not have fetchRelatedObject if not needed', async () => { | ||
const mockStripe = testUtils.createMockClient([ | ||
{ | ||
method: 'GET', | ||
path: '/v2/core/events/ll_123', | ||
response: v2EventPayloadWithoutRelatedObject, | ||
}, | ||
]); | ||
const event = await mockStripe.v2.core.events.retrieve('ll_123'); | ||
expect(event).ok; | ||
expect(event.fetchRelatedObject).to.be.undefined; | ||
}); | ||
|
||
it('Has fetchRelatedObject if needed', async () => { | ||
const mockStripe = testUtils.createMockClient([ | ||
{ | ||
method: 'GET', | ||
path: '/v2/core/events/ll_123', | ||
response: v2EventPayloadWithRelatedObject, | ||
}, | ||
]); | ||
const event = await mockStripe.v2.core.events.retrieve('ll_123'); | ||
expect(event).ok; | ||
expect(event.fetchRelatedObject).ok; | ||
}); | ||
|
||
it('Can call fetchRelatedObject', async () => { | ||
const mockStripe = testUtils.createMockClient([ | ||
{ | ||
method: 'GET', | ||
path: '/v2/core/events/ll_123', | ||
response: v2EventPayloadWithRelatedObject, | ||
}, | ||
{ | ||
method: 'GET', | ||
path: '/v1/things/obj_123', | ||
response: '{"id": "obj_123"}', | ||
}, | ||
]); | ||
const event = await mockStripe.v2.core.events.retrieve('ll_123'); | ||
expect(event).ok; | ||
expect(event.fetchRelatedObject).ok; | ||
const obj = await event.fetchRelatedObject(); | ||
expect(obj.id).to.equal('obj_123'); | ||
}); | ||
}); | ||
|
||
describe('list', () => { | ||
it('Sends the correct request', () => { | ||
stripe.v2.core.events.list({object_id: 'foo'}); | ||
expect(stripe.LAST_REQUEST).to.deep.equal({ | ||
method: 'GET', | ||
url: '/v2/core/events?object_id=foo', | ||
headers: {}, | ||
data: null, | ||
settings: {}, | ||
}); | ||
}); | ||
|
||
it('Does not have fetchRelatedObject if not needed', async () => { | ||
const mockStripe = testUtils.createMockClient([ | ||
{ | ||
method: 'GET', | ||
path: '/v2/core/events?object_id=foo', | ||
response: `{ | ||
"data": [ | ||
${v2EventPayloadWithoutRelatedObject}, | ||
${v2EventPayloadWithoutRelatedObject}, | ||
${v2EventPayloadWithoutRelatedObject} | ||
], | ||
"next_page_url": null | ||
}`, | ||
}, | ||
]); | ||
const resp = await mockStripe.v2.core.events.list({object_id: 'foo'}); | ||
expect(resp).ok; | ||
expect(resp.data.length).is.equal(3); | ||
for (const event of resp.data) { | ||
expect(event.fetchRelatedObject).not.ok; | ||
} | ||
}); | ||
|
||
it('Has fetchRelatedObject if needed', async () => { | ||
const mockStripe = testUtils.createMockClient([ | ||
{ | ||
method: 'GET', | ||
path: '/v2/core/events?object_id=foo', | ||
response: `{ | ||
"data": [ | ||
${v2EventPayloadWithRelatedObject}, | ||
${v2EventPayloadWithRelatedObject}, | ||
${v2EventPayloadWithRelatedObject} | ||
], | ||
"next_page_url": null | ||
}`, | ||
}, | ||
]); | ||
const resp = await mockStripe.v2.core.events.list({object_id: 'foo'}); | ||
expect(resp).ok; | ||
expect(resp.data.length).is.equal(3); | ||
for (const event of resp.data) { | ||
expect(event.fetchRelatedObject).ok; | ||
} | ||
}); | ||
|
||
it('Has fetchRelatedObject added to autoPaginate results', async () => { | ||
const mockStripe = testUtils.createMockClient([ | ||
{ | ||
method: 'GET', | ||
path: '/v2/core/events?object_id=foo', | ||
response: `{ | ||
"data": [ | ||
${v2EventPayloadWithRelatedObject}, | ||
${v2EventPayloadWithRelatedObject}, | ||
${v2EventPayloadWithRelatedObject} | ||
], | ||
"next_page_url": "/next_page" | ||
}`, | ||
}, | ||
{ | ||
method: 'GET', | ||
path: '/next_page', | ||
response: `{ | ||
"data": [ | ||
${v2EventPayloadWithRelatedObject}, | ||
${v2EventPayloadWithRelatedObject}, | ||
${v2EventPayloadWithRelatedObject} | ||
], | ||
"next_page_url": null | ||
}`, | ||
}, | ||
]); | ||
const respProm = mockStripe.v2.core.events.list({object_id: 'foo'}); | ||
expect(respProm).ok; | ||
let totalEvents = 0; | ||
await respProm.autoPagingEach(function(event) { | ||
totalEvents += 1; | ||
expect(event.fetchRelatedObject).ok; | ||
}); | ||
expect(totalEvents).is.equal(6); | ||
}); | ||
}); | ||
}); |
Oops, something went wrong.