feat(api): add charge-stripe and create-stripe-payment-intent endpoints (#54545)

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
This commit is contained in:
Ahmad Abdolsaheb
2024-07-15 16:23:51 +03:00
committed by GitHub
parent e999319a17
commit b2518cc347
10 changed files with 546 additions and 64 deletions

View File

@@ -0,0 +1,29 @@
import { inLastFiveMinutes } from './validate-donation';
describe('inLastFiveMinutes', () => {
beforeAll(() => {
jest.useFakeTimers();
});
afterAll(() => {
jest.useRealTimers();
});
it('should return true if the timestamp is within the last five minutes', () => {
const currentTimestamp = Math.floor(Date.now() / 1000);
const recentTimestamp = currentTimestamp - 100;
expect(inLastFiveMinutes(recentTimestamp)).toBe(true);
});
it('should return false if the timestamp is more than five minutes ago', () => {
const currentTimestamp = Math.floor(Date.now() / 1000);
const oldTimestamp = currentTimestamp - 400;
expect(inLastFiveMinutes(oldTimestamp)).toBe(false);
});
it('should return true if the timestamp is exactly five minutes ago', () => {
const currentTimestamp = Math.floor(Date.now() / 1000);
const exactTimestamp = currentTimestamp - 300;
expect(inLastFiveMinutes(exactTimestamp)).toBe(true);
});
});

View File

@@ -0,0 +1,10 @@
/**
* Checks if a timestamp was created within five minutes.
* @param unixTimestamp - A unix timestamp .
* @returns - The generated email template.
*/
export const inLastFiveMinutes = (unixTimestamp: number) => {
const currentTimestamp = Math.floor(Date.now() / 1000);
const timeDifference = currentTimestamp - unixTimestamp;
return timeDifference <= 300; // 300 seconds is 5 minutes
};