You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by da...@apache.org on 2015/12/04 13:09:41 UTC

[2/2] cordova-plugin-file-transfer git commit: CB-9840 Fallback file-transfer uploadResponse encoding to latin1 in case not encoded with UTF-8 on iOS

CB-9840 Fallback file-transfer uploadResponse encoding to latin1 in case not encoded with UTF-8 on iOS

Adds correspoding tests for download and upload response

Github: close #71


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file-transfer/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file-transfer/commit/866349eb
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file-transfer/tree/866349eb
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file-transfer/diff/866349eb

Branch: refs/heads/master
Commit: 866349eb849e6260755d587066850c783d6bdb05
Parents: e14b7e5
Author: daserge <v-...@microsoft.com>
Authored: Fri Dec 4 15:03:37 2015 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Fri Dec 4 15:04:40 2015 +0300

----------------------------------------------------------------------
 tests/tests.js | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-file-transfer/blob/866349eb/tests/tests.js
----------------------------------------------------------------------
diff --git a/tests/tests.js b/tests/tests.js
index 83c5723..05a745b 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -38,6 +38,7 @@ exports.defineAutoTests = function () {
     var WINDOWS_UNKNOWN_HOST_TIMEOUT = 35 * ONE_SECOND;
     var UPLOAD_TIMEOUT = 7 * ONE_SECOND;
     var ABORT_DELAY = 100; // for abort() tests
+    var LATIN1_SYMBOLS = '¥§©ÆÖÑøøø¼';
 
     // config for upload test server
     // NOTE:
@@ -50,6 +51,7 @@ exports.defineAutoTests = function () {
     var isWP8 = cordova.platformId === "windowsphone";
     var isBrowser = cordova.platformId === "browser";
     var isIE = isBrowser && navigator.userAgent.indexOf("Trident") >= 0;
+    var isIos = cordova.platformId === "ios";
 
     // tests
     describe("FileTransferError", function () {
@@ -733,6 +735,48 @@ exports.defineAutoTests = function () {
                         });
                     }, unexpectedCallbacks.httpFail);
                 }, DOWNLOAD_TIMEOUT);
+
+                it("filetransfer.spec.36 should handle non-UTF8 encoded download response", function (done) {
+
+                    // Only iOS is supported: https://issues.apache.org/jira/browse/CB-9840
+                    if (!isIos) {
+                        pending();
+                    }
+
+                    var fileURL = SERVER + '/download_non_utf';
+
+                    var fileWin = function (blob) {
+
+                        if (transfer.onprogress.calls.any()) {
+                            var lastProgressEvent = transfer.onprogress.calls.mostRecent().args[0];
+                            expect(lastProgressEvent.loaded).not.toBeGreaterThan(blob.size);
+                        } else {
+                            console.log("no progress events were emitted");
+                        }
+
+                        expect(blob.size).toBeGreaterThan(0);
+
+                        var reader = new FileReader();
+
+                        reader.onerror = unexpectedCallbacks.fileOperationFail;
+                        reader.onloadend  = function () {
+                            expect(reader.result.indexOf(LATIN1_SYMBOLS)).not.toBe(-1);
+                            done();
+                        };
+
+                        reader.readAsBinaryString(blob);
+                    };
+
+                    var downloadWin = function (entry) {
+
+                        verifyDownload(entry);
+
+                        // verify the FileEntry representing this file
+                        entry.file(fileWin, unexpectedCallbacks.fileSystemFail);
+                    };
+
+                    transfer.download(fileURL, localFilePath, downloadWin, unexpectedCallbacks.httpFail);
+                }, UPLOAD_TIMEOUT);
             });
 
             describe("upload", function() {
@@ -1071,6 +1115,39 @@ exports.defineAutoTests = function () {
 
                     writeFile(root, fileName, new Array(100000).join("aborttest!"), fileWin);
                 }, UPLOAD_TIMEOUT);
+
+                it("filetransfer.spec.37 should handle non-UTF8 encoded upload response", function (done) {
+
+                    // Only iOS is supported: https://issues.apache.org/jira/browse/CB-9840
+                    if (!isIos) {
+                        pending();
+                    }
+
+                    var fileURL = SERVER + '/upload_non_utf';
+
+                    var uploadWin = function (uploadResult) {
+
+                        verifyUpload(uploadResult);
+
+                        var obj = null;
+                        try {
+                            obj = JSON.parse(uploadResult.response);
+                            expect(obj.latin1Symbols).toBe(LATIN1_SYMBOLS);
+                        } catch (e) {
+                            expect(obj).not.toBeNull("returned data from server should be valid json");
+                        }
+
+                        if (cordova.platformId === 'ios') {
+                            expect(uploadResult.headers).toBeDefined('Expected headers to be defined.');
+                            expect(uploadResult.headers['Content-Type']).toBeDefined('Expected content-type header to be defined.');
+                        }
+
+                        done();
+                    };
+
+                    // NOTE: removing uploadOptions cause Android to timeout
+                    transfer.upload(localFilePath, fileURL, uploadWin, unexpectedCallbacks.httpFail, uploadOptions);
+                }, UPLOAD_TIMEOUT);
             });
         });
     });


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org