mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-03 23:00:14 -05:00
Changed how we determine if a resource is owned by an url generator
refs #9601 - api v2 returns absolute urls - api v0.1 returns relative urls - it's easier if we compare by id
This commit is contained in:
parent
987e41e8d6
commit
3f9d0f51f5
5 changed files with 14 additions and 12 deletions
|
@ -48,7 +48,7 @@ module.exports = function collectionController(req, res, next) {
|
||||||
|
|
||||||
// CASE: does this post belong to this collection?
|
// CASE: does this post belong to this collection?
|
||||||
result.posts = _.filter(result.posts, (post) => {
|
result.posts = _.filter(result.posts, (post) => {
|
||||||
if (urlService.owns(res.routerOptions.identifier, post.url)) {
|
if (urlService.owns(res.routerOptions.identifier, post.id)) {
|
||||||
return post;
|
return post;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -171,10 +171,10 @@ class UrlGenerator {
|
||||||
resource.addListener('removed', onRemoved.bind(this));
|
resource.addListener('removed', onRemoved.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
hasUrl(url) {
|
hasId(id) {
|
||||||
const existingUrl = this.urls.getByUrl(url);
|
const existingUrl = this.urls.getByResourceId(id);
|
||||||
|
|
||||||
if (existingUrl.length && existingUrl[0].generatorId === this.uid) {
|
if (existingUrl && existingUrl.generatorId === this.uid) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -181,8 +181,8 @@ class UrlService {
|
||||||
return '/404/';
|
return '/404/';
|
||||||
}
|
}
|
||||||
|
|
||||||
owns(routerId, url) {
|
owns(routerId, id) {
|
||||||
debug('owns', routerId, url);
|
debug('owns', routerId, id);
|
||||||
|
|
||||||
let urlGenerator;
|
let urlGenerator;
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ class UrlService {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return urlGenerator.hasUrl(url);
|
return urlGenerator.hasId(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPermalinkByUrl(url, options) {
|
getPermalinkByUrl(url, options) {
|
||||||
|
|
|
@ -56,7 +56,7 @@ describe('Unit - services/routing/controllers/collection', function () {
|
||||||
sandbox.stub(filters, 'doFilter');
|
sandbox.stub(filters, 'doFilter');
|
||||||
|
|
||||||
sandbox.stub(urlService, 'owns');
|
sandbox.stub(urlService, 'owns');
|
||||||
urlService.owns.withArgs('identifier', posts[0].url).returns(true);
|
urlService.owns.withArgs('identifier', posts[0].id).returns(true);
|
||||||
|
|
||||||
req = {
|
req = {
|
||||||
path: '/',
|
path: '/',
|
||||||
|
@ -284,10 +284,10 @@ describe('Unit - services/routing/controllers/collection', function () {
|
||||||
res.routerOptions.filter = 'featured:true';
|
res.routerOptions.filter = 'featured:true';
|
||||||
|
|
||||||
urlService.owns.reset();
|
urlService.owns.reset();
|
||||||
urlService.owns.withArgs('identifier', posts[0].url).returns(false);
|
urlService.owns.withArgs('identifier', posts[0].id).returns(false);
|
||||||
urlService.owns.withArgs('identifier', posts[1].url).returns(true);
|
urlService.owns.withArgs('identifier', posts[1].id).returns(true);
|
||||||
urlService.owns.withArgs('identifier', posts[2].url).returns(false);
|
urlService.owns.withArgs('identifier', posts[2].id).returns(false);
|
||||||
urlService.owns.withArgs('identifier', posts[3].url).returns(false);
|
urlService.owns.withArgs('identifier', posts[3].id).returns(false);
|
||||||
|
|
||||||
fetchDataStub.withArgs({page: 1, slug: undefined, limit: postsPerPage}, res.routerOptions)
|
fetchDataStub.withArgs({page: 1, slug: undefined, limit: postsPerPage}, res.routerOptions)
|
||||||
.resolves({
|
.resolves({
|
||||||
|
|
|
@ -93,6 +93,8 @@ describe('Unit: services/url/Urls', function () {
|
||||||
|
|
||||||
it('fn: getByResourceId', function () {
|
it('fn: getByResourceId', function () {
|
||||||
urls.getByResourceId('object-id-2').url.should.eql('/something/');
|
urls.getByResourceId('object-id-2').url.should.eql('/something/');
|
||||||
|
should.exist(urls.getByResourceId('object-id-2').generatorId);
|
||||||
|
urls.getByResourceId('object-id-2').generatorId.should.eql(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('fn: getByGeneratorId', function () {
|
it('fn: getByGeneratorId', function () {
|
||||||
|
|
Loading…
Add table
Reference in a new issue