mirror of
https://github.com/status-im/realm-js.git
synced 2025-02-10 13:47:05 +00:00
Merge pull request #1409 from realm/kneth/bugfix/invalid-token
adminUser() throws an exception if token or url is invalid
This commit is contained in:
commit
4055c9e047
11
CHANGELOG.md
11
CHANGELOG.md
@ -1,3 +1,14 @@
|
|||||||
|
X.Y.Z Release notes
|
||||||
|
=============================================================
|
||||||
|
### Breaking changes
|
||||||
|
* `Realm.Sync.User.adminUser()` will now throw an exception if either token or server argument is invalid.
|
||||||
|
|
||||||
|
### Enhancements
|
||||||
|
* None.
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
* None.
|
||||||
|
|
||||||
2.0.0-rc22 Release notes (2017-10-13)
|
2.0.0-rc22 Release notes (2017-10-13)
|
||||||
=============================================================
|
=============================================================
|
||||||
### Breaking changes
|
### Breaking changes
|
||||||
|
@ -209,6 +209,7 @@ class User {
|
|||||||
* @param {string} adminToken - existing admin token
|
* @param {string} adminToken - existing admin token
|
||||||
* @param {string} server - authentication server
|
* @param {string} server - authentication server
|
||||||
* @return {User} - admin user populated with the given token and server
|
* @return {User} - admin user populated with the given token and server
|
||||||
|
* @throws {Error} If adminToken or server is invalid.
|
||||||
*/
|
*/
|
||||||
static adminUser(adminToken, server) {}
|
static adminUser(adminToken, server) {}
|
||||||
|
|
||||||
|
@ -187,7 +187,19 @@ const staticMethods = {
|
|||||||
|
|
||||||
adminUser(token, server) {
|
adminUser(token, server) {
|
||||||
checkTypes(arguments, ['string', 'string']);
|
checkTypes(arguments, ['string', 'string']);
|
||||||
return this._adminUser(server, token);
|
const user = this._adminUser(server, token);
|
||||||
|
// FIXME: find a better way to detect that token or server is invalid
|
||||||
|
// check if object is empty
|
||||||
|
var isEmpty = true;
|
||||||
|
for(var prop in user) {
|
||||||
|
if (user.hasOwnProperty(prop)) {
|
||||||
|
isEmpty = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isEmpty) {
|
||||||
|
throw new Error('Invalid adminToken or server.');
|
||||||
|
}
|
||||||
|
return user;
|
||||||
},
|
},
|
||||||
|
|
||||||
register(server, username, password, callback) {
|
register(server, username, password, callback) {
|
||||||
|
@ -71,14 +71,22 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if (global.enableSyncTests) {
|
if (global.enableSyncTests) {
|
||||||
module.exports.testEncryptionWithSync = function() {
|
module.exports.testEncryptionWithSync = function() {
|
||||||
new Realm({
|
Realm.Sync.User.login('http://localhost:9080', global.testAdminUserInfo.username, global.testAdminUserInfo.password, (error, user) => {
|
||||||
encryptionKey: new Int8Array(64),
|
if (error) {
|
||||||
sync: {
|
reject(error);
|
||||||
user: Realm.Sync.User.adminUser('fake-token', 'http://fake-server'),
|
|
||||||
url: 'realm://fake-server'
|
|
||||||
}
|
}
|
||||||
|
new Realm({
|
||||||
|
encryptionKey: new Int8Array(64),
|
||||||
|
sync: {
|
||||||
|
user: user,
|
||||||
|
url: 'realm://localhost:9080'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
user.logout(); // FIXME: clearTestState() doesn't clean up enough and Realm.Sync.User.current might not work
|
||||||
|
resolve();
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ if (global.enableSyncTests) {
|
|||||||
// FIXME: Permission tests currently fail in chrome debugging mode.
|
// FIXME: Permission tests currently fail in chrome debugging mode.
|
||||||
if (typeof navigator === 'undefined' ||
|
if (typeof navigator === 'undefined' ||
|
||||||
!/Chrome/.test(navigator.userAgent)) { // eslint-disable-line no-undef
|
!/Chrome/.test(navigator.userAgent)) { // eslint-disable-line no-undef
|
||||||
TESTS.PermissionTests = require('./permission-tests');
|
TESTS.PermissionTests = require('./permission-tests');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,6 +371,38 @@ module.exports = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
testAdminUser() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (!isNodeProcess) {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME: check if adminUser() returns user iff valid token/server
|
||||||
|
let didThrow = false;
|
||||||
|
try {
|
||||||
|
let user = Realm.Sync.User.adminUser('THIS_IS_INVALID', 'http://localhost:9080');
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
didThrow = true;
|
||||||
|
TestCase.assertTrue(e.message === 'Invalid adminToken or server.');
|
||||||
|
}
|
||||||
|
TestCase.assertTrue(didThrow);
|
||||||
|
|
||||||
|
// FIXME: find a way to set up a proper admin token
|
||||||
|
didThrow = false;
|
||||||
|
try {
|
||||||
|
Realm.Sync.User.adminUser('THIS_IS_VALID', 'http://foo.bar:9080');
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
didThrow = true;
|
||||||
|
TestCase.assertTrue(e.message === 'Invalid adminToken or server.');
|
||||||
|
}
|
||||||
|
TestCase.assertTrue(didThrow);
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This test fails because of realm-object-store #243 . We should use 2 users.
|
/* This test fails because of realm-object-store #243 . We should use 2 users.
|
||||||
testSynchronizeChangesWithTwoClientsAndOneUser() {
|
testSynchronizeChangesWithTwoClientsAndOneUser() {
|
||||||
// Test Schema
|
// Test Schema
|
||||||
@ -432,4 +464,3 @@ module.exports = {
|
|||||||
}, */
|
}, */
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user