agora-token 2.0.4 → 2.0.6
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/.devcontainer/devcontainer.json +22 -0
- package/.prettierrc +12 -0
- package/index.d.ts +260 -26
- package/index.js +4 -1
- package/package.json +1 -1
- package/sample/AccessToken2Sample.js +29 -19
- package/sample/ConvoAITokenBuilderSample.js +36 -0
- package/sample/RtcTokenBuilder2Sample.js +16 -0
- package/sample/SttTokenBuilderSample.js +36 -0
- package/src/AccessToken2.js +366 -40
- package/src/ApaasTokenBuilder.js +9 -3
- package/src/ChatTokenBuilder.js +6 -2
- package/src/ConvoAITokenBuilder.js +68 -0
- package/src/EducationTokenBuilder.js +9 -3
- package/src/FpaTokenBuilder.js +1 -1
- package/src/RtcTokenBuilder2.js +124 -16
- package/src/RtmTokenBuilder2.js +25 -1
- package/src/SttTokenBuilder.js +68 -0
- package/test/AccessToken2Test.js +331 -4
- package/test/AccessTokenTest.js +62 -1
- package/test/ApaasTokenBuilderTest.js +8 -4
- package/test/ChatTokenBuilderTest.js +6 -4
- package/test/ConvoAITokenBuilderTest.js +58 -0
- package/test/DynamicKeyTest.js +4 -0
- package/test/EducationTokenBuilderTest.js +8 -4
- package/test/FpaTokenBuilderTest.js +2 -1
- package/test/RtcTokenBuilder2Test.js +74 -30
- package/test/RtmTokenBuilder2Test.js +53 -4
- package/test/RtmTokenBuilderTest.js +1 -0
- package/test/SttTokenBuilderTest.js +58 -0
- package/sample.js +0 -46
|
@@ -10,6 +10,7 @@ const appId = "970CA35de60c44645bbae8a215061b33"
|
|
|
10
10
|
const appCertificate = "5CFd2fd1755d40ecb72977518be15d3b"
|
|
11
11
|
const expire = 24 * 3600
|
|
12
12
|
|
|
13
|
+
// Verifies FPA token generation and parsing.
|
|
13
14
|
exports.buildToken_Test = function (test) {
|
|
14
15
|
let token = FpaTokenBuilder.buildToken(appId, appCertificate)
|
|
15
16
|
let accessToken = new AccessToken2('', '', 0, 0)
|
|
@@ -17,6 +18,6 @@ exports.buildToken_Test = function (test) {
|
|
|
17
18
|
|
|
18
19
|
test.equal(appId, accessToken.appId)
|
|
19
20
|
test.equal(expire, accessToken.expire)
|
|
20
|
-
test.equal(0, accessToken.
|
|
21
|
+
test.equal(0, accessToken.getServices(kFpaServiceType)[0].__privileges[ServiceFpa.kPrivilegeLogin])
|
|
21
22
|
test.done()
|
|
22
23
|
}
|
|
@@ -17,6 +17,7 @@ const expire = 600;
|
|
|
17
17
|
const tokenExpirationInSecond = 600;
|
|
18
18
|
const privilegeExpirationInSecond = 600;
|
|
19
19
|
|
|
20
|
+
// Verifies subscriber RTC token generation with a numeric user ID.
|
|
20
21
|
exports.buildTokenWithUid_SUBSCRIBER_Test = function (test) {
|
|
21
22
|
let token = RtcTokenBuilder.buildTokenWithUid(
|
|
22
23
|
appId,
|
|
@@ -29,15 +30,17 @@ exports.buildTokenWithUid_SUBSCRIBER_Test = function (test) {
|
|
|
29
30
|
);
|
|
30
31
|
let accessToken = new AccessToken2("", "", 0, 0);
|
|
31
32
|
accessToken.from_string(token);
|
|
33
|
+
const service = accessToken.getServices(kRtcServiceType)[0];
|
|
32
34
|
|
|
33
35
|
test.equal(appId, accessToken.appId);
|
|
34
36
|
test.equal(expire, accessToken.expire);
|
|
35
|
-
test.equal(channelName,
|
|
36
|
-
test.equal(uidStr,
|
|
37
|
-
test.equal(expire,
|
|
37
|
+
test.equal(channelName, service.__channel_name);
|
|
38
|
+
test.equal(uidStr, service.__uid);
|
|
39
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegeJoinChannel]);
|
|
38
40
|
test.done();
|
|
39
41
|
};
|
|
40
42
|
|
|
43
|
+
// Verifies publisher RTC token generation with a numeric user ID.
|
|
41
44
|
exports.buildTokenWithUid_PUBLISHER_Test = function (test) {
|
|
42
45
|
let token = RtcTokenBuilder.buildTokenWithUid(
|
|
43
46
|
appId,
|
|
@@ -50,18 +53,20 @@ exports.buildTokenWithUid_PUBLISHER_Test = function (test) {
|
|
|
50
53
|
);
|
|
51
54
|
let accessToken = new AccessToken2("", "", 0, 0);
|
|
52
55
|
accessToken.from_string(token);
|
|
56
|
+
const service = accessToken.getServices(kRtcServiceType)[0];
|
|
53
57
|
|
|
54
58
|
test.equal(appId, accessToken.appId);
|
|
55
59
|
test.equal(expire, accessToken.expire);
|
|
56
|
-
test.equal(channelName,
|
|
57
|
-
test.equal(uidStr,
|
|
58
|
-
test.equal(expire,
|
|
59
|
-
test.equal(expire,
|
|
60
|
-
test.equal(expire,
|
|
61
|
-
test.equal(expire,
|
|
60
|
+
test.equal(channelName, service.__channel_name);
|
|
61
|
+
test.equal(uidStr, service.__uid);
|
|
62
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegeJoinChannel]);
|
|
63
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishAudioStream]);
|
|
64
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishVideoStream]);
|
|
65
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishDataStream]);
|
|
62
66
|
test.done();
|
|
63
67
|
};
|
|
64
68
|
|
|
69
|
+
// Verifies subscriber RTC token generation with a user account.
|
|
65
70
|
exports.buildTokenWithUserAccount_SUBSCRIBER_Test = function (test) {
|
|
66
71
|
let token = RtcTokenBuilder.buildTokenWithUserAccount(
|
|
67
72
|
appId,
|
|
@@ -74,15 +79,17 @@ exports.buildTokenWithUserAccount_SUBSCRIBER_Test = function (test) {
|
|
|
74
79
|
);
|
|
75
80
|
let accessToken = new AccessToken2("", "", 0, 0);
|
|
76
81
|
accessToken.from_string(token);
|
|
82
|
+
const service = accessToken.getServices(kRtcServiceType)[0];
|
|
77
83
|
|
|
78
84
|
test.equal(appId, accessToken.appId);
|
|
79
85
|
test.equal(expire, accessToken.expire);
|
|
80
|
-
test.equal(channelName,
|
|
81
|
-
test.equal(uidStr,
|
|
82
|
-
test.equal(expire,
|
|
86
|
+
test.equal(channelName, service.__channel_name);
|
|
87
|
+
test.equal(uidStr, service.__uid);
|
|
88
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegeJoinChannel]);
|
|
83
89
|
test.done();
|
|
84
90
|
};
|
|
85
91
|
|
|
92
|
+
// Verifies publisher RTC token generation with a user account.
|
|
86
93
|
exports.buildTokenWithUserAccount_PUBLISHER_Test = function (test) {
|
|
87
94
|
let token = RtcTokenBuilder.buildTokenWithUserAccount(
|
|
88
95
|
appId,
|
|
@@ -95,46 +102,83 @@ exports.buildTokenWithUserAccount_PUBLISHER_Test = function (test) {
|
|
|
95
102
|
);
|
|
96
103
|
let accessToken = new AccessToken2("", "", 0, 0);
|
|
97
104
|
accessToken.from_string(token);
|
|
105
|
+
const service = accessToken.getServices(kRtcServiceType)[0];
|
|
98
106
|
|
|
99
107
|
test.equal(appId, accessToken.appId);
|
|
100
108
|
test.equal(expire, accessToken.expire);
|
|
101
|
-
test.equal(channelName,
|
|
102
|
-
test.equal(uidStr,
|
|
103
|
-
test.equal(expire,
|
|
104
|
-
test.equal(expire,
|
|
105
|
-
test.equal(expire,
|
|
106
|
-
test.equal(expire,
|
|
109
|
+
test.equal(channelName, service.__channel_name);
|
|
110
|
+
test.equal(uidStr, service.__uid);
|
|
111
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegeJoinChannel]);
|
|
112
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishAudioStream]);
|
|
113
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishVideoStream]);
|
|
114
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishDataStream]);
|
|
107
115
|
test.done();
|
|
108
116
|
};
|
|
109
117
|
|
|
118
|
+
// Verifies RTC token generation with explicit numeric-user privileges.
|
|
110
119
|
exports.buildTokenWithUidAndPrivilege_Test = function (test) {
|
|
111
120
|
let token = RtcTokenBuilder.buildTokenWithUidAndPrivilege(appId, appCertificate, channelName, uid, expire, expire, expire, expire, expire);
|
|
112
121
|
let accessToken = new AccessToken2("", "", 0, 0);
|
|
113
122
|
accessToken.from_string(token);
|
|
123
|
+
const service = accessToken.getServices(kRtcServiceType)[0];
|
|
114
124
|
|
|
115
125
|
test.equal(appId, accessToken.appId);
|
|
116
126
|
test.equal(expire, accessToken.expire);
|
|
117
|
-
test.equal(channelName,
|
|
118
|
-
test.equal(uidStr,
|
|
119
|
-
test.equal(expire,
|
|
120
|
-
test.equal(expire,
|
|
121
|
-
test.equal(expire,
|
|
122
|
-
test.equal(expire,
|
|
127
|
+
test.equal(channelName, service.__channel_name);
|
|
128
|
+
test.equal(uidStr, service.__uid);
|
|
129
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegeJoinChannel]);
|
|
130
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishAudioStream]);
|
|
131
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishVideoStream]);
|
|
132
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishDataStream]);
|
|
123
133
|
test.done();
|
|
124
134
|
};
|
|
125
135
|
|
|
136
|
+
// Verifies RTC token generation with explicit user-account privileges.
|
|
126
137
|
exports.BuildTokenWithUserAccountAndPrivilege_Test = function (test) {
|
|
127
138
|
let token = RtcTokenBuilder.BuildTokenWithUserAccountAndPrivilege(appId, appCertificate, channelName, uidStr, expire, expire, expire, expire, expire);
|
|
128
139
|
let accessToken = new AccessToken2("", "", 0, 0);
|
|
129
140
|
accessToken.from_string(token);
|
|
141
|
+
const service = accessToken.getServices(kRtcServiceType)[0];
|
|
130
142
|
|
|
131
143
|
test.equal(appId, accessToken.appId);
|
|
132
144
|
test.equal(expire, accessToken.expire);
|
|
133
|
-
test.equal(channelName,
|
|
134
|
-
test.equal(uidStr,
|
|
135
|
-
test.equal(expire,
|
|
136
|
-
test.equal(expire,
|
|
137
|
-
test.equal(expire,
|
|
138
|
-
test.equal(expire,
|
|
145
|
+
test.equal(channelName, service.__channel_name);
|
|
146
|
+
test.equal(uidStr, service.__uid);
|
|
147
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegeJoinChannel]);
|
|
148
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishAudioStream]);
|
|
149
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishVideoStream]);
|
|
150
|
+
test.equal(expire, service.__privileges[ServiceRtc.kPrivilegePublishDataStream]);
|
|
139
151
|
test.done();
|
|
140
152
|
};
|
|
153
|
+
|
|
154
|
+
// Verifies combined RTC and RTM token generation for both role branches.
|
|
155
|
+
exports.buildTokenWithRtm_Test = function (test) {
|
|
156
|
+
const publisher = RtcTokenBuilder.buildTokenWithRtm(
|
|
157
|
+
appId, appCertificate, channelName, uidStr, Role.PUBLISHER, expire, expire)
|
|
158
|
+
const subscriber = RtcTokenBuilder.buildTokenWithRtm(
|
|
159
|
+
appId, appCertificate, channelName, uidStr, Role.SUBSCRIBER, expire, expire)
|
|
160
|
+
|
|
161
|
+
for (const token of [publisher, subscriber]) {
|
|
162
|
+
const parsed = new AccessToken2('', '', 0, 0)
|
|
163
|
+
test.equal(true, parsed.from_string(token))
|
|
164
|
+
test.equal(2, parsed.services.length)
|
|
165
|
+
}
|
|
166
|
+
test.done()
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// Verifies combined RTC and RTM token generation with independent privileges.
|
|
170
|
+
exports.buildTokenWithRtm2_Test = function (test) {
|
|
171
|
+
const publisher = RtcTokenBuilder.buildTokenWithRtm2(
|
|
172
|
+
appId, appCertificate, channelName, uidStr, Role.PUBLISHER, expire,
|
|
173
|
+
1, 2, 3, 4, uidStr, expire)
|
|
174
|
+
const subscriber = RtcTokenBuilder.buildTokenWithRtm2(
|
|
175
|
+
appId, appCertificate, channelName, uidStr, Role.SUBSCRIBER, expire,
|
|
176
|
+
1, 2, 3, 4, uidStr, expire)
|
|
177
|
+
|
|
178
|
+
for (const token of [publisher, subscriber]) {
|
|
179
|
+
const parsed = new AccessToken2('', '', 0, 0)
|
|
180
|
+
test.equal(true, parsed.from_string(token))
|
|
181
|
+
test.equal(2, parsed.services.length)
|
|
182
|
+
}
|
|
183
|
+
test.done()
|
|
184
|
+
};
|
|
@@ -3,22 +3,71 @@
|
|
|
3
3
|
* nodeunit test/RtmTokenBuilder2Test.js
|
|
4
4
|
* see https://github.com/caolan/nodeunit
|
|
5
5
|
*/
|
|
6
|
-
const RtmTokenBuilder = require("../
|
|
7
|
-
const { AccessToken2, ServiceRtm, kRtmServiceType } = require("../src/AccessToken2");
|
|
6
|
+
const { Rtm2Permissions, RtmTokenBuilder } = require("../index");
|
|
7
|
+
const { AccessToken2, ServiceRtm, ServiceRtm2, kRtmServiceType, kRtm2ServiceType } = require("../src/AccessToken2");
|
|
8
8
|
|
|
9
9
|
const appId = "970CA35de60c44645bbae8a215061b33";
|
|
10
10
|
const appCertificate = "5CFd2fd1755d40ecb72977518be15d3b";
|
|
11
11
|
const userId = "test_user";
|
|
12
12
|
const expire = 600;
|
|
13
13
|
|
|
14
|
+
// Verifies RTM Token007 generation and parsing.
|
|
14
15
|
exports.buildToken = function (test) {
|
|
15
16
|
let token = RtmTokenBuilder.buildToken(appId, appCertificate, userId, expire);
|
|
16
17
|
let accessToken = new AccessToken2("", "", 0, 0);
|
|
17
18
|
accessToken.from_string(token);
|
|
19
|
+
const service = accessToken.getServices(kRtmServiceType)[0];
|
|
18
20
|
|
|
19
21
|
test.equal(appId, accessToken.appId);
|
|
20
22
|
test.equal(expire, accessToken.expire);
|
|
21
|
-
test.equal(userId,
|
|
22
|
-
test.equal(expire,
|
|
23
|
+
test.equal(userId, service.__user_id);
|
|
24
|
+
test.equal(expire, service.__privileges[ServiceRtm.kPrivilegeLogin]);
|
|
25
|
+
test.done();
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Verifies RTM2 permission token generation, parsing, and signature validation.
|
|
29
|
+
exports.buildTokenWithPermissions = function (test) {
|
|
30
|
+
const permissions = new Rtm2Permissions();
|
|
31
|
+
permissions.add(Rtm2Permissions.kMessageChannels, Rtm2Permissions.kRead, ["message-a", "message-b"]);
|
|
32
|
+
permissions.add(Rtm2Permissions.kStreamChannels, Rtm2Permissions.kWrite, ["stream-a"]);
|
|
33
|
+
|
|
34
|
+
const token = RtmTokenBuilder.buildTokenWithPermissions(appId, appCertificate, userId, permissions, expire);
|
|
35
|
+
const parsed = new AccessToken2("", "", 0, 0);
|
|
36
|
+
|
|
37
|
+
test.equal(true, parsed.from_string(token));
|
|
38
|
+
test.equal(true, parsed.verifySignature(appCertificate));
|
|
39
|
+
const service = parsed.getServices(kRtm2ServiceType)[0];
|
|
40
|
+
test.equal(userId, service.__user_id.toString());
|
|
41
|
+
test.deepEqual(permissions.details, service.__permissions.details);
|
|
42
|
+
test.equal(expire, service.__privileges[ServiceRtm2.kPrivilegeLogin]);
|
|
43
|
+
test.done();
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Verifies that an RTM2 numeric user ID is encoded as its string representation.
|
|
47
|
+
exports.buildTokenWithPermissionsAndNumericUserId = function (test) {
|
|
48
|
+
const numericUserId = 123;
|
|
49
|
+
const permissions = new Rtm2Permissions();
|
|
50
|
+
const token = RtmTokenBuilder.buildTokenWithPermissions(appId, appCertificate, numericUserId, permissions, expire);
|
|
51
|
+
const parsed = new AccessToken2("", "", 0, 0);
|
|
52
|
+
|
|
53
|
+
test.equal(true, parsed.from_string(token));
|
|
54
|
+
test.equal(true, parsed.verifySignature(appCertificate));
|
|
55
|
+
const service = parsed.getServices(kRtm2ServiceType)[0];
|
|
56
|
+
test.equal(String(numericUserId), service.__user_id.toString());
|
|
57
|
+
test.equal(expire, service.__privileges[ServiceRtm2.kPrivilegeLogin]);
|
|
58
|
+
test.done();
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// Verifies that the numeric wildcard user ID is encoded as an empty string.
|
|
62
|
+
exports.buildTokenWithPermissionsAndWildcardUserId = function (test) {
|
|
63
|
+
const permissions = new Rtm2Permissions();
|
|
64
|
+
const token = RtmTokenBuilder.buildTokenWithPermissions(appId, appCertificate, 0, permissions, expire);
|
|
65
|
+
const parsed = new AccessToken2("", "", 0, 0);
|
|
66
|
+
|
|
67
|
+
test.equal(true, parsed.from_string(token));
|
|
68
|
+
test.equal(true, parsed.verifySignature(appCertificate));
|
|
69
|
+
const service = parsed.getServices(kRtm2ServiceType)[0];
|
|
70
|
+
test.equal("", service.__user_id.toString());
|
|
71
|
+
test.equal(expire, service.__privileges[ServiceRtm2.kPrivilegeLogin]);
|
|
23
72
|
test.done();
|
|
24
73
|
};
|
|
@@ -13,6 +13,7 @@ const appCertificate = "5CFd2fd1755d40ecb72977518be15d3b";
|
|
|
13
13
|
const account = "test_user";
|
|
14
14
|
const expireTimestamp = 1446455471;
|
|
15
15
|
|
|
16
|
+
// Verifies legacy RTM token generation and parsing.
|
|
16
17
|
exports.RtmToken_Test = function (test) {
|
|
17
18
|
const token = RtmTokenBuilder.buildToken(appID, appCertificate, account, Role.Rtm_User, expireTimestamp);
|
|
18
19
|
let accessToken = new AccessToken("", "", 0, 0);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run this test with command:
|
|
3
|
+
* nodeunit test/SttTokenBuilderTest.js
|
|
4
|
+
*/
|
|
5
|
+
const { SttTokenBuilder } = require('../src/SttTokenBuilder')
|
|
6
|
+
const { AccessToken2, kRtcServiceType, kRtmServiceType, kSttServiceType, ServiceRtc, ServiceRtm } = require('../src/AccessToken2')
|
|
7
|
+
const { Role } = require('../src/RtcTokenBuilder2')
|
|
8
|
+
|
|
9
|
+
const appId = '970CA35de60c44645bbae8a215061b33'
|
|
10
|
+
const appCertificate = '5CFd2fd1755d40ecb72977518be15d3b'
|
|
11
|
+
const channelName = '7d72365eb983485397e3e3f9d460bdda'
|
|
12
|
+
const rtcAccount = '2882341273'
|
|
13
|
+
const rtmUserId = '2882341273'
|
|
14
|
+
const rtcTokenExpire = 600
|
|
15
|
+
const joinChannelPrivilegeExpire = 600
|
|
16
|
+
const pubAudioPrivilegeExpire = 600
|
|
17
|
+
const pubVideoPrivilegeExpire = 600
|
|
18
|
+
const pubDataStreamPrivilegeExpire = 600
|
|
19
|
+
const rtmTokenExpire = 600
|
|
20
|
+
|
|
21
|
+
exports.buildToken_PUBLISHER_Test = function (test) {
|
|
22
|
+
const token = SttTokenBuilder.buildToken(
|
|
23
|
+
appId, appCertificate, channelName, rtcAccount, Role.PUBLISHER, rtcTokenExpire,
|
|
24
|
+
joinChannelPrivilegeExpire, pubAudioPrivilegeExpire, pubVideoPrivilegeExpire,
|
|
25
|
+
pubDataStreamPrivilegeExpire, rtmUserId, rtmTokenExpire)
|
|
26
|
+
const parsed = new AccessToken2('', '', 0, 0)
|
|
27
|
+
parsed.from_string(token)
|
|
28
|
+
|
|
29
|
+
const rtc = parsed.getServices(kRtcServiceType)[0]
|
|
30
|
+
const rtm = parsed.getServices(kRtmServiceType)[0]
|
|
31
|
+
const stt = parsed.getServices(kSttServiceType)[0]
|
|
32
|
+
|
|
33
|
+
test.equal(appId, parsed.appId)
|
|
34
|
+
test.equal(rtcTokenExpire, parsed.expire)
|
|
35
|
+
test.equal(channelName, rtc.__channel_name)
|
|
36
|
+
test.equal(rtcAccount, rtc.__uid)
|
|
37
|
+
test.equal(joinChannelPrivilegeExpire, rtc.__privileges[ServiceRtc.kPrivilegeJoinChannel])
|
|
38
|
+
test.equal(pubAudioPrivilegeExpire, rtc.__privileges[ServiceRtc.kPrivilegePublishAudioStream])
|
|
39
|
+
test.equal(pubVideoPrivilegeExpire, rtc.__privileges[ServiceRtc.kPrivilegePublishVideoStream])
|
|
40
|
+
test.equal(pubDataStreamPrivilegeExpire, rtc.__privileges[ServiceRtc.kPrivilegePublishDataStream])
|
|
41
|
+
test.equal(rtmUserId, rtm.__user_id)
|
|
42
|
+
test.equal(rtmTokenExpire, rtm.__privileges[ServiceRtm.kPrivilegeLogin])
|
|
43
|
+
test.deepEqual({}, stt.__privileges)
|
|
44
|
+
test.done()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
exports.buildToken_SUBSCRIBER_Test = function (test) {
|
|
48
|
+
const token = SttTokenBuilder.buildToken(
|
|
49
|
+
appId, appCertificate, channelName, rtcAccount, Role.SUBSCRIBER, rtcTokenExpire,
|
|
50
|
+
joinChannelPrivilegeExpire, pubAudioPrivilegeExpire, pubVideoPrivilegeExpire,
|
|
51
|
+
pubDataStreamPrivilegeExpire, rtmUserId, rtmTokenExpire)
|
|
52
|
+
const parsed = new AccessToken2('', '', 0, 0)
|
|
53
|
+
parsed.from_string(token)
|
|
54
|
+
|
|
55
|
+
const rtc = parsed.getServices(kRtcServiceType)[0]
|
|
56
|
+
test.deepEqual({ [ServiceRtc.kPrivilegeJoinChannel]: joinChannelPrivilegeExpire }, rtc.__privileges)
|
|
57
|
+
test.done()
|
|
58
|
+
}
|
package/sample.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
const {RtcTokenBuilder, RtmTokenBuilder, RtcRole, RtmRole} = require('./index')
|
|
2
|
-
|
|
3
|
-
const generateRtcToken = () => {
|
|
4
|
-
// Rtc Examples
|
|
5
|
-
const appID = '970CA35de60c44645bbae8a215061b33';
|
|
6
|
-
const appCertificate = '5CFd2fd1755d40ecb72977518be15d3b';
|
|
7
|
-
const channelName = '7d72365eb983485397e3e3f9d460bdda';
|
|
8
|
-
const uid = 2882341273;
|
|
9
|
-
const account = "2882341273";
|
|
10
|
-
const role = RtcRole.PUBLISHER;
|
|
11
|
-
|
|
12
|
-
const expirationTimeInSeconds = 3600
|
|
13
|
-
|
|
14
|
-
const currentTimestamp = Math.floor(Date.now() / 1000)
|
|
15
|
-
|
|
16
|
-
const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds
|
|
17
|
-
|
|
18
|
-
// IMPORTANT! Build token with either the uid or with the user account. Comment out the option you do not want to use below.
|
|
19
|
-
|
|
20
|
-
// Build token with uid
|
|
21
|
-
const tokenA = RtcTokenBuilder.buildTokenWithUid(appID, appCertificate, channelName, uid, role, privilegeExpiredTs);
|
|
22
|
-
console.log("Token With Integer Number Uid: " + tokenA);
|
|
23
|
-
|
|
24
|
-
// Build token with user account
|
|
25
|
-
const tokenB = RtcTokenBuilder.buildTokenWithUserAccount(appID, appCertificate, channelName, account, role, privilegeExpiredTs);
|
|
26
|
-
console.log("Token With UserAccount: " + tokenB);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const generateRtmToken = () => {
|
|
31
|
-
// Rtm Examples
|
|
32
|
-
const appID = "970CA35de60c44645bbae8a215061b33";
|
|
33
|
-
const appCertificate = "5CFd2fd1755d40ecb72977518be15d3b";
|
|
34
|
-
const account = "test_user_id";
|
|
35
|
-
|
|
36
|
-
const expirationTimeInSeconds = 3600
|
|
37
|
-
const currentTimestamp = Math.floor(Date.now() / 1000)
|
|
38
|
-
|
|
39
|
-
const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds
|
|
40
|
-
|
|
41
|
-
const token = RtmTokenBuilder.buildToken(appID, appCertificate, account, RtmRole, privilegeExpiredTs);
|
|
42
|
-
console.log("Rtm Token: " + token);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
generateRtcToken()
|
|
46
|
-
generateRtmToken()
|