serverTest.js (3688B)
1 "use strict"; 2 3 describe("Zotero.Server", function () { 4 Components.utils.import("resource://zotero-unit/httpd.js"); 5 var serverPath; 6 7 before(function* () { 8 Zotero.Prefs.set("httpServer.enabled", true); 9 Zotero.Server.init(); 10 serverPath = 'http://127.0.0.1:' + Zotero.Prefs.get('httpServer.port'); 11 }); 12 13 describe('DataListener', function() { 14 describe("_processEndpoint()", function () { 15 describe("1 argument", function () { 16 it("integer return", function* () { 17 var called = false; 18 19 var endpoint = "/test/" + Zotero.Utilities.randomString(); 20 var handler = function () {}; 21 handler.prototype = { 22 supportedMethods: ["POST"], 23 supportedDataTypes: "*", 24 25 init: function (options) { 26 called = true; 27 assert.isObject(options); 28 assert.propertyVal(options.headers, "Accept-Charset", "UTF-8"); 29 return 204; 30 } 31 }; 32 Zotero.Server.Endpoints[endpoint] = handler; 33 34 let req = yield Zotero.HTTP.request( 35 "POST", 36 serverPath + endpoint, 37 { 38 headers: { 39 "Accept-Charset": "UTF-8", 40 "Content-Type": "application/json" 41 }, 42 responseType: "text", 43 body: JSON.stringify({ 44 foo: "bar" 45 }) 46 } 47 ); 48 49 assert.ok(called); 50 assert.equal(req.status, 204); 51 }); 52 53 it("array return", function* () { 54 var called = false; 55 56 var endpoint = "/test/" + Zotero.Utilities.randomString(); 57 var handler = function () {}; 58 handler.prototype = { 59 supportedMethods: ["GET"], 60 supportedDataTypes: "*", 61 62 init: function (options) { 63 called = true; 64 assert.isObject(options); 65 return [201, "text/plain", "Test"]; 66 } 67 }; 68 Zotero.Server.Endpoints[endpoint] = handler; 69 70 let req = yield Zotero.HTTP.request( 71 "GET", 72 serverPath + endpoint, 73 { 74 responseType: "text" 75 } 76 ); 77 78 assert.ok(called); 79 assert.equal(req.status, 201); 80 assert.equal(req.getResponseHeader("Content-Type"), "text/plain"); 81 assert.equal(req.responseText, "Test"); 82 }); 83 84 it("integer promise return", function* () { 85 var called = false; 86 87 var endpoint = "/test/" + Zotero.Utilities.randomString(); 88 var handler = function () {}; 89 handler.prototype = { 90 supportedMethods: ["GET"], 91 supportedDataTypes: "*", 92 93 init: Zotero.Promise.coroutine(function* (options) { 94 called = true; 95 assert.isObject(options); 96 return 204; 97 }) 98 }; 99 Zotero.Server.Endpoints[endpoint] = handler; 100 101 let req = yield Zotero.HTTP.request( 102 "GET", 103 serverPath + endpoint, 104 { 105 responseType: "text" 106 } 107 ); 108 109 assert.ok(called); 110 assert.equal(req.status, 204); 111 }); 112 113 it("array promise return", function* () { 114 var called = false; 115 116 var endpoint = "/test/" + Zotero.Utilities.randomString(); 117 var handler = function () {}; 118 handler.prototype = { 119 supportedMethods: ["GET"], 120 supportedDataTypes: "*", 121 122 init: Zotero.Promise.coroutine(function* (options) { 123 called = true; 124 assert.isObject(options); 125 return [201, "text/plain", "Test"]; 126 }) 127 }; 128 Zotero.Server.Endpoints[endpoint] = handler; 129 130 let req = yield Zotero.HTTP.request( 131 "GET", 132 serverPath + endpoint, 133 { 134 responseType: "text" 135 } 136 ); 137 138 assert.ok(called); 139 assert.equal(req.status, 201); 140 assert.equal(req.getResponseHeader("Content-Type"), "text/plain"); 141 assert.equal(req.responseText, "Test"); 142 }); 143 }); 144 }); 145 }) 146 });