@elaraai/e3-api-tests 0.0.2-beta.13 → 0.0.2-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cli.d.ts +71 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +139 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/context.d.ts +49 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +108 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/fixtures.d.ts +61 -0
- package/dist/src/fixtures.d.ts.map +1 -0
- package/dist/src/fixtures.js +107 -0
- package/dist/src/fixtures.js.map +1 -0
- package/dist/src/index.d.ts +65 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +85 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/suites/cli.d.ts +15 -0
- package/dist/src/suites/cli.d.ts.map +1 -0
- package/dist/src/suites/cli.js +152 -0
- package/dist/src/suites/cli.js.map +1 -0
- package/dist/src/suites/dataflow.d.ts +12 -0
- package/dist/src/suites/dataflow.d.ts.map +1 -0
- package/dist/src/suites/dataflow.js +167 -0
- package/dist/src/suites/dataflow.js.map +1 -0
- package/dist/src/suites/datasets.d.ts +12 -0
- package/dist/src/suites/datasets.d.ts.map +1 -0
- package/dist/src/suites/datasets.js +88 -0
- package/dist/src/suites/datasets.js.map +1 -0
- package/dist/src/suites/packages.d.ts +12 -0
- package/dist/src/suites/packages.d.ts.map +1 -0
- package/dist/src/suites/packages.js +86 -0
- package/dist/src/suites/packages.js.map +1 -0
- package/dist/src/suites/platform.d.ts +12 -0
- package/dist/src/suites/platform.d.ts.map +1 -0
- package/dist/src/suites/platform.js +114 -0
- package/dist/src/suites/platform.js.map +1 -0
- package/dist/src/suites/repository.d.ts +12 -0
- package/dist/src/suites/repository.d.ts.map +1 -0
- package/dist/src/suites/repository.js +93 -0
- package/dist/src/suites/repository.js.map +1 -0
- package/dist/src/suites/workspaces.d.ts +12 -0
- package/dist/src/suites/workspaces.d.ts.map +1 -0
- package/dist/src/suites/workspaces.js +127 -0
- package/dist/src/suites/workspaces.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Package operations test suite.
|
|
7
|
+
*
|
|
8
|
+
* Tests: import, list, get, export, remove
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
11
|
+
import assert from 'node:assert/strict';
|
|
12
|
+
import { readFileSync } from 'node:fs';
|
|
13
|
+
import { packageList, packageGet, packageImport, packageExport, packageRemove, } from '@elaraai/e3-api-client';
|
|
14
|
+
import { createPackageZip } from '../fixtures.js';
|
|
15
|
+
/**
|
|
16
|
+
* Register package operation tests.
|
|
17
|
+
*
|
|
18
|
+
* @param getContext - Function that returns the current test context
|
|
19
|
+
*/
|
|
20
|
+
export function packageTests(getContext) {
|
|
21
|
+
describe('packages', () => {
|
|
22
|
+
let packageZipPath;
|
|
23
|
+
let packageZip;
|
|
24
|
+
beforeEach(async () => {
|
|
25
|
+
const ctx = getContext();
|
|
26
|
+
packageZipPath = await createPackageZip(ctx.tempDir, 'test-pkg', '1.0.0');
|
|
27
|
+
packageZip = readFileSync(packageZipPath);
|
|
28
|
+
});
|
|
29
|
+
it('packageList returns empty initially', async () => {
|
|
30
|
+
const ctx = getContext();
|
|
31
|
+
const opts = await ctx.opts();
|
|
32
|
+
const packages = await packageList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
33
|
+
assert.deepStrictEqual(packages, []);
|
|
34
|
+
});
|
|
35
|
+
it('packageImport and packageList round-trip', async () => {
|
|
36
|
+
const ctx = getContext();
|
|
37
|
+
const opts = await ctx.opts();
|
|
38
|
+
// Import
|
|
39
|
+
const result = await packageImport(ctx.config.baseUrl, ctx.repoName, packageZip, opts);
|
|
40
|
+
assert.strictEqual(result.name, 'test-pkg');
|
|
41
|
+
assert.strictEqual(result.version, '1.0.0');
|
|
42
|
+
assert.strictEqual(result.packageHash.length, 64); // SHA256 hex
|
|
43
|
+
assert.ok(result.objectCount > 0n);
|
|
44
|
+
// List
|
|
45
|
+
const packages = await packageList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
46
|
+
assert.strictEqual(packages.length, 1);
|
|
47
|
+
assert.strictEqual(packages[0].name, 'test-pkg');
|
|
48
|
+
assert.strictEqual(packages[0].version, '1.0.0');
|
|
49
|
+
});
|
|
50
|
+
it('packageGet returns package object', async () => {
|
|
51
|
+
const ctx = getContext();
|
|
52
|
+
const opts = await ctx.opts();
|
|
53
|
+
await packageImport(ctx.config.baseUrl, ctx.repoName, packageZip, opts);
|
|
54
|
+
const pkg = await packageGet(ctx.config.baseUrl, ctx.repoName, 'test-pkg', '1.0.0', opts);
|
|
55
|
+
// PackageObject has tasks Map with our 'compute' task
|
|
56
|
+
assert.ok(pkg.tasks instanceof Map);
|
|
57
|
+
assert.strictEqual(pkg.tasks.size, 1);
|
|
58
|
+
assert.ok(pkg.tasks.has('compute'));
|
|
59
|
+
});
|
|
60
|
+
it('packageExport returns zip bytes', async () => {
|
|
61
|
+
const ctx = getContext();
|
|
62
|
+
const opts = await ctx.opts();
|
|
63
|
+
await packageImport(ctx.config.baseUrl, ctx.repoName, packageZip, opts);
|
|
64
|
+
const exported = await packageExport(ctx.config.baseUrl, ctx.repoName, 'test-pkg', '1.0.0', opts);
|
|
65
|
+
assert.ok(exported instanceof Uint8Array);
|
|
66
|
+
assert.ok(exported.length > 0);
|
|
67
|
+
// ZIP files start with PK signature
|
|
68
|
+
assert.strictEqual(exported[0], 0x50); // 'P'
|
|
69
|
+
assert.strictEqual(exported[1], 0x4b); // 'K'
|
|
70
|
+
});
|
|
71
|
+
it('packageRemove deletes package', async () => {
|
|
72
|
+
const ctx = getContext();
|
|
73
|
+
const opts = await ctx.opts();
|
|
74
|
+
await packageImport(ctx.config.baseUrl, ctx.repoName, packageZip, opts);
|
|
75
|
+
// Verify exists
|
|
76
|
+
let packages = await packageList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
77
|
+
assert.strictEqual(packages.length, 1);
|
|
78
|
+
// Remove
|
|
79
|
+
await packageRemove(ctx.config.baseUrl, ctx.repoName, 'test-pkg', '1.0.0', opts);
|
|
80
|
+
// Verify gone
|
|
81
|
+
packages = await packageList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
82
|
+
assert.strictEqual(packages.length, 0);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=packages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../../src/suites/packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { TestContext } from '../context.js';
|
|
6
|
+
/**
|
|
7
|
+
* Register platform function integration tests.
|
|
8
|
+
*
|
|
9
|
+
* @param getContext - Function that returns the current test context
|
|
10
|
+
*/
|
|
11
|
+
export declare function platformTests(getContext: () => TestContext): void;
|
|
12
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/suites/platform.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,WAAW,GAAG,IAAI,CAuIjE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Platform function integration test suite.
|
|
7
|
+
*
|
|
8
|
+
* Tests that East Platform functions compile and execute correctly
|
|
9
|
+
* against the API server. These functions allow East programs to
|
|
10
|
+
* interact with the e3 API.
|
|
11
|
+
*/
|
|
12
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
13
|
+
import assert from 'node:assert/strict';
|
|
14
|
+
import { readFileSync } from 'node:fs';
|
|
15
|
+
import { workspaceCreate, workspaceList, workspaceRemove, packageImport, Platform, PlatformImpl, } from '@elaraai/e3-api-client';
|
|
16
|
+
import { StringType, IntegerType, NullType, ArrayType, East } from '@elaraai/east';
|
|
17
|
+
import { createPackageZip } from '../fixtures.js';
|
|
18
|
+
/**
|
|
19
|
+
* Register platform function integration tests.
|
|
20
|
+
*
|
|
21
|
+
* @param getContext - Function that returns the current test context
|
|
22
|
+
*/
|
|
23
|
+
export function platformTests(getContext) {
|
|
24
|
+
describe('platform functions', () => {
|
|
25
|
+
beforeEach(async () => {
|
|
26
|
+
const ctx = getContext();
|
|
27
|
+
const opts = await ctx.opts();
|
|
28
|
+
// Create and import a simple package for workspace tests
|
|
29
|
+
const zipPath = await createPackageZip(ctx.tempDir, 'platform-pkg', '1.0.0');
|
|
30
|
+
const packageZip = readFileSync(zipPath);
|
|
31
|
+
await packageImport(ctx.config.baseUrl, ctx.repoName, packageZip, opts);
|
|
32
|
+
});
|
|
33
|
+
it('repoStatus platform function compiles and runs', async () => {
|
|
34
|
+
const ctx = getContext();
|
|
35
|
+
// Define an East function that uses the platform function
|
|
36
|
+
const getStatus = East.asyncFunction([StringType, StringType, StringType], Platform.Types.RepositoryStatus, ($, url, repo, token) => {
|
|
37
|
+
return Platform.repoStatus(url, repo, token);
|
|
38
|
+
});
|
|
39
|
+
// Compile with platform implementation
|
|
40
|
+
const compiled = East.compileAsync(getStatus, PlatformImpl);
|
|
41
|
+
// Run the compiled function with token from context
|
|
42
|
+
const status = await compiled(ctx.config.baseUrl, ctx.repoName, (await ctx.opts()).token);
|
|
43
|
+
// Verify results
|
|
44
|
+
assert.ok(typeof status.path === 'string' && status.path.length > 0, 'path should be a non-empty string');
|
|
45
|
+
assert.ok(typeof status.objectCount === 'bigint');
|
|
46
|
+
assert.ok(typeof status.packageCount === 'bigint');
|
|
47
|
+
assert.ok(typeof status.workspaceCount === 'bigint');
|
|
48
|
+
});
|
|
49
|
+
it('workspaceList platform function compiles and runs', async () => {
|
|
50
|
+
const ctx = getContext();
|
|
51
|
+
const opts = await ctx.opts();
|
|
52
|
+
// Create a workspace first
|
|
53
|
+
await workspaceCreate(ctx.config.baseUrl, ctx.repoName, 'platform-test-ws', opts);
|
|
54
|
+
// Define an East function that lists workspaces
|
|
55
|
+
const listWorkspaces = East.asyncFunction([StringType, StringType, StringType], ArrayType(Platform.Types.WorkspaceInfo), ($, url, repo, token) => {
|
|
56
|
+
return Platform.workspaceList(url, repo, token);
|
|
57
|
+
});
|
|
58
|
+
// Compile with platform implementation
|
|
59
|
+
const compiled = East.compileAsync(listWorkspaces, PlatformImpl);
|
|
60
|
+
// Run the compiled function
|
|
61
|
+
const workspaces = await compiled(ctx.config.baseUrl, ctx.repoName, (await ctx.opts()).token);
|
|
62
|
+
// Verify results
|
|
63
|
+
assert.strictEqual(workspaces.length, 1);
|
|
64
|
+
assert.strictEqual(workspaces[0].name, 'platform-test-ws');
|
|
65
|
+
// Clean up
|
|
66
|
+
await workspaceRemove(ctx.config.baseUrl, ctx.repoName, 'platform-test-ws', opts);
|
|
67
|
+
});
|
|
68
|
+
it('workspace create/remove flow via platform functions', async () => {
|
|
69
|
+
const ctx = getContext();
|
|
70
|
+
const opts = await ctx.opts();
|
|
71
|
+
// Define East function that creates and lists workspaces
|
|
72
|
+
const createAndList = East.asyncFunction([StringType, StringType, StringType, StringType], ArrayType(Platform.Types.WorkspaceInfo), ($, url, repo, name, token) => {
|
|
73
|
+
// Create workspace
|
|
74
|
+
$.let(Platform.workspaceCreate(url, repo, name, token));
|
|
75
|
+
// Return list
|
|
76
|
+
return Platform.workspaceList(url, repo, token);
|
|
77
|
+
});
|
|
78
|
+
// Compile with platform implementation
|
|
79
|
+
const compiled = East.compileAsync(createAndList, PlatformImpl);
|
|
80
|
+
// Run the compiled function
|
|
81
|
+
const workspaces = await compiled(ctx.config.baseUrl, ctx.repoName, 'east-created-ws', (await ctx.opts()).token);
|
|
82
|
+
// Verify workspace was created
|
|
83
|
+
assert.strictEqual(workspaces.length, 1);
|
|
84
|
+
assert.strictEqual(workspaces[0].name, 'east-created-ws');
|
|
85
|
+
assert.strictEqual(workspaces[0].deployed, false);
|
|
86
|
+
// Clean up using platform function
|
|
87
|
+
const removeWs = East.asyncFunction([StringType, StringType, StringType, StringType], NullType, ($, url, repo, name, token) => {
|
|
88
|
+
return Platform.workspaceRemove(url, repo, name, token);
|
|
89
|
+
});
|
|
90
|
+
const compiledRemove = East.compileAsync(removeWs, PlatformImpl);
|
|
91
|
+
await compiledRemove(ctx.config.baseUrl, ctx.repoName, 'east-created-ws', (await ctx.opts()).token);
|
|
92
|
+
// Verify removed
|
|
93
|
+
const finalList = await workspaceList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
94
|
+
assert.strictEqual(finalList.length, 0);
|
|
95
|
+
});
|
|
96
|
+
it('$.let correctly infers array type from platform function', async () => {
|
|
97
|
+
const ctx = getContext();
|
|
98
|
+
// This test verifies the type inference fix - $.let should produce ArrayExpr not StructExpr
|
|
99
|
+
const listAndCount = East.asyncFunction([StringType, StringType, StringType], IntegerType, ($, url, repo, token) => {
|
|
100
|
+
// $.let should correctly infer this as ArrayExpr
|
|
101
|
+
const packages = $.let(Platform.packageList(url, repo, token));
|
|
102
|
+
// .size() should work since it's an array
|
|
103
|
+
return packages.size();
|
|
104
|
+
});
|
|
105
|
+
// Compile with platform implementation
|
|
106
|
+
const compiled = East.compileAsync(listAndCount, PlatformImpl);
|
|
107
|
+
// Run the compiled function
|
|
108
|
+
const count = await compiled(ctx.config.baseUrl, ctx.repoName, (await ctx.opts()).token);
|
|
109
|
+
// Should have 1 package (imported in beforeEach)
|
|
110
|
+
assert.strictEqual(count, 1n);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/suites/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { TestContext } from '../context.js';
|
|
6
|
+
/**
|
|
7
|
+
* Register repository operation tests.
|
|
8
|
+
*
|
|
9
|
+
* @param getContext - Function that returns the current test context
|
|
10
|
+
*/
|
|
11
|
+
export declare function repositoryTests(getContext: () => TestContext): void;
|
|
12
|
+
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/suites/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,WAAW,GAAG,IAAI,CAmGnE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Repository operations test suite.
|
|
7
|
+
*
|
|
8
|
+
* Tests: status, gc, create, remove
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it } from 'node:test';
|
|
11
|
+
import assert from 'node:assert/strict';
|
|
12
|
+
import { variant } from '@elaraai/east';
|
|
13
|
+
import { repoStatus, repoGc, repoCreate, repoRemove, packageRemove, } from '@elaraai/e3-api-client';
|
|
14
|
+
/**
|
|
15
|
+
* Register repository operation tests.
|
|
16
|
+
*
|
|
17
|
+
* @param getContext - Function that returns the current test context
|
|
18
|
+
*/
|
|
19
|
+
export function repositoryTests(getContext) {
|
|
20
|
+
describe('repository', () => {
|
|
21
|
+
it('repoStatus returns repository info', async () => {
|
|
22
|
+
const ctx = getContext();
|
|
23
|
+
const opts = await ctx.opts();
|
|
24
|
+
const status = await repoStatus(ctx.config.baseUrl, ctx.repoName, opts);
|
|
25
|
+
assert.ok(typeof status.path === 'string' && status.path.length > 0, 'path should be a non-empty string');
|
|
26
|
+
assert.ok(typeof status.objectCount === 'bigint');
|
|
27
|
+
assert.ok(typeof status.packageCount === 'bigint');
|
|
28
|
+
assert.ok(typeof status.workspaceCount === 'bigint');
|
|
29
|
+
});
|
|
30
|
+
it('repoGc with dryRun returns stats', async () => {
|
|
31
|
+
const ctx = getContext();
|
|
32
|
+
const opts = await ctx.opts();
|
|
33
|
+
const result = await repoGc(ctx.config.baseUrl, ctx.repoName, { dryRun: true, minAge: variant('none', null) }, opts);
|
|
34
|
+
// Empty repo - nothing to delete
|
|
35
|
+
assert.strictEqual(result.deletedObjects, 0n);
|
|
36
|
+
assert.strictEqual(result.deletedPartials, 0n);
|
|
37
|
+
assert.ok(result.retainedObjects >= 0n);
|
|
38
|
+
assert.ok(result.bytesFreed >= 0n);
|
|
39
|
+
});
|
|
40
|
+
it('repoGc runs garbage collection', async () => {
|
|
41
|
+
const ctx = getContext();
|
|
42
|
+
const opts = await ctx.opts();
|
|
43
|
+
// Import a package then remove it to create garbage
|
|
44
|
+
const zipPath = await ctx.createPackage('gc-test-pkg', '1.0.0');
|
|
45
|
+
await ctx.importPackage(zipPath);
|
|
46
|
+
// Remove the package to create garbage (orphaned objects)
|
|
47
|
+
await packageRemove(ctx.config.baseUrl, ctx.repoName, 'gc-test-pkg', '1.0.0', opts);
|
|
48
|
+
// Run GC (not dry run)
|
|
49
|
+
const result = await repoGc(ctx.config.baseUrl, ctx.repoName, { dryRun: false, minAge: variant('none', null) }, opts);
|
|
50
|
+
// Should return valid stats
|
|
51
|
+
assert.ok(typeof result.deletedObjects === 'bigint');
|
|
52
|
+
assert.ok(typeof result.retainedObjects === 'bigint');
|
|
53
|
+
});
|
|
54
|
+
it('repoCreate creates a new repository', async () => {
|
|
55
|
+
const ctx = getContext();
|
|
56
|
+
const opts = await ctx.opts();
|
|
57
|
+
const newRepoName = `create-test-${Date.now()}`;
|
|
58
|
+
try {
|
|
59
|
+
// Create a new repo via API
|
|
60
|
+
const result = await repoCreate(ctx.config.baseUrl, newRepoName, opts);
|
|
61
|
+
assert.strictEqual(result, newRepoName);
|
|
62
|
+
// Verify it exists by getting status
|
|
63
|
+
const status = await repoStatus(ctx.config.baseUrl, newRepoName, opts);
|
|
64
|
+
assert.ok(typeof status.path === 'string' && status.path.length > 0, 'new repo should have a valid path');
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
// Clean up
|
|
68
|
+
try {
|
|
69
|
+
await repoRemove(ctx.config.baseUrl, newRepoName, opts);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Ignore cleanup errors
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
it('repoRemove removes an existing repository', async () => {
|
|
77
|
+
const ctx = getContext();
|
|
78
|
+
const opts = await ctx.opts();
|
|
79
|
+
const tempRepoName = `remove-test-${Date.now()}`;
|
|
80
|
+
// Create a repo to delete
|
|
81
|
+
await repoCreate(ctx.config.baseUrl, tempRepoName, opts);
|
|
82
|
+
// Verify it exists
|
|
83
|
+
const status = await repoStatus(ctx.config.baseUrl, tempRepoName, opts);
|
|
84
|
+
assert.ok(typeof status.path === 'string' && status.path.length > 0);
|
|
85
|
+
// Remove it - should complete without error
|
|
86
|
+
await repoRemove(ctx.config.baseUrl, tempRepoName, opts);
|
|
87
|
+
// Verify removal worked by trying to create it again (should succeed if it was removed)
|
|
88
|
+
await repoCreate(ctx.config.baseUrl, tempRepoName, opts);
|
|
89
|
+
await repoRemove(ctx.config.baseUrl, tempRepoName, opts); // Clean up
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/suites/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { TestContext } from '../context.js';
|
|
6
|
+
/**
|
|
7
|
+
* Register workspace operation tests.
|
|
8
|
+
*
|
|
9
|
+
* @param getContext - Function that returns the current test context
|
|
10
|
+
*/
|
|
11
|
+
export declare function workspaceTests(getContext: () => TestContext): void;
|
|
12
|
+
//# sourceMappingURL=workspaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../src/suites/workspaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,WAAW,GAAG,IAAI,CAkIlE"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Workspace operations test suite.
|
|
7
|
+
*
|
|
8
|
+
* Tests: create, list, get, status, deploy, remove
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
11
|
+
import assert from 'node:assert/strict';
|
|
12
|
+
import { readFileSync } from 'node:fs';
|
|
13
|
+
import { packageImport, workspaceList, workspaceCreate, workspaceGet, workspaceStatus, workspaceRemove, workspaceDeploy, taskList, taskGet, dataflowGraph, } from '@elaraai/e3-api-client';
|
|
14
|
+
import { createPackageZip } from '../fixtures.js';
|
|
15
|
+
/**
|
|
16
|
+
* Register workspace operation tests.
|
|
17
|
+
*
|
|
18
|
+
* @param getContext - Function that returns the current test context
|
|
19
|
+
*/
|
|
20
|
+
export function workspaceTests(getContext) {
|
|
21
|
+
describe('workspaces', () => {
|
|
22
|
+
it('workspaceList returns empty initially', async () => {
|
|
23
|
+
const ctx = getContext();
|
|
24
|
+
const opts = await ctx.opts();
|
|
25
|
+
const workspaces = await workspaceList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
26
|
+
assert.deepStrictEqual(workspaces, []);
|
|
27
|
+
});
|
|
28
|
+
it('workspaceCreate and workspaceList round-trip', async () => {
|
|
29
|
+
const ctx = getContext();
|
|
30
|
+
const opts = await ctx.opts();
|
|
31
|
+
const info = await workspaceCreate(ctx.config.baseUrl, ctx.repoName, 'test-ws', opts);
|
|
32
|
+
assert.strictEqual(info.name, 'test-ws');
|
|
33
|
+
assert.strictEqual(info.deployed, false);
|
|
34
|
+
const workspaces = await workspaceList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
35
|
+
assert.strictEqual(workspaces.length, 1);
|
|
36
|
+
assert.strictEqual(workspaces[0].name, 'test-ws');
|
|
37
|
+
// Clean up
|
|
38
|
+
await workspaceRemove(ctx.config.baseUrl, ctx.repoName, 'test-ws', opts);
|
|
39
|
+
});
|
|
40
|
+
it('workspaceRemove deletes workspace', async () => {
|
|
41
|
+
const ctx = getContext();
|
|
42
|
+
const opts = await ctx.opts();
|
|
43
|
+
await workspaceCreate(ctx.config.baseUrl, ctx.repoName, 'to-delete', opts);
|
|
44
|
+
let workspaces = await workspaceList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
45
|
+
assert.strictEqual(workspaces.length, 1);
|
|
46
|
+
await workspaceRemove(ctx.config.baseUrl, ctx.repoName, 'to-delete', opts);
|
|
47
|
+
workspaces = await workspaceList(ctx.config.baseUrl, ctx.repoName, opts);
|
|
48
|
+
assert.strictEqual(workspaces.length, 0);
|
|
49
|
+
});
|
|
50
|
+
describe('with deployed package', () => {
|
|
51
|
+
beforeEach(async () => {
|
|
52
|
+
const ctx = getContext();
|
|
53
|
+
const opts = await ctx.opts();
|
|
54
|
+
// Create and import a test package (idempotent - may already exist)
|
|
55
|
+
const zipPath = await createPackageZip(ctx.tempDir, 'compute-pkg', '1.0.0');
|
|
56
|
+
const packageZip = readFileSync(zipPath);
|
|
57
|
+
try {
|
|
58
|
+
await packageImport(ctx.config.baseUrl, ctx.repoName, packageZip, opts);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Package may already exist from previous test
|
|
62
|
+
}
|
|
63
|
+
// Create workspace and deploy (idempotent - may already exist)
|
|
64
|
+
try {
|
|
65
|
+
await workspaceCreate(ctx.config.baseUrl, ctx.repoName, 'deployed-ws', opts);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Workspace may already exist from previous test
|
|
69
|
+
}
|
|
70
|
+
await workspaceDeploy(ctx.config.baseUrl, ctx.repoName, 'deployed-ws', 'compute-pkg@1.0.0', opts);
|
|
71
|
+
});
|
|
72
|
+
it('workspaceGet returns deployed state', async () => {
|
|
73
|
+
const ctx = getContext();
|
|
74
|
+
const opts = await ctx.opts();
|
|
75
|
+
const state = await workspaceGet(ctx.config.baseUrl, ctx.repoName, 'deployed-ws', opts);
|
|
76
|
+
assert.ok(state !== null);
|
|
77
|
+
assert.strictEqual(state.packageName, 'compute-pkg');
|
|
78
|
+
assert.strictEqual(state.packageVersion, '1.0.0');
|
|
79
|
+
});
|
|
80
|
+
it('workspaceStatus returns datasets and tasks', async () => {
|
|
81
|
+
const ctx = getContext();
|
|
82
|
+
const opts = await ctx.opts();
|
|
83
|
+
const status = await workspaceStatus(ctx.config.baseUrl, ctx.repoName, 'deployed-ws', opts);
|
|
84
|
+
assert.strictEqual(status.workspace, 'deployed-ws');
|
|
85
|
+
// Should have input and output datasets
|
|
86
|
+
assert.ok(status.datasets.length >= 2);
|
|
87
|
+
// Should have the compute task
|
|
88
|
+
assert.strictEqual(status.tasks.length, 1);
|
|
89
|
+
assert.strictEqual(status.tasks[0].name, 'compute');
|
|
90
|
+
// Summary should match
|
|
91
|
+
assert.strictEqual(status.summary.tasks.total, 1n);
|
|
92
|
+
});
|
|
93
|
+
it('taskList returns task info', async () => {
|
|
94
|
+
const ctx = getContext();
|
|
95
|
+
const opts = await ctx.opts();
|
|
96
|
+
const tasks = await taskList(ctx.config.baseUrl, ctx.repoName, 'deployed-ws', opts);
|
|
97
|
+
assert.ok(Array.isArray(tasks));
|
|
98
|
+
assert.ok(tasks.length > 0, 'should have at least one task');
|
|
99
|
+
const computeTask = tasks.find(t => t.name === 'compute');
|
|
100
|
+
assert.ok(computeTask, 'should have compute task');
|
|
101
|
+
assert.ok(computeTask.hash.length > 0);
|
|
102
|
+
});
|
|
103
|
+
it('taskGet returns task details', async () => {
|
|
104
|
+
const ctx = getContext();
|
|
105
|
+
const opts = await ctx.opts();
|
|
106
|
+
const task = await taskGet(ctx.config.baseUrl, ctx.repoName, 'deployed-ws', 'compute', opts);
|
|
107
|
+
assert.strictEqual(task.name, 'compute');
|
|
108
|
+
assert.ok(task.hash.length > 0);
|
|
109
|
+
assert.ok(Array.isArray(task.inputs));
|
|
110
|
+
assert.ok(task.output);
|
|
111
|
+
});
|
|
112
|
+
it('dataflowGraph returns dependency graph', async () => {
|
|
113
|
+
const ctx = getContext();
|
|
114
|
+
const opts = await ctx.opts();
|
|
115
|
+
const graph = await dataflowGraph(ctx.config.baseUrl, ctx.repoName, 'deployed-ws', opts);
|
|
116
|
+
assert.ok(Array.isArray(graph.tasks));
|
|
117
|
+
assert.ok(graph.tasks.length > 0);
|
|
118
|
+
const computeTask = graph.tasks.find(t => t.name === 'compute');
|
|
119
|
+
assert.ok(computeTask);
|
|
120
|
+
assert.ok(Array.isArray(computeTask.inputs));
|
|
121
|
+
assert.ok(computeTask.output);
|
|
122
|
+
assert.ok(Array.isArray(computeTask.dependsOn));
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/suites/workspaces.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elaraai/e3-api-tests",
|
|
3
|
-
"version": "0.0.2-beta.
|
|
3
|
+
"version": "0.0.2-beta.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "East Execution Engine API Compliance Tests - shared test suites for e3 API implementations",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"directory": "packages/e3-api-tests"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@elaraai/e3": "^0.0.2-beta.
|
|
39
|
-
"@elaraai/e3-api-client": "^",
|
|
40
|
-
"@elaraai/e3-cli": "^",
|
|
41
|
-
"@elaraai/east": "^0.0.1-beta.
|
|
38
|
+
"@elaraai/e3": "^0.0.2-beta.15",
|
|
39
|
+
"@elaraai/e3-api-client": "^0.0.2-beta.15",
|
|
40
|
+
"@elaraai/e3-cli": "^0.0.2-beta.15",
|
|
41
|
+
"@elaraai/east": "^0.0.1-beta.30"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^22.0.0",
|