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 2018/10/03 18:50:46 UTC

[couchdb-fauxton] branch master updated: Fix - Error is shown when enabling CORS (#1131)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5c57d3d  Fix - Error is shown when enabling CORS  (#1131)
5c57d3d is described below

commit 5c57d3dbfbb8656c8cb70266d072552ee7b6f19c
Author: Antonio Maranhao <30...@users.noreply.github.com>
AuthorDate: Wed Oct 3 14:50:41 2018 -0400

    Fix - Error is shown when enabling CORS  (#1131)
    
    * Fix PUT request for empty strings
    
    * Add tests
---
 app/core/__tests__/ajax.test.js | 70 +++++++++++++++++++++++++++++++++++++++++
 app/core/ajax.js                |  4 +--
 2 files changed, 72 insertions(+), 2 deletions(-)

diff --git a/app/core/__tests__/ajax.test.js b/app/core/__tests__/ajax.test.js
index 5ffc82e..c16aa2e 100644
--- a/app/core/__tests__/ajax.test.js
+++ b/app/core/__tests__/ajax.test.js
@@ -140,4 +140,74 @@ describe('Fauxton Ajax', () => {
         assert.ok(resp.ok);
       });
   });
+
+  describe('POST with falsy values as the body', () => {
+    const successResponse = {
+      status: 200,
+      body: {
+        ok: true
+      }
+    };
+    it('accepts empty string', () => {
+      fetchMock.postOnce('/testing', successResponse);
+      return post('/testing', '')
+        .then(resp =>{
+          assert.ok(resp.ok);
+          assert.ok(fetchMock.lastOptions().body === '""');
+        });
+    });
+
+    it('accepts zero', () => {
+      fetchMock.postOnce('/testing', successResponse);
+      return post('/testing', 0)
+        .then(resp =>{
+          assert.ok(resp.ok);
+          assert.ok(fetchMock.lastOptions().body === '0');
+        });
+    });
+
+    it('accepts false', () => {
+      fetchMock.postOnce('/testing', successResponse);
+      return post('/testing', false)
+        .then(resp =>{
+          assert.ok(resp.ok);
+          assert.ok(fetchMock.lastOptions().body === 'false');
+        });
+    });
+  });
+
+  describe('PUT with falsy values as the body', () => {
+    const successResponse = {
+      status: 200,
+      body: {
+        ok: true
+      }
+    };
+    it('accepts empty string', () => {
+      fetchMock.putOnce('/testing', successResponse);
+      return put('/testing', '')
+        .then(resp =>{
+          assert.ok(resp.ok);
+          assert.ok(fetchMock.lastOptions().body === '""');
+        });
+    });
+
+    it('accepts zero', () => {
+      fetchMock.putOnce('/testing', successResponse);
+      return put('/testing', 0)
+        .then(resp =>{
+          assert.ok(resp.ok);
+          assert.ok(fetchMock.lastOptions().body === '0');
+        });
+    });
+
+    it('accepts false', () => {
+      fetchMock.putOnce('/testing', successResponse);
+      return put('/testing', false)
+        .then(resp =>{
+          assert.ok(resp.ok);
+          assert.ok(fetchMock.lastOptions().body === 'false');
+        });
+    });
+  });
 });
diff --git a/app/core/ajax.js b/app/core/ajax.js
index 07fd094..305d8dc 100644
--- a/app/core/ajax.js
+++ b/app/core/ajax.js
@@ -81,7 +81,7 @@ export const deleteRequest = (url, opts = {}) => {
  * @return {Promise} A promise with the request's response
  */
 export const post = (url, body, opts = {}) => {
-  if (body) {
+  if (typeof body !== 'undefined') {
     if (opts.rawBody)
       opts.body = body;
     else
@@ -101,7 +101,7 @@ export const post = (url, body, opts = {}) => {
  * @return {Promise} A promise with the request's response
  */
 export const put = (url, body, opts = {}) => {
-  if (body) {
+  if (typeof body !== 'undefined') {
     if (opts.rawBody)
       opts.body = body;
     else