feat: Implement get paddle info API endpoint

This commit is contained in:
Faruk AYDIN
2024-02-22 20:22:05 +01:00
parent d21e1f75b5
commit 6fdc4bf900
4 changed files with 60 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
import { renderObject } from '../../../../helpers/renderer.js';
import Billing from '../../../../helpers/billing/index.ee.js';
export default async (request, response) => {
const paddleInfo = Billing.paddleInfo;
renderObject(response, paddleInfo);
};

View File

@@ -0,0 +1,33 @@
import { vi, describe, it, expect, beforeEach } from 'vitest';
import request from 'supertest';
import app from '../../../../app.js';
import createAuthTokenByUserId from '../../../../helpers/create-auth-token-by-user-id.js';
import { createUser } from '../../../../../test/factories/user.js';
import getPaddleInfoMock from '../../../../../test/mocks/rest/api/v1/payment/get-paddle-info.js';
import appConfig from '../../../../config/app.js';
import billing from '../../../../helpers/billing/index.ee.js';
describe('GET /api/v1/payment/paddle-info', () => {
let user, token;
beforeEach(async () => {
user = await createUser();
token = createAuthTokenByUserId(user.id);
vi.spyOn(appConfig, 'isCloud', 'get').mockReturnValue(true);
vi.spyOn(billing.paddleInfo, 'vendorId', 'get').mockReturnValue(
'sampleVendorId'
);
});
it('should return payment plans', async () => {
const response = await request(app)
.get('/api/v1/payment/paddle-info')
.set('Authorization', token)
.expect(200);
const expectedResponsePayload = await getPaddleInfoMock();
expect(response.body).toEqual(expectedResponsePayload);
});
});

View File

@@ -2,9 +2,11 @@ import { Router } from 'express';
import { authenticateUser } from '../../../helpers/authentication.js';
import checkIsCloud from '../../../helpers/check-is-cloud.js';
import getPlansAction from '../../../controllers/api/v1/payment/get-plans.ee.js';
import getPaddleInfoAction from '../../../controllers/api/v1/payment/get-paddle-info.ee.js';
const router = Router();
router.get('/plans', authenticateUser, checkIsCloud, getPlansAction);
router.get('/paddle-info', authenticateUser, checkIsCloud, getPaddleInfoAction);
export default router;

View File

@@ -0,0 +1,17 @@
const getPaddleInfoMock = async () => {
return {
data: {
sandbox: true,
vendorId: 'sampleVendorId',
},
meta: {
count: 1,
currentPage: null,
isArray: false,
totalPages: null,
type: 'Object',
},
};
};
export default getPaddleInfoMock;