www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

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 });