You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by am...@apache.org on 2021/05/06 14:20:17 UTC

[couchdb-fauxton] branch main updated: Properly encode doc link on Changes page

This is an automated email from the ASF dual-hosted git repository.

amaranhao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb-fauxton.git


The following commit(s) were added to refs/heads/main by this push:
     new 8b63eb1  Properly encode doc link on Changes page
     new 114e0d9  Merge pull request #1314 from Antonio-Maranhao/fix-link-changes-page
8b63eb1 is described below

commit 8b63eb1b574801a572b7cc7ed868bc8c94e28cc5
Author: Antonio Maranhao <an...@gmail.com>
AuthorDate: Wed May 5 12:02:50 2021 -0400

    Properly encode doc link on Changes page
    
    URL encode the doc ID and database name when generating the URL
    on the Changes page.
---
 app/addons/documents/__tests__/changes.test.js      | 11 +++++++++++
 app/addons/documents/changes/components/ChangeID.js |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/app/addons/documents/__tests__/changes.test.js b/app/addons/documents/__tests__/changes.test.js
index 6723f3c..6e0ce29 100644
--- a/app/addons/documents/__tests__/changes.test.js
+++ b/app/addons/documents/__tests__/changes.test.js
@@ -183,4 +183,15 @@ describe('ChangeRow', () => {
     const changeRow = mount(<ChangeRow change={change} databaseName="testDatabase" />);
     expect(changeRow.find('a.js-doc-link').length).toBe(1);
   });
+
+  it('generates correct URL for doc and db with special chars', () => {
+    const changeSpecialChars = {
+      id: 'space newline\nquestion_mark?',
+      seq: 5,
+      deleted: false,
+      changes: { code: 'here' }
+    };
+    const changeRow = mount(<ChangeRow change={changeSpecialChars} databaseName="db/name" />);
+    expect(changeRow.find('a.js-doc-link').at(0).prop('href')).toBe('#/database/db%2Fname/space%20newline%0Aquestion_mark%3F');
+  });
 });
diff --git a/app/addons/documents/changes/components/ChangeID.js b/app/addons/documents/changes/components/ChangeID.js
index 79c8a33..6a2b1a4 100644
--- a/app/addons/documents/changes/components/ChangeID.js
+++ b/app/addons/documents/changes/components/ChangeID.js
@@ -21,7 +21,7 @@ export default class ChangeID extends React.Component {
         <span className="js-doc-id">{id}</span>
       );
     }
-    const link = '#' + FauxtonAPI.urls('document', 'app', databaseName, id);
+    const link = '#' + FauxtonAPI.urls('document', 'app', encodeURIComponent(databaseName), encodeURIComponent(id));
     return (
       <a href={link} className="js-doc-link">{id}</a>
     );