diff --git a/workers/main/src/configs/axios.test.ts b/workers/main/src/configs/axios.test.ts new file mode 100644 index 00000000..c8779fbe --- /dev/null +++ b/workers/main/src/configs/axios.test.ts @@ -0,0 +1,34 @@ +import { describe, expect, it } from 'vitest'; + +import { axiosConfig } from './axios'; + +describe('axiosConfig', () => { + it('should have required properties', () => { + expect(axiosConfig).toHaveProperty('timeout'); + expect(axiosConfig).toHaveProperty('maxRetries'); + expect(axiosConfig).toHaveProperty('headers'); + }); + + it('should have correct timeout value', () => { + expect(axiosConfig.timeout).toBe(30000); + }); + + it('should have correct maxRetries value', () => { + expect(axiosConfig.maxRetries).toBe(3); + }); + + it('should have correct headers', () => { + expect(axiosConfig.headers).toEqual({ + 'Content-Type': 'application/json', + 'Accept': 'application/json', + }); + }); + + it('should have Content-Type header', () => { + expect(axiosConfig.headers['Content-Type']).toBe('application/json'); + }); + + it('should have Accept header', () => { + expect(axiosConfig.headers['Accept']).toBe('application/json'); + }); +}); diff --git a/workers/main/src/configs/axios.ts b/workers/main/src/configs/axios.ts new file mode 100644 index 00000000..6f29145d --- /dev/null +++ b/workers/main/src/configs/axios.ts @@ -0,0 +1,8 @@ +export const axiosConfig = { + timeout: 30000, + maxRetries: 3, + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + }, +}; diff --git a/workers/main/src/configs/qbo.ts b/workers/main/src/configs/qbo.ts index c2c2cd30..3dd24144 100644 --- a/workers/main/src/configs/qbo.ts +++ b/workers/main/src/configs/qbo.ts @@ -8,15 +8,20 @@ export const qboConfig = { clientSecret: process.env.QBO_CLIENT_SECRET, companyId: process.env.QBO_COMPANY_ID, refreshToken: process.env.QBO_REFRESH_TOKEN, - tokenEndpoint: - process.env.QBO_TOKEN_ENDPOINT || - 'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer', + tokenHost: 'https://oauth.platform.intuit.com', + tokenPath: '/oauth2/v1/tokens/bearer', + tokenExpirationWindowSeconds: 300, + effectiveRevenueMonths: parseInt( + process.env.QBO_EFFECTIVE_REVENUE_MONTHS || '3', + ), }; export const qboSchema = z.object({ QBO_API_URL: z.string().url().min(1, 'QBO_API_URL is required'), + QBO_BEARER_TOKEN: z.string().optional(), QBO_CLIENT_ID: z.string().min(1, 'QBO_CLIENT_ID is required'), QBO_CLIENT_SECRET: z.string().min(1, 'QBO_CLIENT_SECRET is required'), QBO_COMPANY_ID: z.string().min(1, 'QBO_COMPANY_ID is required'), - QBO_REFRESH_TOKEN: z.string().optional(), + QBO_REFRESH_TOKEN: z.string(), + QBO_EFFECTIVE_REVENUE_MONTHS: z.string().optional(), });