mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-04 17:04:59 +03:00
Add new ghost-scheduler client
refs #6301, #6399 - new scheduler client will be used by any web app that handles time and calls back to the scheduling API at the right time - new scheduler client will need to be confidential, rather than public, hence the 'web' type instead of 'ua' - adds validation to client type that it must have a type of 'ua', 'web', or 'native'
This commit is contained in:
parent
739977a368
commit
8b9734ea31
@ -0,0 +1,16 @@
|
|||||||
|
// Create a new `ghost-scheduler` client for use in themes
|
||||||
|
var models = require('../../../../models'),
|
||||||
|
|
||||||
|
schedulerClient = require('../utils').findModelFixtureEntry('Client', {slug: 'ghost-scheduler'}),
|
||||||
|
message = 'Add ghost-scheduler client fixture';
|
||||||
|
|
||||||
|
module.exports = function addGhostFrontendClient(options, logger) {
|
||||||
|
return models.Client.findOne({slug: schedulerClient.slug}).then(function (client) {
|
||||||
|
if (!client) {
|
||||||
|
logger.info(message);
|
||||||
|
return models.Client.add(schedulerClient, options);
|
||||||
|
} else {
|
||||||
|
logger.warn(message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
@ -1,4 +1,6 @@
|
|||||||
module.exports = [
|
module.exports = [
|
||||||
// add jquery setting and privacy info
|
// add jquery setting and privacy info
|
||||||
require('./01-update-ghost-client-secrets')
|
require('./01-update-ghost-client-secrets'),
|
||||||
|
// add ghost-scheduler client
|
||||||
|
require('./02-add-ghost-scheduler-client')
|
||||||
];
|
];
|
||||||
|
@ -42,6 +42,12 @@
|
|||||||
"name": "Ghost Frontend",
|
"name": "Ghost Frontend",
|
||||||
"slug": "ghost-frontend",
|
"slug": "ghost-frontend",
|
||||||
"status": "enabled"
|
"status": "enabled"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ghost Scheduler",
|
||||||
|
"slug": "ghost-scheduler",
|
||||||
|
"status": "enabled",
|
||||||
|
"type": "web"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -172,7 +172,7 @@ module.exports = {
|
|||||||
redirection_uri: {type: 'string', maxlength: 2000, nullable: true},
|
redirection_uri: {type: 'string', maxlength: 2000, nullable: true},
|
||||||
logo: {type: 'string', maxlength: 2000, nullable: true},
|
logo: {type: 'string', maxlength: 2000, nullable: true},
|
||||||
status: {type: 'string', maxlength: 150, nullable: false, defaultTo: 'development'},
|
status: {type: 'string', maxlength: 150, nullable: false, defaultTo: 'development'},
|
||||||
type: {type: 'string', maxlength: 150, nullable: false, defaultTo: 'ua'},
|
type: {type: 'string', maxlength: 150, nullable: false, defaultTo: 'ua', validations: {isIn: [['ua', 'web', 'native']]}},
|
||||||
description: {type: 'string', maxlength: 200, nullable: true},
|
description: {type: 'string', maxlength: 200, nullable: true},
|
||||||
created_at: {type: 'dateTime', nullable: false},
|
created_at: {type: 'dateTime', nullable: false},
|
||||||
created_by: {type: 'integer', nullable: false},
|
created_by: {type: 'integer', nullable: false},
|
||||||
|
@ -159,9 +159,10 @@ describe('Database Migration (special functions)', function () {
|
|||||||
|
|
||||||
// Clients
|
// Clients
|
||||||
should.exist(result.clients);
|
should.exist(result.clients);
|
||||||
result.clients.length.should.eql(2);
|
result.clients.length.should.eql(3);
|
||||||
result.clients.at(0).get('name').should.eql('Ghost Admin');
|
result.clients.at(0).get('name').should.eql('Ghost Admin');
|
||||||
result.clients.at(1).get('name').should.eql('Ghost Frontend');
|
result.clients.at(1).get('name').should.eql('Ghost Frontend');
|
||||||
|
result.clients.at(2).get('name').should.eql('Ghost Scheduler');
|
||||||
|
|
||||||
// User (Owner)
|
// User (Owner)
|
||||||
should.exist(result.users);
|
should.exist(result.users);
|
||||||
|
@ -718,8 +718,9 @@ describe('Fixtures', function () {
|
|||||||
sequenceStub.firstCall.args[0][0].should.be.a.Function().with.property('name', 'runVersionTasks');
|
sequenceStub.firstCall.args[0][0].should.be.a.Function().with.property('name', 'runVersionTasks');
|
||||||
|
|
||||||
sequenceStub.secondCall.calledWith(sinon.match.array, sinon.match.object, loggerStub).should.be.true();
|
sequenceStub.secondCall.calledWith(sinon.match.array, sinon.match.object, loggerStub).should.be.true();
|
||||||
sequenceStub.secondCall.args[0].should.be.an.Array().with.lengthOf(1);
|
sequenceStub.secondCall.args[0].should.be.an.Array().with.lengthOf(2);
|
||||||
sequenceStub.secondCall.args[0][0].should.be.a.Function().with.property('name', 'updateGhostClientsSecrets');
|
sequenceStub.secondCall.args[0][0].should.be.a.Function().with.property('name', 'updateGhostClientsSecrets');
|
||||||
|
sequenceStub.secondCall.args[0][1].should.be.a.Function().with.property('name', 'addGhostFrontendClient');
|
||||||
|
|
||||||
// Reset
|
// Reset
|
||||||
sequenceReset();
|
sequenceReset();
|
||||||
@ -730,7 +731,7 @@ describe('Fixtures', function () {
|
|||||||
describe('Tasks:', function () {
|
describe('Tasks:', function () {
|
||||||
it('should have tasks for 005', function () {
|
it('should have tasks for 005', function () {
|
||||||
should.exist(fixtures005);
|
should.exist(fixtures005);
|
||||||
fixtures005.should.be.an.Array().with.lengthOf(1);
|
fixtures005.should.be.an.Array().with.lengthOf(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('01-update-ghost-client-secrets', function () {
|
describe('01-update-ghost-client-secrets', function () {
|
||||||
@ -774,6 +775,44 @@ describe('Fixtures', function () {
|
|||||||
}).catch(done);
|
}).catch(done);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('02-add-ghost-scheduler-client', function () {
|
||||||
|
var clientOneStub;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
clientOneStub = sandbox.stub(models.Client, 'findOne').returns(Promise.resolve({}));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('tries to add client correctly', function (done) {
|
||||||
|
var clientAddStub = sandbox.stub(models.Client, 'add').returns(Promise.resolve());
|
||||||
|
clientOneStub.returns(Promise.resolve());
|
||||||
|
|
||||||
|
fixtures005[1]({}, loggerStub).then(function () {
|
||||||
|
clientOneStub.calledOnce.should.be.true();
|
||||||
|
clientOneStub.calledWith({slug: 'ghost-scheduler'}).should.be.true();
|
||||||
|
clientAddStub.calledOnce.should.be.true();
|
||||||
|
loggerStub.info.calledOnce.should.be.true();
|
||||||
|
loggerStub.warn.called.should.be.false();
|
||||||
|
sinon.assert.callOrder(clientOneStub, loggerStub.info, clientAddStub);
|
||||||
|
|
||||||
|
done();
|
||||||
|
}).catch(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not try to add client if it already exists', function (done) {
|
||||||
|
var clientAddStub = sandbox.stub(models.Client, 'add').returns(Promise.resolve());
|
||||||
|
|
||||||
|
fixtures005[1]({}, loggerStub).then(function () {
|
||||||
|
clientOneStub.calledOnce.should.be.true();
|
||||||
|
clientOneStub.calledWith({slug: 'ghost-scheduler'}).should.be.true();
|
||||||
|
clientAddStub.called.should.be.false();
|
||||||
|
loggerStub.info.called.should.be.false();
|
||||||
|
loggerStub.warn.calledOnce.should.be.true();
|
||||||
|
|
||||||
|
done();
|
||||||
|
}).catch(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -821,8 +860,8 @@ describe('Fixtures', function () {
|
|||||||
tagAddStub.calledOnce.should.be.true();
|
tagAddStub.calledOnce.should.be.true();
|
||||||
roleOneStub.callCount.should.be.aboveOrEqual(4);
|
roleOneStub.callCount.should.be.aboveOrEqual(4);
|
||||||
roleAddStub.callCount.should.eql(4);
|
roleAddStub.callCount.should.eql(4);
|
||||||
clientOneStub.calledTwice.should.be.true();
|
clientOneStub.calledThrice.should.be.true();
|
||||||
clientAddStub.calledTwice.should.be.true();
|
clientAddStub.calledThrice.should.be.true();
|
||||||
|
|
||||||
permOneStub.callCount.should.eql(30);
|
permOneStub.callCount.should.eql(30);
|
||||||
permsAddStub.called.should.be.true();
|
permsAddStub.called.should.be.true();
|
||||||
|
@ -33,7 +33,7 @@ describe('DB version integrity', function () {
|
|||||||
// Only these variables should need updating
|
// Only these variables should need updating
|
||||||
var currentDbVersion = '005',
|
var currentDbVersion = '005',
|
||||||
currentSchemaHash = 'be706cdbeb06103d90703ee733efc556',
|
currentSchemaHash = 'be706cdbeb06103d90703ee733efc556',
|
||||||
currentFixturesHash = '77ebb081539f9e0c49f487faf7fd929e';
|
currentFixturesHash = '21dd859601c8e1c12eaff9eccfbe966a';
|
||||||
|
|
||||||
// If this test is failing, then it is likely a change has been made that requires a DB version bump,
|
// If this test is failing, then it is likely a change has been made that requires a DB version bump,
|
||||||
// and the values above will need updating as confirmation
|
// and the values above will need updating as confirmation
|
||||||
|
Loading…
Reference in New Issue
Block a user