Просмотр исходного кода

Merge pull request #132 from crowi/avoid-rename-missing

Avoid rename with invalid name
Sotaro KARASAWA 9 лет назад
Родитель
Сommit
b6eefe80e7
2 измененных файлов с 10 добавлено и 1 удалено
  1. 1 1
      lib/models/page.js
  2. 9 0
      test/models/page.test.js

+ 1 - 1
lib/models/page.js

@@ -382,7 +382,7 @@ module.exports = function(crowi) {
       /^\/\-\/.*/,
       /^\/_r\/.*/,
       /^\/user\/[^\/]+\/(bookmarks|comments|activities|pages|recent-create|recent-edit)/, // reserved
-      /^https?:\/\/.+$/, // avoid miss in renaming
+      /^\/?https?:\/\/.+$/, // avoid miss in renaming
       /.+\/edit$/,
       /.+\.md$/,
       /^\/(installer|register|login|logout|admin|me|files|trash|paste|comments)(\/.*|$)/,

+ 9 - 0
test/models/page.test.js

@@ -128,6 +128,9 @@ describe('Page', function () {
       expect(Page.isCreatableName('/meeting')).to.be.true;
       expect(Page.isCreatableName('/meeting/x')).to.be.true;
 
+      // end with "edit"
+      expect(Page.isCreatableName('/meeting/edit')).to.be.false;
+
       // under score
       expect(Page.isCreatableName('/_')).to.be.false;
       expect(Page.isCreatableName('/_r/x')).to.be.false;
@@ -137,6 +140,12 @@ describe('Page', function () {
 
       expect(Page.isCreatableName('/hoge/xx.md')).to.be.false;
 
+      // start with https?
+      expect(Page.isCreatableName('/http://demo.crowi.wiki/user/sotarok/hoge')).to.be.false;
+      expect(Page.isCreatableName('/https://demo.crowi.wiki/user/sotarok/hoge')).to.be.false;
+      expect(Page.isCreatableName('http://demo.crowi.wiki/user/sotarok/hoge')).to.be.false;
+      expect(Page.isCreatableName('https://demo.crowi.wiki/user/sotarok/hoge')).to.be.false;
+
 
       var forbidden = ['installer', 'register', 'login', 'logout', 'admin', 'files', 'trash', 'paste', 'comments'];
       for (var i = 0; i < forbidden.length ; i++) {