Skip to content
This repository was archived by the owner on Feb 5, 2024. It is now read-only.

Commit 5297cd8

Browse files
authored
Merge pull request crowi#105 from crowi/fix-pagename-problem
Fix pagename problem
2 parents 1933d18 + 1c0ec5f commit 5297cd8

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

lib/models/page.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,14 +325,14 @@ module.exports = function(crowi) {
325325
pageSchema.statics.isCreatableName = function(name) {
326326
var forbiddenPages = [
327327
/\^|\$|\*|\+|\#/,
328-
/^\/_api\/.*/,
328+
/^\/_.*/, // /_api/* and so on
329329
/^\/\-\/.*/,
330330
/^\/_r\/.*/,
331331
/^\/user\/[^\/]+\/(bookmarks|comments|activities|pages|recent-create|recent-edit)/, // reserved
332-
/^http:\/\/.+$/, // avoid miss in renaming
332+
/^https?:\/\/.+$/, // avoid miss in renaming
333333
/.+\/edit$/,
334334
/.+\.md$/,
335-
/^\/(installer|register|login|logout|admin|me|files|trash|paste|comments).+/,
335+
/^\/(installer|register|login|logout|admin|me|files|trash|paste|comments)(\/.*|$)/,
336336
];
337337

338338
var isCreatable = true;

test/models/page.test.js

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ describe('Page', function () {
6262
},
6363
];
6464

65-
testDBUtil.generateFixture(conn, 'Page', fixture)
65+
return testDBUtil.generateFixture(conn, 'Page', fixture)
6666
.then(function(pages) {
6767
done();
6868
});
@@ -93,6 +93,43 @@ describe('Page', function () {
9393
});
9494
});
9595

96+
describe('.isCreatableName', function() {
97+
98+
expect(Page.isCreatableName('/hoge')).to.be.true;
99+
100+
// edge cases
101+
expect(Page.isCreatableName('/me')).to.be.false;
102+
expect(Page.isCreatableName('/me/')).to.be.false;
103+
expect(Page.isCreatableName('/me/x')).to.be.false;
104+
expect(Page.isCreatableName('/meeting')).to.be.true;
105+
expect(Page.isCreatableName('/meeting/x')).to.be.true;
106+
107+
// under score
108+
expect(Page.isCreatableName('/_')).to.be.false;
109+
expect(Page.isCreatableName('/_r/x')).to.be.false;
110+
expect(Page.isCreatableName('/_api')).to.be.false;
111+
expect(Page.isCreatableName('/_apix')).to.be.false;
112+
expect(Page.isCreatableName('/_api/x')).to.be.false;
113+
114+
expect(Page.isCreatableName('/hoge/xx.md')).to.be.false;
115+
116+
117+
var forbidden = ['installer', 'register', 'login', 'logout', 'admin', 'files', 'trash', 'paste', 'comments'];
118+
for (var i = 0; i < forbidden.length ; i++) {
119+
var pn = forbidden[i];
120+
expect(Page.isCreatableName('/' + pn + '')).to.be.false;
121+
expect(Page.isCreatableName('/' + pn + '/')).to.be.false;
122+
expect(Page.isCreatableName('/' + pn + '/abc')).to.be.false;
123+
}
124+
125+
var forbidden = ['bookmarks', 'comments', 'activities', 'pages', 'recent-create', 'recent-edit'];
126+
for (var i = 0; i < forbidden.length ; i++) {
127+
var pn = forbidden[i];
128+
expect(Page.isCreatableName('/user/aoi/' + pn)).to.be.false;
129+
expect(Page.isCreatableName('/user/aoi/x/' + pn)).to.be.true;
130+
}
131+
});
132+
96133
describe('.isCreator', function() {
97134
context('with creator', function() {
98135
it('should return true', function(done) {

0 commit comments

Comments
 (0)