You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2017/02/06 13:05:52 UTC
fauxton commit: updated refs/heads/master to a88bad9
Repository: couchdb-fauxton
Updated Branches:
refs/heads/master b7d7b4af9 -> a88bad950
fix encoding in views
Project: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/commit/a88bad95
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/tree/a88bad95
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/diff/a88bad95
Branch: refs/heads/master
Commit: a88bad950c325a8d0a5b06470e0b26b050d11d8a
Parents: b7d7b4a
Author: Garren Smith <ga...@gmail.com>
Authored: Thu Feb 2 15:40:16 2017 +0200
Committer: Garren Smith <ga...@gmail.com>
Committed: Mon Feb 6 15:05:22 2017 +0200
----------------------------------------------------------------------
app/addons/documents/index-editor/actions.js | 2 +-
.../documents/mango/mango.components.react.jsx | 2 +-
app/addons/documents/sidebar/sidebar.react.jsx | 10 +--
.../tests/nightwatch/encodingSupport.js | 89 ++++++++++++++++++++
devserver.js | 2 +-
5 files changed, 97 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/a88bad95/app/addons/documents/index-editor/actions.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/index-editor/actions.js b/app/addons/documents/index-editor/actions.js
index 88f4789..4ec146f 100644
--- a/app/addons/documents/index-editor/actions.js
+++ b/app/addons/documents/index-editor/actions.js
@@ -170,7 +170,7 @@ function cloneView (params) {
}
function gotoEditViewPage (databaseName, designDocName, indexName) {
- FauxtonAPI.navigate('#' + FauxtonAPI.urls('view', 'edit', databaseName, designDocName, indexName));
+ FauxtonAPI.navigate('#' + FauxtonAPI.urls('view', 'edit', encodeURIComponent(databaseName), designDocName, indexName));
}
function updateMapCode (code) {
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/a88bad95/app/addons/documents/mango/mango.components.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/mango/mango.components.react.jsx b/app/addons/documents/mango/mango.components.react.jsx
index dab725f..76b26b4 100644
--- a/app/addons/documents/mango/mango.components.react.jsx
+++ b/app/addons/documents/mango/mango.components.react.jsx
@@ -178,7 +178,7 @@ var MangoEditor = React.createClass({
return (
<PaddedBorderedBox>
<strong>Your available Indexes:</strong>
- <a className="edit-link" href={'#' + FauxtonAPI.urls('mango', 'index-app', this.props.dbName)}>edit</a>
+ <a className="edit-link" href={'#' + FauxtonAPI.urls('mango', 'index-app', encodeURIComponent(this.props.dbName))}>edit</a>
<pre
className="mango-available-indexes">
{this.getIndexes('index', this.props.availableIndexes)}
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/a88bad95/app/addons/documents/sidebar/sidebar.react.jsx
----------------------------------------------------------------------
diff --git a/app/addons/documents/sidebar/sidebar.react.jsx b/app/addons/documents/sidebar/sidebar.react.jsx
index b791fa2..10b561b 100644
--- a/app/addons/documents/sidebar/sidebar.react.jsx
+++ b/app/addons/documents/sidebar/sidebar.react.jsx
@@ -45,7 +45,7 @@ var MainSidebar = React.createClass({
},
buildDocLinks: function () {
- var base = FauxtonAPI.urls('base', 'app', this.props.databaseName);
+ const base = FauxtonAPI.urls('base', 'app', this.props.databaseName);
return FauxtonAPI.getExtensions('docLinks').map(function (link) {
return (
<li key={link.url} className={this.getNavItemClass(link.url)}>
@@ -148,7 +148,7 @@ var IndexSection = React.createClass({
var sortedItems = this.props.items.sort();
return _.map(sortedItems, function (indexName, index) {
- var href = FauxtonAPI.urls(this.props.urlNamespace, 'app', this.props.database.id, this.props.designDocName);
+ var href = FauxtonAPI.urls(this.props.urlNamespace, 'app', encodeURIComponent(this.props.database.id), this.props.designDocName);
var className = (this.props.selectedIndex === indexName) ? 'active' : '';
return (
@@ -324,7 +324,7 @@ var DesignDoc = React.createClass({
},
getNewButtonLinks: function () {
- var newUrlPrefix = FauxtonAPI.urls('databaseBaseURL', 'app', this.props.database.id);
+ var newUrlPrefix = FauxtonAPI.urls('databaseBaseURL', 'app', encodeURIComponent(this.props.database.id));
var designDocName = this.props.designDocName;
var addNewLinks = _.reduce(FauxtonAPI.getExtensions('sidebar:links'), function (menuLinks, link) {
@@ -336,7 +336,7 @@ var DesignDoc = React.createClass({
return menuLinks;
}, [{
title: 'New View',
- url: '#' + FauxtonAPI.urls('new', 'addView', this.props.database.id, designDocName),
+ url: '#' + FauxtonAPI.urls('new', 'addView', encodeURIComponent(this.props.database.id), designDocName),
icon: 'fonticon-plus-circled'
}]);
@@ -356,7 +356,7 @@ var DesignDoc = React.createClass({
toggleBodyClassNames += ' in';
}
var designDocName = this.props.designDocName;
- var designDocMetaUrl = FauxtonAPI.urls('designDocs', 'app', this.props.database.id, designDocName);
+ var designDocMetaUrl = FauxtonAPI.urls('designDocs', 'app', encodeURIComponent(this.props.database.id), designDocName);
var metadataRowClass = (this.props.selectedNavInfo.designDocSection === 'metadata') ? 'active' : '';
return (
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/a88bad95/app/addons/documents/tests/nightwatch/encodingSupport.js
----------------------------------------------------------------------
diff --git a/app/addons/documents/tests/nightwatch/encodingSupport.js b/app/addons/documents/tests/nightwatch/encodingSupport.js
new file mode 100644
index 0000000..8d92b43
--- /dev/null
+++ b/app/addons/documents/tests/nightwatch/encodingSupport.js
@@ -0,0 +1,89 @@
+// 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.
+
+
+
+module.exports = {
+ 'mango supports encoding': function (client) {
+ var waitTime = client.globals.maxWaitTime,
+ newDatabaseName = 'encoded/db',
+ baseUrl = client.globals.test_settings.launch_url;
+
+ client
+ .deleteDatabase(newDatabaseName)
+ .createDatabase(newDatabaseName)
+ .populateDatabase(newDatabaseName)
+ .loginToGUI()
+ .url(baseUrl + '/#/database/' + encodeURIComponent(newDatabaseName) + '/_all_docs')
+ .waitForElementPresent('.bulk-action-component-panel', waitTime, true)
+ .clickWhenVisible('#mango-query', waitTime, true)
+ .waitForElementPresent('.mango-editor-wrapper', waitTime, true)
+ .end();
+ },
+
+ 'permissions supports encoding': function (client) {
+ var waitTime = client.globals.maxWaitTime,
+ newDatabaseName = 'encoded/db',
+ baseUrl = client.globals.test_settings.launch_url;
+
+ client
+ .deleteDatabase(newDatabaseName)
+ .createDatabase(newDatabaseName)
+ .populateDatabase(newDatabaseName)
+ .loginToGUI()
+ .url(baseUrl + '/#/database/' + encodeURIComponent(newDatabaseName) + '/_all_docs')
+ .waitForElementPresent('.bulk-action-component-panel', waitTime, true)
+ .clickWhenVisible('#permissions', waitTime, true)
+ .waitForElementPresent('.permissions-page', waitTime, true)
+ .end();
+ },
+
+ 'changes supports encoding': function (client) {
+ var waitTime = client.globals.maxWaitTime,
+ newDatabaseName = 'encoded/db',
+ baseUrl = client.globals.test_settings.launch_url;
+
+ client
+ .deleteDatabase(newDatabaseName)
+ .createDatabase(newDatabaseName)
+ .populateDatabase(newDatabaseName)
+ .loginToGUI()
+ .url(baseUrl + '/#/database/' + encodeURIComponent(newDatabaseName) + '/_all_docs')
+ .waitForElementPresent('.bulk-action-component-panel', waitTime, true)
+ .clickWhenVisible('#changes', waitTime, true)
+ .waitForElementPresent('.changes-header', waitTime, true)
+ .end();
+ },
+ 'views support encoding': function (client) {
+ var waitTime = client.globals.maxWaitTime,
+ newDatabaseName = 'encoded/db',
+ baseUrl = client.globals.test_settings.launch_url;
+
+ client
+ .deleteDatabase(newDatabaseName)
+ .createDatabase(newDatabaseName)
+ .populateDatabase(newDatabaseName)
+ .loginToGUI()
+ .url(baseUrl + '/#/database/' + encodeURIComponent(newDatabaseName) + '/_all_docs')
+ .waitForElementPresent('.bulk-action-component-panel', waitTime, true)
+ .clickWhenVisible('#nav-header-testdesigndoc', waitTime, true)
+ .clickWhenVisible('a[href="#/database/encoded%2Fdb/_design/testdesigndoc/_info"]', waitTime, true)
+ .waitForElementPresent('.metadata-page', waitTime, true)
+ .clickWhenVisible('#nav-design-function-testdesigndocviews', waitTime, true)
+ .clickWhenVisible('#testdesigndoc_stubview', waitTime, true)
+ .waitForElementPresent('#doc-list', waitTime, true)
+ .clickWhenVisible('.active .index-menu-toggle', waitTime, true)
+ .clickWhenVisible('.fonticon-file-code-o')
+ .waitForElementPresent('.view-query-save', waitTime, true)
+ .end();
+ }
+};
http://git-wip-us.apache.org/repos/asf/couchdb-fauxton/blob/a88bad95/devserver.js
----------------------------------------------------------------------
diff --git a/devserver.js b/devserver.js
index 4e2f881..9be142a 100644
--- a/devserver.js
+++ b/devserver.js
@@ -49,7 +49,7 @@ var devSetup = function (cb) {
});
};
-const defaultHeaderValue = "default-src 'self'; img-src 'self' data:; font-src 'self'; " +
+const defaultHeaderValue = "default-src 'self'; child-src 'self' blob:; img-src 'self' data:; font-src 'self'; " +
"script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline';";
function getCspHeaders () {
if (!settings.contentSecurityPolicy) {