Skip to content

Commit

Permalink
Merge branch 'master' into sbruens/license-file
Browse files Browse the repository at this point in the history
  • Loading branch information
sbruens committed Sep 4, 2024
2 parents 40d6fa2 + 933dde2 commit c5aaa4a
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 12 deletions.
52 changes: 48 additions & 4 deletions server_manager/www/app.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,6 @@ describe('App', () => {
await appRoot.getServerView('');
const serverList = appRoot.serverList;

console.log(`managedServers.length: ${managedServers.length}`);
console.log(`manualServers.length: ${manualServers.length}`);

expect(serverList.length).toEqual(
manualServers.length + managedServers.length
);
Expand Down Expand Up @@ -134,13 +131,60 @@ describe('App', () => {
);
});

it('shows selected server and access keys', async done => {
const SERVER_ID = 'fake-manual-server-api-url-1';
const manualServerRepo = new FakeManualServerRepository();
const server = await manualServerRepo.addServer({
certSha256: 'cert',
apiUrl: SERVER_ID,
});
await server.addAccessKey();

const appRoot = document.getElementById('appRoot') as AppRoot;
const app = createTestApp(appRoot, undefined, manualServerRepo);
await app.start();
await app.showServer(server);
const view = await appRoot.getServerView(SERVER_ID);

expect(appRoot.currentPage).toEqual('serverView');
expect(appRoot.selectedServerId).toEqual(SERVER_ID);
setTimeout(() => {
expect(view.accessKeyRows.length).toEqual(1);
done();
}, 100);
});

it('shows selected server and access keys for non-semantic version server', async done => {
const SERVER_ID = 'fake-manual-server-api-url-1';
const manualServerRepo = new FakeManualServerRepository();
const server = await manualServerRepo.addServer({
certSha256: 'cert',
apiUrl: SERVER_ID,
});
spyOn(server, 'getVersion').and.returnValue('dev');
await server.addAccessKey();

const appRoot = document.getElementById('appRoot') as AppRoot;
const app = createTestApp(appRoot, undefined, manualServerRepo);
await app.start();
await app.showServer(server);
const view = await appRoot.getServerView(SERVER_ID);

expect(appRoot.currentPage).toEqual('serverView');
expect(appRoot.selectedServerId).toEqual(SERVER_ID);
setTimeout(() => {
expect(view.accessKeyRows.length).toEqual(1);
done();
}, 100);
});

it('shows progress screen once DigitalOcean droplets are created', async () => {
// Start the app with a fake DigitalOcean token.
const appRoot = document.getElementById('appRoot') as AppRoot;
const cloudAccounts = new FakeCloudAccounts(new FakeDigitalOceanAccount());
const app = createTestApp(appRoot, cloudAccounts);
await app.start();
await app.createDigitalOceanServer(new Region('_fake-region-id'));
await app.createDigitalOceanServer(new Region('_fake-region-id'), false);
expect(appRoot.currentPage).toEqual('serverView');
const view = await appRoot.getServerView(appRoot.selectedServerId);
expect(view.selectedPage).toEqual('progressView');
Expand Down
2 changes: 1 addition & 1 deletion server_manager/www/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -928,7 +928,7 @@ export class App {
!server.getDefaultDataLimit() &&
!hasSeenFeatureMetricsNotification();

if (version) {
if (semver.valid(version)) {
view.isAccessKeyPortEditable = semver.gte(
version,
CHANGE_KEYS_PORT_VERSION
Expand Down
2 changes: 1 addition & 1 deletion server_manager/www/shadowbox_server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ export class ShadowboxServer implements server.Server {

private getDefaultDataLimitPath(): string {
const version = this.getVersion();
if (semver.gte(version, '1.4.0')) {
if (semver.valid(version) && semver.gte(version, '1.4.0')) {
// Data limits became a permanent feature in shadowbox v1.4.0.
return 'server/access-key-data-limit';
}
Expand Down
27 changes: 21 additions & 6 deletions server_manager/www/testing/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,12 @@ export class FakeServer implements server.Server {
private metricsId: string;
private metricsEnabled = false;
apiUrl: string;
constructor(protected id: string) {
private accessKeys: server.AccessKey[] = [];

constructor(
protected id: string,
private readonly version: string
) {
this.metricsId = Math.random().toString();
}
getId() {
Expand All @@ -132,13 +137,17 @@ export class FakeServer implements server.Server {
return Promise.resolve();
}
getVersion() {
return '1.2.3';
return this.version;
}
getAccessKey(accessKeyId: server.AccessKeyId) {
const accessKey = this.accessKeys.find(key => key.id === accessKeyId);
if (accessKey) {
return Promise.resolve(accessKey);
}
return Promise.reject(new Error(`Access key "${accessKeyId}" not found`));
}
listAccessKeys() {
return Promise.resolve([]);
return Promise.resolve(this.accessKeys);
}
getMetricsEnabled() {
return this.metricsEnabled;
Expand All @@ -160,7 +169,13 @@ export class FakeServer implements server.Server {
return Promise.resolve(new Map<server.AccessKeyId, number>());
}
addAccessKey() {
return Promise.reject(new Error('FakeServer.addAccessKey not implemented'));
const accessKey = {
id: Math.floor(Math.random()).toString(),
name: 'test-name',
accessUrl: 'test-access-url',
};
this.accessKeys.push(accessKey);
return Promise.resolve(accessKey);
}
renameAccessKey(_accessKeyId: server.AccessKeyId, _name: string) {
return Promise.reject(
Expand Down Expand Up @@ -220,7 +235,7 @@ export class FakeManualServer
implements server.ManualServer
{
constructor(public manualServerConfig: server.ManualServerConfig) {
super(manualServerConfig.apiUrl);
super(manualServerConfig.apiUrl, 'dev');
}
getManagementApiUrl() {
return this.manualServerConfig.apiUrl;
Expand Down Expand Up @@ -263,7 +278,7 @@ export class FakeManagedServer
id: string,
private isInstalled = true
) {
super(id);
super(id, '1.2.3');
}
async *monitorInstallProgress() {
yield 0.5;
Expand Down

0 comments on commit c5aaa4a

Please sign in to comment.