Add users.isActivated

it's easier to see where we do activation checks
This commit is contained in:
Girish Ramakrishnan
2018-11-10 18:08:08 -08:00
parent 0c5cb9c98f
commit bd2b03876b
5 changed files with 35 additions and 14 deletions
+2 -2
View File
@@ -93,9 +93,9 @@ function onActivated(callback) {
// Starting the platform after a user is available means:
// 1. mail bounces can now be sent to the cloudron owner
// 2. the restore code path can run without sudo (since mail/ is non-root)
users.count(function (error, count) {
users.isActivated(function (error, activated) {
if (error) return callback(new CloudronError(CloudronError.INTERNAL_ERROR, error));
if (!count) return callback(); // not activated
if (!activated) return callback(); // not activated
async.series([
platform.start,
+2 -2
View File
@@ -601,9 +601,9 @@ function restartMail(callback) {
function restartMailIfActivated(callback) {
assert.strictEqual(typeof callback, 'function');
users.count(function (error, count) {
users.isActivated(function (error, activated) {
if (error) return callback(new MailError(MailError.INTERNAL_ERROR, error));
if (!count) {
if (!activated) {
debug('restartMailIfActivated: skipping restart of mail container since Cloudron is not activated yet');
return callback(); // not provisioned yet, do not restart container after dns setup
}
+4 -4
View File
@@ -280,9 +280,9 @@ function restore(backupConfig, backupId, version, autoconf, auditSource, callbac
if (gWebadminStatus.configuring || gWebadminStatus.restore.active) return callback(new SetupError(SetupError.BAD_STATE, 'Already restoring or configuring'));
users.count(function (error, count) {
users.isActivated(function (error, activated) {
if (error) return callback(new SetupError(SetupError.INTERNAL_ERROR, error));
if (count) return callback(new SetupError(SetupError.ALREADY_PROVISIONED, 'Already activated'));
if (activated) return callback(new SetupError(SetupError.ALREADY_PROVISIONED, 'Already activated'));
backups.testConfig(backupConfig, function (error) {
if (error && error.reason === BackupsError.BAD_FIELD) return callback(new SetupError(SetupError.BAD_FIELD, error.message));
@@ -317,7 +317,7 @@ function restore(backupConfig, backupId, version, autoconf, auditSource, callbac
function getStatus(callback) {
assert.strictEqual(typeof callback, 'function');
users.count(function (error, count) {
users.isActivated(function (error, activated) {
if (error) return callback(new SetupError(SetupError.INTERNAL_ERROR, error));
settings.getCloudronName(function (error, cloudronName) {
@@ -329,7 +329,7 @@ function getStatus(callback) {
provider: config.provider(),
cloudronName: cloudronName,
adminFqdn: config.adminDomain() ? config.adminFqdn() : null,
activated: count !== 0,
activated: activated,
edition: config.edition(),
webadminStatus: gWebadminStatus // only valid when !activated
});
+16 -5
View File
@@ -731,14 +731,25 @@ describe('User', function () {
});
});
describe('count', function () {
before(createOwner);
describe('activated', function () {
after(cleanupUsers);
it('succeeds', function (done) {
users.count(function (error, count) {
it('succeeds with no users', function (done) {
users.isActivated(function (error, activated) {
expect(error).to.not.be.ok();
expect(count).to.be(1);
expect(activated).to.be(false);
done();
});
});
it('create users', function (done) {
createOwner(done);
});
it('succeeds with users', function (done) {
users.isActivated(function (error, activated) {
expect(error).to.not.be.ok();
expect(activated).to.be(true);
done();
});
});
+11 -1
View File
@@ -8,7 +8,7 @@ exports = module.exports = {
list: list,
create: create,
count: count,
isActivated: isActivated,
verify: verify,
verifyWithUsername: verifyWithUsername,
verifyWithEmail: verifyWithEmail,
@@ -323,6 +323,16 @@ function count(callback) {
});
}
function isActivated(callback) {
assert.strictEqual(typeof callback, 'function');
count(function (error, count) {
if (error) return callback(error);
callback(null, count !== 0);
});
}
function get(userId, callback) {
assert.strictEqual(typeof userId, 'string');
assert.strictEqual(typeof callback, 'function');