@webex/internal-plugin-lyra 2.59.2 → 2.59.3-next.1
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/.eslintrc.js +6 -6
- package/README.md +42 -42
- package/babel.config.js +3 -3
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/device.js +50 -50
- package/dist/device.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lyra.js +23 -23
- package/dist/lyra.js.map +1 -1
- package/dist/space.js +83 -83
- package/dist/space.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +20 -19
- package/process +1 -1
- package/src/config.js +7 -7
- package/src/device.js +127 -127
- package/src/index.js +20 -20
- package/src/lyra.js +53 -53
- package/src/space.js +367 -367
- package/test/integration/spec/device.js +203 -203
- package/test/integration/spec/space.js +232 -232
- package/test/unit/spec/device.js +65 -65
- package/test/unit/spec/lyra.js +45 -45
- package/test/unit/spec/space.js +189 -189
package/test/unit/spec/lyra.js
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {assert} from '@webex/test-helper-chai';
|
|
6
|
-
import MockWebex from '@webex/test-helper-mock-webex';
|
|
7
|
-
import sinon from 'sinon';
|
|
8
|
-
import Lyra, {config as lyraConfig} from '@webex/internal-plugin-lyra';
|
|
9
|
-
|
|
10
|
-
describe('plugin-lyra', () => {
|
|
11
|
-
let webex;
|
|
12
|
-
|
|
13
|
-
beforeAll(() => {
|
|
14
|
-
webex = new MockWebex({
|
|
15
|
-
children: {
|
|
16
|
-
lyra: Lyra,
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
webex.config.lyra = lyraConfig.lyra;
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
webex.request.resetHistory();
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
describe('lyra', () => {
|
|
28
|
-
describe('#getAdvertisedEndpoint()', () => {
|
|
29
|
-
it('sends GET request to proximity', () =>
|
|
30
|
-
webex.internal.lyra.getAdvertisedEndpoint('token').then(() =>
|
|
31
|
-
assert.calledWith(
|
|
32
|
-
webex.request,
|
|
33
|
-
sinon.match({
|
|
34
|
-
method: 'GET',
|
|
35
|
-
api: 'proximity',
|
|
36
|
-
resource: '/ultrasound/advertisements',
|
|
37
|
-
qs: {
|
|
38
|
-
token: 'token',
|
|
39
|
-
},
|
|
40
|
-
})
|
|
41
|
-
)
|
|
42
|
-
));
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {assert} from '@webex/test-helper-chai';
|
|
6
|
+
import MockWebex from '@webex/test-helper-mock-webex';
|
|
7
|
+
import sinon from 'sinon';
|
|
8
|
+
import Lyra, {config as lyraConfig} from '@webex/internal-plugin-lyra';
|
|
9
|
+
|
|
10
|
+
describe('plugin-lyra', () => {
|
|
11
|
+
let webex;
|
|
12
|
+
|
|
13
|
+
beforeAll(() => {
|
|
14
|
+
webex = new MockWebex({
|
|
15
|
+
children: {
|
|
16
|
+
lyra: Lyra,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
webex.config.lyra = lyraConfig.lyra;
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
webex.request.resetHistory();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe('lyra', () => {
|
|
28
|
+
describe('#getAdvertisedEndpoint()', () => {
|
|
29
|
+
it('sends GET request to proximity', () =>
|
|
30
|
+
webex.internal.lyra.getAdvertisedEndpoint('token').then(() =>
|
|
31
|
+
assert.calledWith(
|
|
32
|
+
webex.request,
|
|
33
|
+
sinon.match({
|
|
34
|
+
method: 'GET',
|
|
35
|
+
api: 'proximity',
|
|
36
|
+
resource: '/ultrasound/advertisements',
|
|
37
|
+
qs: {
|
|
38
|
+
token: 'token',
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
)
|
|
42
|
+
));
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
package/test/unit/spec/space.js
CHANGED
|
@@ -1,189 +1,189 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {assert} from '@webex/test-helper-chai';
|
|
6
|
-
import MockWebex from '@webex/test-helper-mock-webex';
|
|
7
|
-
import sinon from 'sinon';
|
|
8
|
-
import Lyra, {config as lyraConfig} from '@webex/internal-plugin-lyra';
|
|
9
|
-
|
|
10
|
-
describe('plugin-lyra', () => {
|
|
11
|
-
const lyraSpaceId = 'lyra-1337';
|
|
12
|
-
const lyraSpaceUrl = `https://lyra/api/v1/${lyraSpaceId}`;
|
|
13
|
-
const lyraSpace = {
|
|
14
|
-
identity: {
|
|
15
|
-
id: lyraSpaceId,
|
|
16
|
-
},
|
|
17
|
-
url: lyraSpaceUrl,
|
|
18
|
-
};
|
|
19
|
-
const conversation = {
|
|
20
|
-
url: 'https://conversation',
|
|
21
|
-
kmsResourceObjectUrl: 'https://kms',
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
let webex;
|
|
25
|
-
|
|
26
|
-
beforeAll(() => {
|
|
27
|
-
webex = new MockWebex({
|
|
28
|
-
children: {
|
|
29
|
-
lyra: Lyra,
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
webex.internal.device = {
|
|
34
|
-
url: 'deviceUrl',
|
|
35
|
-
userId: '1234',
|
|
36
|
-
};
|
|
37
|
-
webex.config.lyra = lyraConfig.lyra;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
beforeEach(() => {
|
|
41
|
-
webex.request.resetHistory();
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
describe('space', () => {
|
|
45
|
-
describe('#get()', () => {
|
|
46
|
-
it('requires space.id', () =>
|
|
47
|
-
assert.isRejected(webex.internal.lyra.space.get(), /space.id is required/));
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe('#join()', () => {
|
|
51
|
-
it('defaults to MANUAL pass type', () =>
|
|
52
|
-
webex.internal.lyra.space.join(lyraSpace).then(() =>
|
|
53
|
-
assert.calledWith(
|
|
54
|
-
webex.request,
|
|
55
|
-
sinon.match({
|
|
56
|
-
method: 'PUT',
|
|
57
|
-
api: 'lyra',
|
|
58
|
-
resource: `${lyraSpace.url}/occupants/@me`,
|
|
59
|
-
body: {
|
|
60
|
-
pass: {
|
|
61
|
-
type: 'MANUAL',
|
|
62
|
-
},
|
|
63
|
-
deviceUrl: 'deviceUrl',
|
|
64
|
-
},
|
|
65
|
-
})
|
|
66
|
-
)
|
|
67
|
-
));
|
|
68
|
-
|
|
69
|
-
it('allows other pass type', () =>
|
|
70
|
-
webex.internal.lyra.space.join(lyraSpace, {passType: 'TEST'}).then(() =>
|
|
71
|
-
assert.calledWith(
|
|
72
|
-
webex.request,
|
|
73
|
-
sinon.match({
|
|
74
|
-
method: 'PUT',
|
|
75
|
-
api: 'lyra',
|
|
76
|
-
resource: `${lyraSpace.url}/occupants/@me`,
|
|
77
|
-
body: {
|
|
78
|
-
pass: {
|
|
79
|
-
type: 'TEST',
|
|
80
|
-
},
|
|
81
|
-
deviceUrl: 'deviceUrl',
|
|
82
|
-
},
|
|
83
|
-
})
|
|
84
|
-
)
|
|
85
|
-
));
|
|
86
|
-
|
|
87
|
-
it('allows another uri', () =>
|
|
88
|
-
webex.internal.lyra.space.join(lyraSpace, {uri: 'https://customUrl'}).then(() =>
|
|
89
|
-
assert.calledWith(
|
|
90
|
-
webex.request,
|
|
91
|
-
sinon.match({
|
|
92
|
-
method: 'PUT',
|
|
93
|
-
uri: 'https://customUrl',
|
|
94
|
-
body: {
|
|
95
|
-
pass: {
|
|
96
|
-
type: 'MANUAL',
|
|
97
|
-
},
|
|
98
|
-
deviceUrl: 'deviceUrl',
|
|
99
|
-
},
|
|
100
|
-
})
|
|
101
|
-
)
|
|
102
|
-
));
|
|
103
|
-
|
|
104
|
-
it('passes on extra data field', () =>
|
|
105
|
-
webex.internal.lyra.space
|
|
106
|
-
.join(lyraSpace, {
|
|
107
|
-
passType: 'TEST',
|
|
108
|
-
data: {proof: 'abc'},
|
|
109
|
-
})
|
|
110
|
-
.then(() =>
|
|
111
|
-
assert.calledWith(
|
|
112
|
-
webex.request,
|
|
113
|
-
sinon.match({
|
|
114
|
-
method: 'PUT',
|
|
115
|
-
api: 'lyra',
|
|
116
|
-
resource: `${lyraSpace.url}/occupants/@me`,
|
|
117
|
-
body: {
|
|
118
|
-
pass: {
|
|
119
|
-
type: 'TEST',
|
|
120
|
-
data: {proof: 'abc'},
|
|
121
|
-
},
|
|
122
|
-
deviceUrl: 'deviceUrl',
|
|
123
|
-
},
|
|
124
|
-
})
|
|
125
|
-
)
|
|
126
|
-
));
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
describe('#bindConversation()', () => {
|
|
130
|
-
it('requires space.url', () =>
|
|
131
|
-
assert.isRejected(webex.internal.lyra.space.bindConversation(), /space.url is required/));
|
|
132
|
-
it('requires space.id', () =>
|
|
133
|
-
assert.isRejected(
|
|
134
|
-
webex.internal.lyra.space.bindConversation({url: lyraSpaceUrl}),
|
|
135
|
-
/space.id is required/
|
|
136
|
-
));
|
|
137
|
-
it('requires conversation.url', () =>
|
|
138
|
-
assert.isRejected(
|
|
139
|
-
webex.internal.lyra.space.bindConversation(lyraSpace, {kmsResourceObjectUrl: 'url'}),
|
|
140
|
-
/conversation.url is required/
|
|
141
|
-
));
|
|
142
|
-
it('requires conversation.kmsResourceObjectUrl', () =>
|
|
143
|
-
assert.isRejected(
|
|
144
|
-
webex.internal.lyra.space.bindConversation(lyraSpace, {url: 'url'}),
|
|
145
|
-
/conversation.kmsResourceObjectUrl is required/
|
|
146
|
-
));
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
describe('#unbindConversation()', () => {
|
|
150
|
-
it('requires space.url', () =>
|
|
151
|
-
assert.isRejected(webex.internal.lyra.space.unbindConversation(), /space.url is required/));
|
|
152
|
-
it('requires space.id', () =>
|
|
153
|
-
assert.isRejected(
|
|
154
|
-
webex.internal.lyra.space.unbindConversation({url: lyraSpaceUrl}),
|
|
155
|
-
/space.id is required/
|
|
156
|
-
));
|
|
157
|
-
it('requires conversation.url', () =>
|
|
158
|
-
assert.isRejected(
|
|
159
|
-
webex.internal.lyra.space.unbindConversation(lyraSpace, {kmsResourceObjectUrl: 'url'}),
|
|
160
|
-
/conversation.url is required/
|
|
161
|
-
));
|
|
162
|
-
it('requires conversation.kmsResourceObjectUrl', () =>
|
|
163
|
-
assert.isRejected(
|
|
164
|
-
webex.internal.lyra.space.unbindConversation(lyraSpace, {url: conversation.url}),
|
|
165
|
-
/conversation.kmsResourceObjectUrl is required/
|
|
166
|
-
));
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
describe('#deleteBinding', () => {
|
|
170
|
-
it('requires space.url', () =>
|
|
171
|
-
assert.isRejected(webex.internal.lyra.space.deleteBinding(), /space.url is required/));
|
|
172
|
-
it('requires space.id', () =>
|
|
173
|
-
assert.isRejected(
|
|
174
|
-
webex.internal.lyra.space.deleteBinding({url: lyraSpaceUrl}),
|
|
175
|
-
/space.id is required/
|
|
176
|
-
));
|
|
177
|
-
it('requires options.kmsResourceObjectUrl', () =>
|
|
178
|
-
assert.isRejected(
|
|
179
|
-
webex.internal.lyra.space.deleteBinding(lyraSpace, {bindingId: '123'}),
|
|
180
|
-
/kmsResourceObjectUrl is required/
|
|
181
|
-
));
|
|
182
|
-
it('requires options.bindingId', () =>
|
|
183
|
-
assert.isRejected(
|
|
184
|
-
webex.internal.lyra.space.deleteBinding(lyraSpace, {kmsResourceObjectUrl: 'url'}),
|
|
185
|
-
/options.bindingId is required/
|
|
186
|
-
));
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
});
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {assert} from '@webex/test-helper-chai';
|
|
6
|
+
import MockWebex from '@webex/test-helper-mock-webex';
|
|
7
|
+
import sinon from 'sinon';
|
|
8
|
+
import Lyra, {config as lyraConfig} from '@webex/internal-plugin-lyra';
|
|
9
|
+
|
|
10
|
+
describe('plugin-lyra', () => {
|
|
11
|
+
const lyraSpaceId = 'lyra-1337';
|
|
12
|
+
const lyraSpaceUrl = `https://lyra/api/v1/${lyraSpaceId}`;
|
|
13
|
+
const lyraSpace = {
|
|
14
|
+
identity: {
|
|
15
|
+
id: lyraSpaceId,
|
|
16
|
+
},
|
|
17
|
+
url: lyraSpaceUrl,
|
|
18
|
+
};
|
|
19
|
+
const conversation = {
|
|
20
|
+
url: 'https://conversation',
|
|
21
|
+
kmsResourceObjectUrl: 'https://kms',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
let webex;
|
|
25
|
+
|
|
26
|
+
beforeAll(() => {
|
|
27
|
+
webex = new MockWebex({
|
|
28
|
+
children: {
|
|
29
|
+
lyra: Lyra,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
webex.internal.device = {
|
|
34
|
+
url: 'deviceUrl',
|
|
35
|
+
userId: '1234',
|
|
36
|
+
};
|
|
37
|
+
webex.config.lyra = lyraConfig.lyra;
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
webex.request.resetHistory();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe('space', () => {
|
|
45
|
+
describe('#get()', () => {
|
|
46
|
+
it('requires space.id', () =>
|
|
47
|
+
assert.isRejected(webex.internal.lyra.space.get(), /space.id is required/));
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe('#join()', () => {
|
|
51
|
+
it('defaults to MANUAL pass type', () =>
|
|
52
|
+
webex.internal.lyra.space.join(lyraSpace).then(() =>
|
|
53
|
+
assert.calledWith(
|
|
54
|
+
webex.request,
|
|
55
|
+
sinon.match({
|
|
56
|
+
method: 'PUT',
|
|
57
|
+
api: 'lyra',
|
|
58
|
+
resource: `${lyraSpace.url}/occupants/@me`,
|
|
59
|
+
body: {
|
|
60
|
+
pass: {
|
|
61
|
+
type: 'MANUAL',
|
|
62
|
+
},
|
|
63
|
+
deviceUrl: 'deviceUrl',
|
|
64
|
+
},
|
|
65
|
+
})
|
|
66
|
+
)
|
|
67
|
+
));
|
|
68
|
+
|
|
69
|
+
it('allows other pass type', () =>
|
|
70
|
+
webex.internal.lyra.space.join(lyraSpace, {passType: 'TEST'}).then(() =>
|
|
71
|
+
assert.calledWith(
|
|
72
|
+
webex.request,
|
|
73
|
+
sinon.match({
|
|
74
|
+
method: 'PUT',
|
|
75
|
+
api: 'lyra',
|
|
76
|
+
resource: `${lyraSpace.url}/occupants/@me`,
|
|
77
|
+
body: {
|
|
78
|
+
pass: {
|
|
79
|
+
type: 'TEST',
|
|
80
|
+
},
|
|
81
|
+
deviceUrl: 'deviceUrl',
|
|
82
|
+
},
|
|
83
|
+
})
|
|
84
|
+
)
|
|
85
|
+
));
|
|
86
|
+
|
|
87
|
+
it('allows another uri', () =>
|
|
88
|
+
webex.internal.lyra.space.join(lyraSpace, {uri: 'https://customUrl'}).then(() =>
|
|
89
|
+
assert.calledWith(
|
|
90
|
+
webex.request,
|
|
91
|
+
sinon.match({
|
|
92
|
+
method: 'PUT',
|
|
93
|
+
uri: 'https://customUrl',
|
|
94
|
+
body: {
|
|
95
|
+
pass: {
|
|
96
|
+
type: 'MANUAL',
|
|
97
|
+
},
|
|
98
|
+
deviceUrl: 'deviceUrl',
|
|
99
|
+
},
|
|
100
|
+
})
|
|
101
|
+
)
|
|
102
|
+
));
|
|
103
|
+
|
|
104
|
+
it('passes on extra data field', () =>
|
|
105
|
+
webex.internal.lyra.space
|
|
106
|
+
.join(lyraSpace, {
|
|
107
|
+
passType: 'TEST',
|
|
108
|
+
data: {proof: 'abc'},
|
|
109
|
+
})
|
|
110
|
+
.then(() =>
|
|
111
|
+
assert.calledWith(
|
|
112
|
+
webex.request,
|
|
113
|
+
sinon.match({
|
|
114
|
+
method: 'PUT',
|
|
115
|
+
api: 'lyra',
|
|
116
|
+
resource: `${lyraSpace.url}/occupants/@me`,
|
|
117
|
+
body: {
|
|
118
|
+
pass: {
|
|
119
|
+
type: 'TEST',
|
|
120
|
+
data: {proof: 'abc'},
|
|
121
|
+
},
|
|
122
|
+
deviceUrl: 'deviceUrl',
|
|
123
|
+
},
|
|
124
|
+
})
|
|
125
|
+
)
|
|
126
|
+
));
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
describe('#bindConversation()', () => {
|
|
130
|
+
it('requires space.url', () =>
|
|
131
|
+
assert.isRejected(webex.internal.lyra.space.bindConversation(), /space.url is required/));
|
|
132
|
+
it('requires space.id', () =>
|
|
133
|
+
assert.isRejected(
|
|
134
|
+
webex.internal.lyra.space.bindConversation({url: lyraSpaceUrl}),
|
|
135
|
+
/space.id is required/
|
|
136
|
+
));
|
|
137
|
+
it('requires conversation.url', () =>
|
|
138
|
+
assert.isRejected(
|
|
139
|
+
webex.internal.lyra.space.bindConversation(lyraSpace, {kmsResourceObjectUrl: 'url'}),
|
|
140
|
+
/conversation.url is required/
|
|
141
|
+
));
|
|
142
|
+
it('requires conversation.kmsResourceObjectUrl', () =>
|
|
143
|
+
assert.isRejected(
|
|
144
|
+
webex.internal.lyra.space.bindConversation(lyraSpace, {url: 'url'}),
|
|
145
|
+
/conversation.kmsResourceObjectUrl is required/
|
|
146
|
+
));
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
describe('#unbindConversation()', () => {
|
|
150
|
+
it('requires space.url', () =>
|
|
151
|
+
assert.isRejected(webex.internal.lyra.space.unbindConversation(), /space.url is required/));
|
|
152
|
+
it('requires space.id', () =>
|
|
153
|
+
assert.isRejected(
|
|
154
|
+
webex.internal.lyra.space.unbindConversation({url: lyraSpaceUrl}),
|
|
155
|
+
/space.id is required/
|
|
156
|
+
));
|
|
157
|
+
it('requires conversation.url', () =>
|
|
158
|
+
assert.isRejected(
|
|
159
|
+
webex.internal.lyra.space.unbindConversation(lyraSpace, {kmsResourceObjectUrl: 'url'}),
|
|
160
|
+
/conversation.url is required/
|
|
161
|
+
));
|
|
162
|
+
it('requires conversation.kmsResourceObjectUrl', () =>
|
|
163
|
+
assert.isRejected(
|
|
164
|
+
webex.internal.lyra.space.unbindConversation(lyraSpace, {url: conversation.url}),
|
|
165
|
+
/conversation.kmsResourceObjectUrl is required/
|
|
166
|
+
));
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
describe('#deleteBinding', () => {
|
|
170
|
+
it('requires space.url', () =>
|
|
171
|
+
assert.isRejected(webex.internal.lyra.space.deleteBinding(), /space.url is required/));
|
|
172
|
+
it('requires space.id', () =>
|
|
173
|
+
assert.isRejected(
|
|
174
|
+
webex.internal.lyra.space.deleteBinding({url: lyraSpaceUrl}),
|
|
175
|
+
/space.id is required/
|
|
176
|
+
));
|
|
177
|
+
it('requires options.kmsResourceObjectUrl', () =>
|
|
178
|
+
assert.isRejected(
|
|
179
|
+
webex.internal.lyra.space.deleteBinding(lyraSpace, {bindingId: '123'}),
|
|
180
|
+
/kmsResourceObjectUrl is required/
|
|
181
|
+
));
|
|
182
|
+
it('requires options.bindingId', () =>
|
|
183
|
+
assert.isRejected(
|
|
184
|
+
webex.internal.lyra.space.deleteBinding(lyraSpace, {kmsResourceObjectUrl: 'url'}),
|
|
185
|
+
/options.bindingId is required/
|
|
186
|
+
));
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
});
|