import { expect, tap } from '@push.rocks/tapbundle'; import * as docker from '../ts/index.js'; let testDockerHost: docker.DockerHost; tap.test('should create a new Dockersock instance', async () => { testDockerHost = new docker.DockerHost(); return expect(testDockerHost).toBeInstanceOf(docker.DockerHost); }); tap.test('should create a docker swarm', async () => { await testDockerHost.activateSwarm(); }); // Containers tap.test('should list containers', async () => { const containers = await testDockerHost.getContainers(); console.log(containers); }); // Networks tap.test('should list networks', async () => { const networks = await testDockerHost.getNetworks(); console.log(networks); }); tap.test('should create a network', async () => { const newNetwork = await docker.DockerNetwork.createNetwork(testDockerHost, { Name: 'webgateway', }); expect(newNetwork).toBeInstanceOf(docker.DockerNetwork); expect(newNetwork.Name).toEqual('webgateway'); }); tap.test('should remove a network', async () => { const webgateway = await docker.DockerNetwork.getNetworkByName(testDockerHost, 'webgateway'); await webgateway.remove(); }); // Images tap.test('should pull an image from imagetag', async () => { const image = await docker.DockerImage.createFromRegistry(testDockerHost, { imageUrl: 'hosttoday/ht-docker-node', imageTag: 'alpine', }); expect(image).toBeInstanceOf(docker.DockerImage); console.log(image); }); tap.test('should return a change Observable', async (tools) => { const testObservable = await testDockerHost.getEventObservable(); const subscription = testObservable.subscribe((changeObject) => { console.log(changeObject); }); await tools.delayFor(2000); subscription.unsubscribe(); }); // SECRETS tap.test('should create a secret', async () => { const mySecret = await docker.DockerSecret.createSecret(testDockerHost, { name: 'testSecret', version: '1.0.3', contentArg: `{ "hi": "wow"}`, labels: {}, }); console.log(mySecret); }); tap.test('should remove a secret by name', async () => { const mySecret = await docker.DockerSecret.getSecretByName(testDockerHost, 'testSecret'); await mySecret.remove(); }); // SERVICES tap.test('should activate swarm mode', async () => { await testDockerHost.activateSwarm(); }); tap.test('should list all services', async (tools) => { const services = await testDockerHost.getServices(); console.log(services); }); tap.test('should create a service', async () => { const testNetwork = await docker.DockerNetwork.createNetwork(testDockerHost, { Name: 'testNetwork', }); const testSecret = await docker.DockerSecret.createSecret(testDockerHost, { name: 'testSecret', version: '0.0.1', labels: {}, contentArg: '{"hi": "wow"}', }); const testImage = await docker.DockerImage.createFromRegistry(testDockerHost, { imageUrl: 'registry.gitlab.com/hosttoday/ht-docker-static', }); const testService = await docker.DockerService.createService(testDockerHost, { image: testImage, labels: {}, name: 'testService', networks: [testNetwork], networkAlias: 'testService', secrets: [testSecret], ports: ['3000:80'], }); await testService.remove(); await testNetwork.remove(); await testSecret.remove(); }); tap.start();