You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by be...@apache.org on 2015/02/25 16:49:56 UTC

fauxton commit: updated refs/heads/master to 88148d6

Repository: couchdb-fauxton
Updated Branches:
  refs/heads/master 7f118dfc0 -> 88148d626


Fix for encoding unicode char

Contains a small fix to ensure a unicode char in the db typeahead
component is URL encoded. If the server needed to recognize the
endkey parameter it would cause problems on IE.

Closes COUCHDB-2587


Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/88148d62
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/88148d62
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/88148d62

Branch: refs/heads/master
Commit: 88148d626d44d15dbebd7e2317c54b13ae69bf09
Parents: 7f118df
Author: Ben Keen <be...@gmail.com>
Authored: Tue Feb 17 14:05:13 2015 -0800
Committer: Ben Keen <be...@gmail.com>
Committed: Wed Feb 25 07:50:36 2015 -0800

----------------------------------------------------------------------
 app/addons/fauxton/components.js           | 15 ++++++----
 app/addons/fauxton/tests/componentsSpec.js | 40 +++++++++++++++++++++++++
 2 files changed, 50 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/88148d62/app/addons/fauxton/components.js
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/components.js b/app/addons/fauxton/components.js
index 462a424..c59a7f2 100644
--- a/app/addons/fauxton/components.js
+++ b/app/addons/fauxton/components.js
@@ -615,19 +615,24 @@ function(app, FauxtonAPI, ace, spin, ZeroClipboard) {
       }
       _.bindAll(this);
     },
-    source: function(query, process) {
+
+    getURL: function (query, dbLimit) {
       query = encodeURIComponent(query);
-      var resultFilter = this.resultFilter;
-      var url = [
+      return [
         app.host,
         "/_all_dbs?startkey=%22",
         query,
         "%22&endkey=%22",
         query,
-        "\u9999",
+        encodeURIComponent("\u9999"),
         "%22&limit=",
-        this.dbLimit
+        dbLimit
       ].join('');
+    },
+
+    source: function(query, process) {
+      var url = this.getURL(query, this.dbLimit);
+      var resultFilter = this.resultFilter;
 
       if (this.ajaxReq) { this.ajaxReq.abort(); }
 

http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/88148d62/app/addons/fauxton/tests/componentsSpec.js
----------------------------------------------------------------------
diff --git a/app/addons/fauxton/tests/componentsSpec.js b/app/addons/fauxton/tests/componentsSpec.js
new file mode 100644
index 0000000..cf9ae0e
--- /dev/null
+++ b/app/addons/fauxton/tests/componentsSpec.js
@@ -0,0 +1,40 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+define([
+  'testUtils',
+  'api',
+  'addons/fauxton/components'
+], function (testUtils, FauxtonAPI, Components) {
+  var assert = testUtils.assert;
+
+
+  describe('DbSearchTypeahead', function () {
+
+    // simple test to confirm that the query part of the URL and the \u9999 search end char
+    // are URL encoded
+    it('should URI encode parts of URL', function () {
+      var dbLimit = 30;
+      var typeahead = new Components.DbSearchTypeahead({
+        dbLimit: dbLimit
+      });
+      var url = typeahead.getURL('querywith[]chars', dbLimit);
+
+      // confirm the [] chars have been encoded
+      assert.isTrue(/%5B%5D/.test(url));
+
+      // confirm the \u9999 char has been encoded
+      assert.isFalse(/\u9999/.test(url));
+      assert.isTrue(/%E9%A6%99/.test(url));
+    });
+  });
+
+});