You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by ro...@apache.org on 2015/07/12 13:55:26 UTC
[06/50] couchdb-nano git commit: (fixes #236) - url reformating
(fixes #236) - url reformating
This solves a bug when initializing nano with a url with databasename, which
also occurs somewhere else in the url, eg. in the username.
Also makes it possible to use nano with couches which are exposed from a
subdirectory, eg the server lives at http://example.com/couchdb.
Project: http://git-wip-us.apache.org/repos/asf/couchdb-nano/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-nano/commit/76004b23
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-nano/tree/76004b23
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-nano/diff/76004b23
Branch: refs/heads/master
Commit: 76004b230bfeff5862bb491f6ea23399ed1fce90
Parents: 6bb82d9
Author: Johannes J. Schmidt <sc...@netzmerk.com>
Authored: Tue Nov 25 22:44:19 2014 +0100
Committer: Johannes J. Schmidt <sc...@netzmerk.com>
Committed: Tue Nov 25 22:44:19 2014 +0100
----------------------------------------------------------------------
lib/nano.js | 5 +++--
tests/integration/shared/config.js | 15 +++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-nano/blob/76004b23/lib/nano.js
----------------------------------------------------------------------
diff --git a/lib/nano.js b/lib/nano.js
index 277c1d9..f780a5e 100644
--- a/lib/nano.js
+++ b/lib/nano.js
@@ -718,10 +718,11 @@ module.exports = exports = nano = function dbScope(cfg) {
var path = u.parse(cfg.url);
var pathArray = path.pathname.split('/').filter(function(e) { return e; });
- var db = path.pathname && pathArray[0];
+ var db = pathArray.pop();
+ var rootPath = path.pathname.replace(/\/?$/, '/..');
if (db) {
- cfg.url = cfg.url.replace('/' + db, '');
+ cfg.url = u.resolve(cfg.url, rootPath).replace(/\/?$/, '');
return docModule(db);
}
http://git-wip-us.apache.org/repos/asf/couchdb-nano/blob/76004b23/tests/integration/shared/config.js
----------------------------------------------------------------------
diff --git a/tests/integration/shared/config.js b/tests/integration/shared/config.js
index 23089b6..43c1cff 100644
--- a/tests/integration/shared/config.js
+++ b/tests/integration/shared/config.js
@@ -50,6 +50,21 @@ it('should be able to parse urls', function(assert) {
'with escaped auth');
assert.equal(
+ Nano('http://a:b%20c%3F@someurl.com:5984/my%2Fdb').config.url,
+ 'http://a:b%20c%3F@someurl.com:5984',
+ 'with dbname containing encoded slash');
+
+ assert.equal(
+ Nano('http://mydb-a:b%20c%3F@someurl.com:5984/mydb').config.url,
+ 'http://mydb-a:b%20c%3F@someurl.com:5984',
+ 'with repeating dbname');
+
+ assert.equal(
+ Nano('http://a:b%20c%3F@someurl.com:5984/prefix/mydb').config.url,
+ 'http://a:b%20c%3F@someurl.com:5984/prefix',
+ 'with subdir');
+
+ assert.equal(
Nano(baseUrl + ':5984/a').config.url,
baseUrl + ':5984',
'with port');