mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-20 22:42:53 -05:00
Refactored Ghost SDK unit test
refs #9866 - the sdk does not use the url utility - it just respects what you pass in - there is no need to test this behaviour for multiple API versions
This commit is contained in:
parent
c94c08f750
commit
b74879c64e
1 changed files with 52 additions and 135 deletions
|
@ -1,20 +1,7 @@
|
||||||
const should = require('should');
|
const should = require('should');
|
||||||
const ghostSdk = require('../../../server/public/ghost-sdk');
|
const ghostSdk = require('../../../server/public/ghost-sdk');
|
||||||
const configUtils = require('../../utils/configUtils');
|
|
||||||
const urlService = require('../../../server/services/url');
|
|
||||||
const testUtils = require('../../utils');
|
|
||||||
|
|
||||||
describe('Ghost Ajax Helper', function () {
|
|
||||||
beforeEach(function () {
|
|
||||||
configUtils.set({
|
|
||||||
url: 'http://testblog.com/'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(function () {
|
|
||||||
configUtils.restore();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
describe('Ghost SDK Helper', function () {
|
||||||
it('sets url empty if it is not set on init', function () {
|
it('sets url empty if it is not set on init', function () {
|
||||||
ghostSdk.init({
|
ghostSdk.init({
|
||||||
clientId: '',
|
clientId: '',
|
||||||
|
@ -24,123 +11,57 @@ describe('Ghost Ajax Helper', function () {
|
||||||
ghostSdk.url.api().should.equal('');
|
ghostSdk.url.api().should.equal('');
|
||||||
});
|
});
|
||||||
|
|
||||||
['deprecated', 'active'].forEach((apiVersion) => {
|
it('renders basic url correctly when no arguments are presented', function () {
|
||||||
describe(`for api version: ${apiVersion}`, function () {
|
ghostSdk.init({
|
||||||
it('renders basic url correctly when no arguments are presented', function () {
|
clientId: '',
|
||||||
ghostSdk.init({
|
clientSecret: '',
|
||||||
clientId: '',
|
url: '/api-url/'
|
||||||
clientSecret: '',
|
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.url.api().should.equal(`//testblog.com${testUtils.API.getApiPath({version: apiVersion})}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('blog url is https', function () {
|
|
||||||
configUtils.set({
|
|
||||||
url: 'https://testblog.com/'
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: '',
|
|
||||||
clientSecret: '',
|
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.url.api().should.equal(`https://testblog.com${testUtils.API.getApiPath({version: apiVersion})}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('admin url is https', function () {
|
|
||||||
configUtils.set({
|
|
||||||
url: 'http://testblog.com/',
|
|
||||||
admin: {
|
|
||||||
url: 'https://admin.testblog.com'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: '',
|
|
||||||
clientSecret: '',
|
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.url.api().should.equal(`https://admin.testblog.com${testUtils.API.getApiPath({version: apiVersion})}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('strips arguments of forward and trailing slashes correctly', function () {
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: '',
|
|
||||||
clientSecret: '',
|
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.url.api('a/', '/b', '/c/').should.equal(`//testblog.com${testUtils.API.getApiPath({version: apiVersion})}a/b/c/`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('appends client_id & client_secret to query string automatically', function () {
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: 'ghost-frontend',
|
|
||||||
clientSecret: 'notasecret',
|
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.url.api().should.equal(`//testblog.com${testUtils.API.getApiPath({version: apiVersion})}?client_id=ghost-frontend&client_secret=notasecret`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('generates query parameters correctly', function () {
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: 'ghost-frontend',
|
|
||||||
clientSecret: 'notasecret',
|
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
var rendered = ghostSdk.url.api({a: 'string', b: 5, c: 'en coded'});
|
|
||||||
rendered.should.equal(`//testblog.com${testUtils.API.getApiPath({version: apiVersion, versionType: 'content'})}?a=string&b=5&c=en%20coded&client_id=ghost-frontend&client_secret=notasecret`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('generates complex query correctly', function () {
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: 'ghost-frontend',
|
|
||||||
clientSecret: 'notasecret',
|
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
var rendered = ghostSdk.url.api('posts/', '/tags/', '/count', {include: 'tags,tests', page: 2});
|
|
||||||
|
|
||||||
rendered.should.equal(`//testblog.com${testUtils.API.getApiPath({version: apiVersion, versionType: 'content'})}posts/tags/count/?include=tags%2Ctests&page=2&client_id=ghost-frontend&client_secret=notasecret`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('works with an https config', function () {
|
|
||||||
configUtils.set({
|
|
||||||
url: 'https://testblog.com/'
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: 'ghost-frontend',
|
|
||||||
clientSecret: 'notasecret',
|
|
||||||
url: urlService.utils.urlFor('api', {version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
var rendered = ghostSdk.url.api('posts/', '/tags/', '/count', {include: 'tags,tests', page: 2});
|
|
||||||
|
|
||||||
rendered.should.equal(`https://testblog.com${testUtils.API.getApiPath({version: apiVersion, versionType: 'content'})}posts/tags/count/?include=tags%2Ctests&page=2&client_id=ghost-frontend&client_secret=notasecret`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('works with an https config and subdirectory', function () {
|
|
||||||
configUtils.set({
|
|
||||||
url: 'https://testblog.com/blog/'
|
|
||||||
});
|
|
||||||
ghostSdk.init({
|
|
||||||
clientId: 'ghost-frontend',
|
|
||||||
clientSecret: 'notasecret',
|
|
||||||
url: urlService.utils.urlFor('api', {version: apiVersion, versionType: 'content'}, true)
|
|
||||||
});
|
|
||||||
|
|
||||||
var rendered = ghostSdk.url.api('posts/', '/tags/', '/count', {include: 'tags,tests', page: 2});
|
|
||||||
|
|
||||||
rendered.should.equal(`https://testblog.com/blog${testUtils.API.getApiPath({version: apiVersion, versionType: 'content'})}posts/tags/count/?include=tags%2Ctests&page=2&client_id=ghost-frontend&client_secret=notasecret`);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ghostSdk.url.api().should.equal('/api-url/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('strips arguments of forward and trailing slashes correctly', function () {
|
||||||
|
ghostSdk.init({
|
||||||
|
clientId: '',
|
||||||
|
clientSecret: '',
|
||||||
|
url: '/api-url/'
|
||||||
|
});
|
||||||
|
|
||||||
|
ghostSdk.url.api('a/', '/b', '/c/').should.equal('/api-url/a/b/c/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('appends client_id & client_secret to query string automatically', function () {
|
||||||
|
ghostSdk.init({
|
||||||
|
clientId: 'ghost-frontend',
|
||||||
|
clientSecret: 'notasecret',
|
||||||
|
url: '/api-url/'
|
||||||
|
});
|
||||||
|
|
||||||
|
ghostSdk.url.api().should.equal('/api-url/?client_id=ghost-frontend&client_secret=notasecret');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('generates query parameters correctly', function () {
|
||||||
|
ghostSdk.init({
|
||||||
|
clientId: 'ghost-frontend',
|
||||||
|
clientSecret: 'notasecret',
|
||||||
|
url: '/api-url/'
|
||||||
|
});
|
||||||
|
|
||||||
|
var rendered = ghostSdk.url.api({a: 'string', b: 5, c: 'en coded'});
|
||||||
|
rendered.should.equal('/api-url/?a=string&b=5&c=en%20coded&client_id=ghost-frontend&client_secret=notasecret');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('generates complex query correctly', function () {
|
||||||
|
ghostSdk.init({
|
||||||
|
clientId: 'ghost-frontend',
|
||||||
|
clientSecret: 'notasecret',
|
||||||
|
url: '/api-url/'
|
||||||
|
});
|
||||||
|
|
||||||
|
var rendered = ghostSdk.url.api('posts/', '/tags/', '/count', {include: 'tags,tests', page: 2});
|
||||||
|
|
||||||
|
rendered.should.equal('/api-url/posts/tags/count/?include=tags%2Ctests&page=2&client_id=ghost-frontend&client_secret=notasecret');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles null/undefined queryOptions correctly', function () {
|
it('handles null/undefined queryOptions correctly', function () {
|
||||||
|
@ -165,14 +86,10 @@ describe('Ghost Ajax Helper', function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be idempotent', function () {
|
it('should be idempotent', function () {
|
||||||
configUtils.set({
|
|
||||||
url: 'https://testblog.com/blog/'
|
|
||||||
});
|
|
||||||
|
|
||||||
ghostSdk.init({
|
ghostSdk.init({
|
||||||
clientId: 'ghost-frontend',
|
clientId: 'ghost-frontend',
|
||||||
clientSecret: 'notasecret',
|
clientSecret: 'notasecret',
|
||||||
url: urlService.utils.urlFor('api', {cors: true, version: 'deprecated', versionType: 'content'}, true)
|
url: '/api-url/'
|
||||||
});
|
});
|
||||||
|
|
||||||
var rendered = ghostSdk.url.api('posts', {limit: 3}),
|
var rendered = ghostSdk.url.api('posts', {limit: 3}),
|
||||||
|
|
Loading…
Add table
Reference in a new issue