Ghost/ghost/admin/tests/integration/adapters/user-test.js
Fabien O'Carroll 3e5a62309f Use Admin API v2 with session auth (#1046)
refs #9865
- removed all `oauth2` and token-based ESA auth
- added new `cookie` authenticator which handles session creation
- updated the session store to extend from the `ephemeral` in-memory store and to restore by fetching the currently logged in user and using the success/failure state to indicate authentication state
  - ESA automatically calls this `.restore()` method on app boot
  - the `session` service caches the current-user query so there's no unnecessary requests being made for the "logged in" state
- removed the now-unnecessary token refresh and logout routines from the `application` route
- removed the now-unnecessary token refresh routines from the `ajax` service
- removed `access_token` query param from iframe file downloaders
- changed Ember Data adapters and `ghost-paths` to use the `/ghost/api/v2/admin/` namespace
2018-10-05 19:46:33 +01:00

87 lines
2.7 KiB
JavaScript

import Pretender from 'pretender';
import {describe, it} from 'mocha';
import {expect} from 'chai';
import {setupTest} from 'ember-mocha';
describe('Integration: Adapter: user', function () {
setupTest('adapter:user', {
integration: true
});
let server, store;
beforeEach(function () {
store = this.container.lookup('service:store');
server = new Pretender();
});
afterEach(function () {
server.shutdown();
});
it('loads users from regular endpoint when all are fetched', function (done) {
server.get('/ghost/api/v2/admin/users/', function () {
return [200, {'Content-Type': 'application/json'}, JSON.stringify({users: [
{
id: 1,
name: 'User 1',
slug: 'user-1'
}, {
id: 2,
name: 'User 2',
slug: 'user-2'
}
]})];
});
store.findAll('user', {reload: true}).then((users) => {
expect(users).to.be.ok;
expect(users.objectAtContent(0).get('name')).to.equal('User 1');
done();
});
});
it('loads user from slug endpoint when single user is queried and slug is passed in', function (done) {
server.get('/ghost/api/v2/admin/users/slug/user-1/', function () {
return [200, {'Content-Type': 'application/json'}, JSON.stringify({users: [
{
id: 1,
slug: 'user-1',
name: 'User 1'
}
]})];
});
store.queryRecord('user', {slug: 'user-1'}).then((user) => {
expect(user).to.be.ok;
expect(user.get('name')).to.equal('User 1');
done();
});
});
it('handles "include" parameter when querying single user via slug', function (done) {
server.get('/ghost/api/v2/admin/users/slug/user-1/', (request) => {
let params = request.queryParams;
expect(params.include, 'include query').to.equal('roles,count.posts');
return [200, {'Content-Type': 'application/json'}, JSON.stringify({users: [
{
id: 1,
slug: 'user-1',
name: 'User 1',
count: {
posts: 5
}
}
]})];
});
store.queryRecord('user', {slug: 'user-1', include: 'count.posts'}).then((user) => {
expect(user).to.be.ok;
expect(user.get('name')).to.equal('User 1');
expect(user.get('count.posts')).to.equal(5);
done();
});
});
});