Files
runner-container-hooks/packages/k8s/tests/cleanup-job-test.ts
T

62 lines
1.6 KiB
TypeScript
Raw Normal View History

import * as k8s from '@kubernetes/client-node'
import { cleanupJob, prepareJob } from '../src/hooks'
import { RunnerInstanceLabel } from '../src/hooks/constants'
import { namespace } from '../src/k8s'
2022-06-06 00:21:44 -04:00
import { TestHelper } from './test-setup'
2025-07-29 11:06:45 +02:00
import { PrepareJobArgs } from 'hooklib'
2022-06-02 15:53:11 -04:00
2022-06-06 00:21:44 -04:00
let testHelper: TestHelper
2022-06-02 15:53:11 -04:00
describe('Cleanup Job', () => {
beforeEach(async () => {
2022-06-06 00:21:44 -04:00
testHelper = new TestHelper()
await testHelper.initialize()
let prepareJobData = testHelper.getPrepareJobDefinition()
const prepareJobOutputFilePath = testHelper.createFile(
'prepare-job-output.json'
)
2025-07-29 11:06:45 +02:00
await prepareJob(
prepareJobData.args as PrepareJobArgs,
prepareJobOutputFilePath
)
2022-06-02 15:53:11 -04:00
})
2022-06-06 00:21:44 -04:00
afterEach(async () => {
await testHelper.cleanup()
})
it('should not throw', async () => {
await expect(cleanupJob()).resolves.not.toThrow()
})
it('should have no runner linked pods running', async () => {
await cleanupJob()
const kc = new k8s.KubeConfig()
kc.loadFromDefault()
const k8sApi = kc.makeApiClient(k8s.CoreV1Api)
2025-07-29 11:06:45 +02:00
const podList = await k8sApi.listNamespacedPod({
namespace: namespace(),
labelSelector: new RunnerInstanceLabel().toString()
})
2025-07-29 11:06:45 +02:00
expect(podList.items.length).toBe(0)
})
it('should have no runner linked secrets', async () => {
await cleanupJob()
const kc = new k8s.KubeConfig()
kc.loadFromDefault()
const k8sApi = kc.makeApiClient(k8s.CoreV1Api)
2025-07-29 11:06:45 +02:00
const secretList = await k8sApi.listNamespacedSecret({
namespace: namespace(),
labelSelector: new RunnerInstanceLabel().toString()
})
2025-07-29 11:06:45 +02:00
expect(secretList.items.length).toBe(0)
})
2022-06-02 15:53:11 -04:00
})