hetznercloud/test/test.ts

43 lines
1.3 KiB
TypeScript

import { expect, expectAsync, tap } from '@push.rocks/tapbundle';
import * as hetznercloud from '../ts/index.js';
import * as qenv from '@push.rocks/qenv';
const testQenv = new qenv.Qenv('./', './.nogit/');
let testAccount: hetznercloud.HetznerAccount;
tap.test('should create a valid hetzer account', async () => {
testAccount = new hetznercloud.HetznerAccount(
await testQenv.getEnvVarOnDemand('HETZNER_API_TOKEN')
);
expect(testAccount).toBeInstanceOf(hetznercloud.HetznerAccount);
});
tap.test('should be able to list all servers', async () => {
const servers = await testAccount.getServers();
expect(servers).toBeArray();
console.log(JSON.stringify(servers, null, 2));
});
const testserver = tap.test('should be able to create a server', async (toolsArg) => {
const newServer = await testAccount.createServer({
name: 'testserver',
location: 'nbg1',
type: 'cpx41',
labels: {
servezoneId: 'testzone',
},
});
expect(newServer).toBeInstanceOf(hetznercloud.HetznerServer);
console.log(newServer);
await toolsArg.delayFor(10000);
return newServer;
});
tap.test('should be able to delete a server', async () => {
const testServer: hetznercloud.HetznerServer =
await (testserver.testResultPromise as Promise<hetznercloud.HetznerServer>);
await testServer.delete();
});
tap.start();