Skip to content

Commit 41df134

Browse files
committed
Allow the API port to be set via an environment variable
1 parent 4c29716 commit 41df134

File tree

10 files changed

+104
-73
lines changed

10 files changed

+104
-73
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ jobs:
6969
env:
7070
- IMG=existdb/existdb:latest
7171
- API_XAR=https://www.fusiondb.com/download/fusion-studio-api-1.1.1.xar
72+
- API_PORT=8080
7273
before_script:
7374
- docker pull $IMG
7475
- docker create --name exist-ci -p 8080:8080 $IMG
@@ -88,6 +89,7 @@ jobs:
8889
env:
8990
- IMG=existdb/existdb:5.2.0
9091
- API_XAR=https://www.fusiondb.com/download/fusion-studio-api-1.1.1.xar
92+
- API_PORT=8080
9193
before_script:
9294
- docker pull $IMG
9395
- docker create --name exist-ci -p 8080:8080 $IMG

cypress/integration/api.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
/// <reference types="Cypress" />
2+
import { mkApiUrl, mkApiPathUrl, fsUrl } from '../support/config.js';
23
import { dialogTitle, dialogBody, dialogMainButton, dialog } from '../support/utils';
34

45
context('Fusion Studio', function () {
56
describe('API minimum version', function () {
67
it('should connect with newer api', function () {
7-
cy.visit('http://localhost:3000', {
8+
cy.visit(fsUrl, {
89
onBeforeLoad(win) {
9-
cy.stub(win, 'fetch').callThrough().withArgs('http://localhost:8080/exist/restxq/fusiondb/version').as('version api').resolves({
10+
cy.stub(win, 'fetch').callThrough().withArgs(mkApiUrl('/version')).as('version api').resolves({
1011
status: 200,
1112
ok: true,
1213
json: () => ({
@@ -24,12 +25,12 @@ context('Fusion Studio', function () {
2425
.should('be.visible')
2526
.get('.theia-preload').should('not.exist');
2627
cy.addConnection();
27-
cy.getTreeNode('admin@http://localhost:8080/db').should('exist');
28+
cy.getTreeNode(mkApiPathUrl('admin', '/db')).should('exist');
2829
})
2930
it('shouldn\'t connect with older api', function () {
30-
cy.visit('http://localhost:3000', {
31+
cy.visit(fsUrl, {
3132
onBeforeLoad(win) {
32-
cy.stub(win, 'fetch').callThrough().withArgs('http://localhost:8080/exist/restxq/fusiondb/version').as('version api').resolves({
33+
cy.stub(win, 'fetch').callThrough().withArgs(mkApiUrl('/version')).as('version api').resolves({
3334
status: 200,
3435
ok: true,
3536
json: () => ({

cypress/integration/eval_panel.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/// <reference types="Cypress" />
2+
import { fsUrl } from '../support/config.js';
23
context('Fusion Studio', function() {
34
beforeEach('IDE', function(){
4-
cy.visit('http://localhost:3000')
5+
cy.visit(fsUrl)
56
.get('#theia-top-panel', {timeout: 30000})
67
.should('be.visible')
78
.get('.theia-preload').should('not.exist');
Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/// <reference types="Cypress" />
2+
import { mkApiPathUrl, fsUrl } from '../support/config.js';
23
import '@4tw/cypress-drag-drop'
34
import { treenode, dialogTitle, dialogBody, dialogMainButton, dialog } from '../support/utils';
45
context('Fusion Studio', function () {
@@ -9,102 +10,102 @@ context('Fusion Studio', function () {
910
});
1011
describe('Documents and Collections', function () {
1112
it('Browse to root dir "db"', function () {
12-
cy.visit('http://localhost:3000')
13+
cy.visit(fsUrl)
1314
.get('#theia-top-panel', { timeout: 30000 })
1415
.should('be.visible')
1516
.get('.theia-preload').should('not.exist');
1617
cy.addConnection();
1718
cy.get('.fusion-item').should('have.length', 5).its('length').then(count => {
18-
cy.getTreeNode('admin@http://localhost:8080/db').click();
19+
cy.getTreeNode(mkApiPathUrl('admin', '/db')).click();
1920
cy.get('.fusion-item').should('have.length.gt', count);
2021
});
2122
})
2223
it('create test collections', function () {
23-
cy.addCollection('admin@http://localhost:8080/db', 'test_col');
24-
cy.getTreeNode('admin@http://localhost:8080/db/test_col').click();
25-
cy.addCollection('admin@http://localhost:8080/db/test_col', 'col1');
26-
cy.addCollection('admin@http://localhost:8080/db/test_col', 'col2');
27-
cy.addCollection('admin@http://localhost:8080/db/test_col', 'col3');
24+
cy.addCollection(mkApiPathUrl('admin', '/db'), 'test_col');
25+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col')).click();
26+
cy.addCollection(mkApiPathUrl('admin', '/db/test_col'), 'col1');
27+
cy.addCollection(mkApiPathUrl('admin', '/db/test_col'), 'col2');
28+
cy.addCollection(mkApiPathUrl('admin', '/db/test_col'), 'col3');
2829
})
2930
it('create text document', function () {
30-
cy.addDocument('admin@http://localhost:8080/db/test_col', 'text_file.txt');
31+
cy.addDocument(mkApiPathUrl('admin', '/db/test_col'), 'text_file.txt');
3132
})
3233
})
3334
describe('Drag and drop', function () {
3435
it('drag move document', function () {
3536
cy.waitForLoading();
36-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/text_file.txt').should('be.visible')
37-
.drag(treenode('admin@http://localhost:8080/db/test_col/col1'));
37+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/text_file.txt')).should('be.visible')
38+
.drag(treenode(mkApiPathUrl('admin', '/db/test_col/col1')));
3839
cy.waitForLoading();
39-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/text_file.txt').should('not.exist');
40-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col1/text_file.txt').should('be.visible');
40+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/text_file.txt')).should('not.exist');
41+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col1/text_file.txt')).should('be.visible');
4142
})
4243
it('drag copy document', function () {
4344
cy.waitForLoading();
44-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col1/text_file.txt')
45-
.drag(treenode('admin@http://localhost:8080/db/test_col/col2'), { ctrlKey: true });
45+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col1/text_file.txt'))
46+
.drag(treenode(mkApiPathUrl('admin', '/db/test_col/col2')), { ctrlKey: true });
4647
cy.waitForLoading();
47-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col1/text_file.txt').should('be.visible');
48-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/text_file.txt').should('be.visible');
48+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col1/text_file.txt')).should('be.visible');
49+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/text_file.txt')).should('be.visible');
4950
})
5051
it('drag copy collection', function () {
5152
cy.waitForLoading();
52-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col1').should('be.visible')
53-
.drag(treenode('admin@http://localhost:8080/db/test_col/col2'), { ctrlKey: true });
53+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col1')).should('be.visible')
54+
.drag(treenode(mkApiPathUrl('admin', '/db/test_col/col2')), { ctrlKey: true });
5455
cy.waitForLoading();
55-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col1').should('be.visible');
56-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/col1').should('be.visible').click();
56+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col1')).should('be.visible');
57+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/col1')).should('be.visible').click();
5758
cy.waitForLoading();
58-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/col1/text_file.txt').should('be.visible');
59+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/col1/text_file.txt')).should('be.visible');
5960
})
6061
it('drag move collection', function () {
6162
cy.waitForLoading();
62-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col1').should('be.visible')
63-
.drag(treenode('admin@http://localhost:8080/db/test_col/col3'));
63+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col1')).should('be.visible')
64+
.drag(treenode(mkApiPathUrl('admin', '/db/test_col/col3')));
6465
cy.waitForLoading();
65-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col3/col1').should('be.visible');
66-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col1').should('not.exist');
66+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col3/col1')).should('be.visible');
67+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col1')).should('not.exist');
6768
})
6869
})
6970
describe('Renaming', function () {
7071
it('rename a document', function () {
7172
cy.waitForLoading();
72-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/text_file.txt').should('be.visible').rightclick();
73+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/text_file.txt')).should('be.visible').rightclick();
7374
cy.getMenuCommand('fusion.rename').should('be.visible').click()
7475
cy.get('.fs-inline-input').should('exist').find('input.theia-input[type=text]').should('contain.value', 'text_file.txt').clear().type('new_name.txt{enter}');
7576
cy.waitForLoading();
76-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/text_file.txt').should('not.exist');
77-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/new_name.txt').should('be.visible');
77+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/text_file.txt')).should('not.exist');
78+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/new_name.txt')).should('be.visible');
7879
})
7980
it('rename a collection', function () {
8081
cy.waitForLoading();
81-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/col1').should('be.visible').rightclick();
82+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/col1')).should('be.visible').rightclick();
8283
cy.getMenuCommand('fusion.rename').should('be.visible').click()
8384
cy.get('.fs-inline-input').should('exist').find('input.theia-input[type=text]').should('contain.value', 'col1').clear().type('other_col1{enter}');
8485
cy.waitForLoading();
85-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/col1').should('not.exist');
86-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/other_col1').should('be.visible');
86+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/col1')).should('not.exist');
87+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/other_col1')).should('be.visible');
8788
})
8889
})
8990
describe('Deleting', function () {
9091
it('delete a document', function () {
9192
cy.waitForLoading();
92-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/new_name.txt').should('be.visible').rightclick();
93+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/new_name.txt')).should('be.visible').rightclick();
9394
cy.getMenuCommand('fusion.delete').should('be.visible').click()
9495
cy.get(dialogTitle).should('contain.text', 'Delete document');
9596
cy.get(dialogBody).should('be.visible').find('p').should('contain.text', 'Are you sure you want to delete the document: new_name.txt?');
9697
cy.get(dialogMainButton).should('be.visible').click();
9798
cy.get(dialog).should('not.exist');
9899
cy.waitForLoading();
99-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2/new_name.txt').should('not.exist');
100+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2/new_name.txt')).should('not.exist');
100101
})
101102
it('delete multiple objects', function () {
102103
cy.waitForLoading();
103-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2').should('be.visible').click();
104+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2')).should('be.visible').click();
104105
cy.get('body').type('{ctrl}', {release: false})
105-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col3').should('be.visible').click();
106+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col3')).should('be.visible').click();
106107
cy.get('body').type('{ctrl}')
107-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2').should('be.visible').rightclick();
108+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2')).should('be.visible').rightclick();
108109
cy.getMenuCommand('fusion.delete').should('be.visible').click()
109110
cy.get(dialogTitle).should('contain.text', 'Delete items');
110111
cy.get(dialogBody).should('be.visible').find('p')
@@ -114,19 +115,19 @@ context('Fusion Studio', function () {
114115
cy.get(dialogMainButton).should('be.visible').click();
115116
cy.get(dialog).should('not.exist');
116117
cy.waitForLoading();
117-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col2').should('not.exist');
118-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/col3').should('not.exist');
118+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col2')).should('not.exist');
119+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/col3')).should('not.exist');
119120
})
120121
it('delete a collection', function () {
121122
cy.waitForLoading();
122-
cy.getTreeNode('admin@http://localhost:8080/db/test_col').should('be.visible').rightclick();
123+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col')).should('be.visible').rightclick();
123124
cy.getMenuCommand('fusion.delete').should('be.visible').click()
124125
cy.get(dialogTitle).should('contain.text', 'Delete collection');
125126
cy.get(dialogBody).should('be.visible').find('p').should('contain.text', 'Are you sure you want to delete the collection: test_col?');
126127
cy.get(dialogMainButton).should('be.visible').click();
127128
cy.get(dialog).should('not.exist');
128129
cy.waitForLoading();
129-
cy.getTreeNode('admin@http://localhost:8080/db/test_col').should('not.exist');
130+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col')).should('not.exist');
130131
})
131132
})
132133
})

cypress/integration/properties.js

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/// <reference types="Cypress" />
2+
import { mkApiPathUrl, fsUrl } from '../support/config.js';
23
import '@4tw/cypress-drag-drop'
34
import { dialogTitle, dialogBody, dialogMainButton, dialogSecondaryButton, dialog } from '../support/utils';
45
context('Properties dialog', function () {
@@ -9,28 +10,28 @@ context('Properties dialog', function () {
910
});
1011
after(function () {
1112
cy.waitForLoading();
12-
cy.getTreeNode('admin@http://localhost:8080/db/new_test_col').rightclick();
13+
cy.getTreeNode(mkApiPathUrl('admin', '/db/new_test_col')).rightclick();
1314
cy.getMenuCommand('fusion.delete').click()
1415
cy.get(dialogMainButton).click();
1516
});
1617
before(function () {
17-
cy.visit('http://localhost:3000')
18+
cy.visit(fsUrl)
1819
.get('#theia-top-panel', { timeout: 30000 })
1920
.should('be.visible')
2021
.get('.theia-preload').should('not.exist');
2122
cy.addConnection();
2223
cy.waitForLoading();
23-
cy.getTreeNode('admin@http://localhost:8080/db').click();
24-
cy.addCollection('admin@http://localhost:8080/db', 'test_col');
24+
cy.getTreeNode(mkApiPathUrl('admin', '/db')).click();
25+
cy.addCollection(mkApiPathUrl('admin', '/db'), 'test_col');
2526
cy.waitForLoading();
26-
cy.getTreeNode('admin@http://localhost:8080/db/test_col').click();
27-
cy.addDocument('admin@http://localhost:8080/db/test_col', 'text_file.txt')
28-
cy.addDocument('admin@http://localhost:8080/db/test_col', 'xml_file.xml', 'xml')
27+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col')).click();
28+
cy.addDocument(mkApiPathUrl('admin', '/db/test_col'), 'text_file.txt')
29+
cy.addDocument(mkApiPathUrl('admin', '/db/test_col'), 'xml_file.xml', 'xml')
2930
})
3031
describe('Correct information', function () {
3132
it('Document properties', function () {
3233
cy.waitForLoading();
33-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/text_file.txt').rightclick()
34+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/text_file.txt')).rightclick()
3435
.getMenuCommand('fusion.properties').should('be.visible').click()
3536
cy.get(dialogTitle).should('contain.text', 'Properties');
3637
cy.get(dialogBody).should('be.visible').then(body => {
@@ -79,7 +80,7 @@ context('Properties dialog', function () {
7980
});
8081
cy.get(dialogSecondaryButton).should('be.visible').click();
8182
cy.get(dialog).should('not.exist');
82-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/xml_file.xml').rightclick()
83+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/xml_file.xml')).rightclick()
8384
.getMenuCommand('fusion.properties').should('be.visible').click()
8485
cy.get(dialogBody).should('be.visible').find('td.label').contains('Binary')
8586
.find('+ td.value').should('contain.text', 'No')
@@ -89,7 +90,7 @@ context('Properties dialog', function () {
8990
})
9091
it('Collection properties', function () {
9192
cy.waitForLoading();
92-
cy.getTreeNode('admin@http://localhost:8080/db/test_col').rightclick()
93+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col')).rightclick()
9394
.getMenuCommand('fusion.properties').should('be.visible').click()
9495
cy.get(dialogTitle).should('contain.text', 'Properties');
9596
cy.get(dialogBody).should('be.visible').then(body => {
@@ -128,7 +129,7 @@ context('Properties dialog', function () {
128129
});
129130
cy.get(dialogSecondaryButton).should('be.visible').click();
130131
cy.get(dialog).should('not.exist');
131-
cy.getTreeNode('admin@http://localhost:8080/db').rightclick()
132+
cy.getTreeNode(mkApiPathUrl('admin', '/db')).rightclick()
132133
.getMenuCommand('fusion.properties').should('be.visible').click()
133134
cy.get(dialogBody).should('be.visible').find('td.label').should('not.contain.text', 'Collection');
134135
cy.get(dialogSecondaryButton).should('be.visible').click();
@@ -139,7 +140,7 @@ context('Properties dialog', function () {
139140
describe('Renaming objects', function () {
140141
it('rename a document', function () {
141142
cy.waitForLoading();
142-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/text_file.txt').should('be.visible').rightclick();
143+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/text_file.txt')).should('be.visible').rightclick();
143144
cy.getMenuCommand('fusion.properties').should('be.visible').click()
144145
cy.get(dialogTitle).should('contain.text', 'Properties');
145146
cy.get(dialogBody).should('be.visible')
@@ -148,12 +149,12 @@ context('Properties dialog', function () {
148149
cy.get(dialogMainButton).should('be.visible').click();
149150
cy.get(dialog).should('not.exist');
150151
cy.waitForLoading();
151-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/text_file.txt').should('not.exist');
152-
cy.getTreeNode('admin@http://localhost:8080/db/test_col/new_name.txt').should('be.visible');
152+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/text_file.txt')).should('not.exist');
153+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col/new_name.txt')).should('be.visible');
153154
})
154155
it('rename a collection', function () {
155156
cy.waitForLoading();
156-
cy.getTreeNode('admin@http://localhost:8080/db/test_col').should('be.visible').rightclick();
157+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col')).should('be.visible').rightclick();
157158
cy.getMenuCommand('fusion.properties').should('be.visible').click()
158159
cy.get(dialogTitle).should('contain.text', 'Properties');
159160
cy.get(dialogBody).should('be.visible')
@@ -162,8 +163,8 @@ context('Properties dialog', function () {
162163
cy.get(dialogMainButton).should('be.visible').click();
163164
cy.get(dialog).should('not.exist');
164165
cy.waitForLoading();
165-
cy.getTreeNode('admin@http://localhost:8080/db/test_col').should('not.exist');
166-
cy.getTreeNode('admin@http://localhost:8080/db/new_test_col').should('be.visible');
166+
cy.getTreeNode(mkApiPathUrl('admin', '/db/test_col')).should('not.exist');
167+
cy.getTreeNode(mkApiPathUrl('admin', '/db/new_test_col')).should('be.visible');
167168
})
168169
})
169170
})

0 commit comments

Comments
 (0)