fix: final polish — teardown, image pin, license
This commit is contained in:
@@ -14,12 +14,17 @@ import { createRegistry } from '../../src/config/registry.js'
|
||||
import type { Manager } from '../../src/db/manager.js'
|
||||
import { createManager } from '../../src/db/manager.js'
|
||||
|
||||
// Pinned by digest for wait-strategy stability: the wait below depends on this
|
||||
// image's '[ls.io-init] done.' log line. Bump deliberately if the log changes.
|
||||
const SSHD_IMAGE =
|
||||
'lscr.io/linuxserver/openssh-server@sha256:5b8550a3b703eb4e5efb14a1f491370b7f765febfac5b0b2ed0321cdc74b1476'
|
||||
|
||||
describe('ssh tunnel integration', () => {
|
||||
let network: StartedNetwork
|
||||
let postgres: StartedPostgreSqlContainer
|
||||
let sshd: StartedTestContainer
|
||||
let dir: string
|
||||
let manager: Manager
|
||||
let network: StartedNetwork | undefined
|
||||
let postgres: StartedPostgreSqlContainer | undefined
|
||||
let sshd: StartedTestContainer | undefined
|
||||
let dir: string | undefined
|
||||
let manager: Manager | undefined
|
||||
|
||||
beforeAll(async () => {
|
||||
network = await new Network().start()
|
||||
@@ -29,7 +34,7 @@ describe('ssh tunnel integration', () => {
|
||||
.withNetworkAliases('db')
|
||||
.start()
|
||||
|
||||
sshd = await new GenericContainer('lscr.io/linuxserver/openssh-server:latest')
|
||||
sshd = await new GenericContainer(SSHD_IMAGE)
|
||||
.withNetwork(network)
|
||||
.withEnvironment({
|
||||
PUID: '1000',
|
||||
@@ -70,21 +75,30 @@ describe('ssh tunnel integration', () => {
|
||||
})
|
||||
|
||||
afterAll(async () => {
|
||||
await manager.disposeAll()
|
||||
await sshd.stop()
|
||||
await postgres.stop()
|
||||
await network.stop()
|
||||
rmSync(dir, { recursive: true, force: true })
|
||||
await manager?.disposeAll().catch(() => {})
|
||||
await sshd?.stop().catch(() => {})
|
||||
await postgres?.stop().catch(() => {})
|
||||
await network?.stop().catch(() => {})
|
||||
if (dir) {
|
||||
rmSync(dir, { recursive: true, force: true })
|
||||
}
|
||||
})
|
||||
|
||||
const db = (): Manager => {
|
||||
if (!manager) {
|
||||
throw new Error('setup failed: manager not initialized')
|
||||
}
|
||||
return manager
|
||||
}
|
||||
|
||||
it('queries postgres through the ssh tunnel', async () => {
|
||||
const { driver } = await manager.get('pg-tunneled')
|
||||
const { driver } = await db().get('pg-tunneled')
|
||||
const result = await driver.query({ sql: 'SELECT 1 + 1', rowLimit: 10 })
|
||||
expect(result.rows).toEqual([[2]])
|
||||
})
|
||||
|
||||
it('reports server version through the tunnel', async () => {
|
||||
const { driver } = await manager.get('pg-tunneled')
|
||||
const { driver } = await db().get('pg-tunneled')
|
||||
expect(await driver.serverVersion()).toMatch(/^17\./)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user