From f42b0e11840662ddb16001d3a2bf2a88ec8f0890 Mon Sep 17 00:00:00 2001 From: Alexis Rico Date: Fri, 20 Dec 2024 08:05:58 +0100 Subject: [PATCH] Add E2E tests using vitest --- .env.example | 15 ++++++++++ .github/workflows/e2e-tests.yaml | 34 ++++++++++++++++++++++ .gitignore | 1 + packages/dhis2-openapi/test/e2e.test.ts | 38 +++++++++++++++++++++++++ packages/netlify-api/test/e2e.test.ts | 31 ++++++++++++++++++++ packages/vercel-api-js/test/e2e.test.ts | 31 ++++++++++++++++++++ packages/zoom-api-js/test/e2e.test.ts | 22 ++++++++++++++ 7 files changed, 172 insertions(+) create mode 100644 .env.example create mode 100644 .github/workflows/e2e-tests.yaml create mode 100644 packages/dhis2-openapi/test/e2e.test.ts create mode 100644 packages/netlify-api/test/e2e.test.ts create mode 100644 packages/vercel-api-js/test/e2e.test.ts create mode 100644 packages/zoom-api-js/test/e2e.test.ts diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..c0ae1c54 --- /dev/null +++ b/.env.example @@ -0,0 +1,15 @@ +# Example environment variables for API authentication + +# DHIS2 API +DHIS2_BASE_URL=https://play.dhis2.org/40.0.0 +DHIS2_USERNAME=admin +DHIS2_PASSWORD=district + +# Netlify API +NETLIFY_API_TOKEN=your_netlify_api_token + +# Vercel API +VERCEL_API_TOKEN=your_vercel_api_token + +# Zoom API +ZOOM_API_TOKEN=your_zoom_api_token diff --git a/.github/workflows/e2e-tests.yaml b/.github/workflows/e2e-tests.yaml new file mode 100644 index 00000000..dc3f1141 --- /dev/null +++ b/.github/workflows/e2e-tests.yaml @@ -0,0 +1,34 @@ +name: E2E Tests + +on: + push: + branches: + - main + pull_request: + +jobs: + e2e-tests: + name: E2E Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Configure + run: | + echo ::set-output name=NVMRC::$(cat .nvmrc) + id: config + + - name: Install pnpm + uses: pnpm/action-setup@v4 + + - name: Use Node.js ${{ steps.config.outputs.NVMRC }} + uses: actions/setup-node@v4 + with: + node-version: ${{ steps.config.outputs.NVMRC }} + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install + + - name: Run E2E Tests + run: pnpm vitest diff --git a/.gitignore b/.gitignore index c245383a..f1dbca12 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules dist *.log .turbo +.env diff --git a/packages/dhis2-openapi/test/e2e.test.ts b/packages/dhis2-openapi/test/e2e.test.ts new file mode 100644 index 00000000..8d28f9be --- /dev/null +++ b/packages/dhis2-openapi/test/e2e.test.ts @@ -0,0 +1,38 @@ +import { describe, it, expect, beforeAll } from 'vitest'; +import { DHIS2Client } from '../dist'; +import dotenv from 'dotenv'; + +dotenv.config(); + +describe('DHIS2 OpenAPI E2E Tests', () => { + let client: DHIS2Client; + + beforeAll(() => { + const baseUrl = process.env.DHIS2_BASE_URL; + const username = process.env.DHIS2_USERNAME; + const password = process.env.DHIS2_PASSWORD; + + if (!baseUrl || !username || !password) { + throw new Error('Missing environment variables for DHIS2 API'); + } + + client = new DHIS2Client({ + baseUrl, + credentials: { + type: 'basic', + username, + password, + }, + }); + }); + + it('should compile the package correctly', () => { + expect(client).toBeDefined(); + }); + + it('should connect and authenticate against the DHIS2 API', async () => { + const response = await client.get('/me'); + expect(response).toBeDefined(); + expect(response.status).toBe(200); + }); +}); diff --git a/packages/netlify-api/test/e2e.test.ts b/packages/netlify-api/test/e2e.test.ts new file mode 100644 index 00000000..0c11f622 --- /dev/null +++ b/packages/netlify-api/test/e2e.test.ts @@ -0,0 +1,31 @@ +import { describe, it, expect, beforeAll } from 'vitest'; +import { NetlifyClient } from '../dist'; +import dotenv from 'dotenv'; + +dotenv.config(); + +describe('Netlify API E2E Tests', () => { + let client: NetlifyClient; + + beforeAll(() => { + const token = process.env.NETLIFY_API_TOKEN; + + if (!token) { + throw new Error('Missing environment variable for Netlify API'); + } + + client = new NetlifyClient({ + token, + }); + }); + + it('should compile the package correctly', () => { + expect(client).toBeDefined(); + }); + + it('should connect and authenticate against the Netlify API', async () => { + const response = await client.get('/user'); + expect(response).toBeDefined(); + expect(response.status).toBe(200); + }); +}); diff --git a/packages/vercel-api-js/test/e2e.test.ts b/packages/vercel-api-js/test/e2e.test.ts new file mode 100644 index 00000000..ff0b192b --- /dev/null +++ b/packages/vercel-api-js/test/e2e.test.ts @@ -0,0 +1,31 @@ +import { describe, it, expect, beforeAll } from 'vitest'; +import { VercelApi } from '../dist'; +import dotenv from 'dotenv'; + +dotenv.config(); + +describe('Vercel API E2E Tests', () => { + let client: VercelApi; + + beforeAll(() => { + const token = process.env.VERCEL_API_TOKEN; + + if (!token) { + throw new Error('Missing environment variable for Vercel API'); + } + + client = new VercelApi({ + token, + }); + }); + + it('should compile the package correctly', () => { + expect(client).toBeDefined(); + }); + + it('should connect and authenticate against the Vercel API', async () => { + const response = await client.get('/v1/projects'); + expect(response).toBeDefined(); + expect(response.status).toBe(200); + }); +}); diff --git a/packages/zoom-api-js/test/e2e.test.ts b/packages/zoom-api-js/test/e2e.test.ts new file mode 100644 index 00000000..e23b963d --- /dev/null +++ b/packages/zoom-api-js/test/e2e.test.ts @@ -0,0 +1,22 @@ +import { describe, it, expect, beforeAll } from 'vitest'; +import { ZoomApi } from '../dist'; + +describe('Zoom API E2E Tests', () => { + let zoomApi: ZoomApi; + + beforeAll(() => { + require('dotenv').config(); + const token = process.env.ZOOM_API_TOKEN; + zoomApi = new ZoomApi({ token }); + }); + + it('should compile the package well', () => { + expect(zoomApi).toBeDefined(); + }); + + it('should connect and authenticate against the API', async () => { + const response = await zoomApi.request('GET /users/me', {}); + expect(response).toBeDefined(); + expect(response.id).toBeDefined(); + }); +});