From 8c34d3564e4def5ee9ab12cfbf60c95e6ccf05f7 Mon Sep 17 00:00:00 2001 From: bzp2010 Date: Fri, 19 Jul 2024 02:00:26 +0800 Subject: [PATCH] test: label selector on ssl --- .../e2e/label-selector.e2e-spec.ts | 76 ++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/libs/backend-api7/e2e/label-selector.e2e-spec.ts b/libs/backend-api7/e2e/label-selector.e2e-spec.ts index 67997af..e875ca0 100644 --- a/libs/backend-api7/e2e/label-selector.e2e-spec.ts +++ b/libs/backend-api7/e2e/label-selector.e2e-spec.ts @@ -1,4 +1,7 @@ import * as ADCSDK from '@api7/adc-sdk'; +import { unset } from 'lodash'; +import { readFileSync } from 'node:fs'; +import { join } from 'node:path'; import { BackendAPI7 } from '../src'; import { @@ -72,7 +75,78 @@ describe('Label Selector', () => { it('Delete consumers', async () => syncEvents(backend, [ deleteEvent(ADCSDK.ResourceType.CONSUMER, consumer1Name), - deleteEvent(ADCSDK.ResourceType.CONSUMER, consumer1Name), + deleteEvent(ADCSDK.ResourceType.CONSUMER, consumer2Name), + ])); + }); + + describe('SSL', () => { + const certificates = [ + { + certificate: readFileSync( + join(__dirname, 'assets/certs/test-ssl1.cer'), + ).toString('utf-8'), + key: readFileSync( + join(__dirname, 'assets/certs/test-ssl1.key'), + ).toString('utf-8'), + }, + { + certificate: readFileSync( + join(__dirname, 'assets/certs/test-ssl2.cer'), + ).toString('utf-8'), + key: readFileSync( + join(__dirname, 'assets/certs/test-ssl2.key'), + ).toString('utf-8'), + }, + ]; + const ssl1SNIs = ['ssl1-1.com', 'ssl1-2.com']; + const ssl1 = { + snis: ssl1SNIs, + labels: { team: '1' }, + certificates: [certificates[0]], + } as ADCSDK.SSL; + const ssl2SNIs = ['ssl2-1.com', 'ssl2-2.com']; + const ssl2 = { + snis: ssl2SNIs, + labels: { team: '2' }, + certificates: [certificates[1]], + } as ADCSDK.SSL; + const sslName = (snis: Array) => snis.join(','); + + const ssl1test = structuredClone(ssl1); + const ssl2test = structuredClone(ssl2); + unset(ssl1test, 'certificates.0.key'); + unset(ssl2test, 'certificates.0.key'); + + it('Create ssls', async () => + syncEvents(backend, [ + createEvent(ADCSDK.ResourceType.SSL, sslName(ssl1SNIs), ssl1), + createEvent(ADCSDK.ResourceType.SSL, sslName(ssl2SNIs), ssl2), + ])); + + it('Dump consumer whit label team = 1', async () => { + const backend = new BackendAPI7({ + ...commonBackendOpts, + labelSelector: { team: '1' }, // add custom label selector + }); + const result = (await dumpConfiguration(backend)) as ADCSDK.Configuration; + expect(result.ssls).toHaveLength(1); + expect(result.ssls[0]).toMatchObject(ssl1test); + }); + + it('Dump consumer whit label team = 2', async () => { + const backend = new BackendAPI7({ + ...commonBackendOpts, + labelSelector: { team: '2' }, // add custom label selector + }); + const result = (await dumpConfiguration(backend)) as ADCSDK.Configuration; + expect(result.ssls).toHaveLength(1); + expect(result.ssls[0]).toMatchObject(ssl2test); + }); + + it('Delete ssls', async () => + syncEvents(backend, [ + deleteEvent(ADCSDK.ResourceType.SSL, sslName(ssl1SNIs)), + deleteEvent(ADCSDK.ResourceType.SSL, sslName(ssl2SNIs)), ])); }); });