test_errorhandler_exception.js
Go to the documentation of this file.
1 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:set ts=2 sw=2 sts=2 et: */
3 /* ***** BEGIN LICENSE BLOCK *****
4  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5  *
6  * The contents of this file are subject to the Mozilla Public License Version
7  * 1.1 (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  * http://www.mozilla.org/MPL/
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  *
16  * The Original Code is httpd.js code.
17  *
18  * The Initial Developer of the Original Code is
19  * Jeff Walden <jwalden+code@mit.edu>.
20  * Portions created by the Initial Developer are Copyright (C) 2006
21  * the Initial Developer. All Rights Reserved.
22  *
23  * Contributor(s):
24  *
25  * Alternatively, the contents of this file may be used under the terms of
26  * either the GNU General Public License Version 2 or later (the "GPL"), or
27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28  * in which case the provisions of the GPL or the LGPL are applicable instead
29  * of those above. If you wish to allow use of your version of this file only
30  * under the terms of either the GPL or the LGPL, and not to allow others to
31  * use your version of this file under the terms of the MPL, indicate your
32  * decision by deleting the provisions above and replace them with the notice
33  * and other provisions required by the GPL or the LGPL. If you do not delete
34  * the provisions above, a recipient may use your version of this file under
35  * the terms of any one of the MPL, the GPL or the LGPL.
36  *
37  * ***** END LICENSE BLOCK ***** */
38 
39 // Request handlers may throw exceptions, and those exception should be caught
40 // by the server and converted into the proper error codes.
41 
42 var tests =
43  [
44  new Test("http://localhost:4444/throws/exception",
46  new Test("http://localhost:4444/this/file/does/not/exist/and/404s",
48  new Test("http://localhost:4444/attempts/404/fails/so/400/fails/so/500s",
50  ];
51 
52 var srv;
53 
54 function run_test()
55 {
56  srv = createServer();
57 
58  srv.registerErrorHandler(404, throwsException);
59  srv.registerPathHandler("/throws/exception", throwsException);
60 
61  srv.start(4444);
62 
64 }
65 
66 
67 // TEST DATA
68 
69 function checkStatusLine(channel, httpMaxVer, httpMinVer, httpCode, statusText)
70 {
71  do_check_eq(channel.responseStatus, httpCode);
72  do_check_eq(channel.responseStatusText, statusText);
73 
74  var respMaj = {}, respMin = {};
75  channel.getResponseVersion(respMaj, respMin);
76  do_check_eq(respMaj.value, httpMaxVer);
77  do_check_eq(respMin.value, httpMinVer);
78 }
79 
80 function start_throws_exception(ch, cx)
81 {
82  checkStatusLine(ch, 1, 1, 500, "Internal Server Error");
83 }
84 
86 {
87  checkStatusLine(ch, 1, 1, 400, "Bad Request");
88 }
89 
91 {
92  checkStatusLine(ch, 1, 1, 500, "Internal Server Error");
93 }
94 
95 function succeeded(ch, cx, status, data)
96 {
97  do_check_true(Components.isSuccessCode(status));
98 }
99 
100 function register400Handler(ch)
101 {
102  srv.registerErrorHandler(400, throwsException);
103 }
104 
105 
106 // PATH HANDLERS
107 
108 // /throws/exception (and also a 404 and 400 error handler)
109 function throwsException(metadata, response)
110 {
111  throw "this shouldn't cause an exit...";
112  do_throw("Not reached!");
113 }
function run_test()
do_check_eq(typeof PlacesUtils,"object")
function start_nonexistent_404_fails_so_400(ch, cx)
function succeeded(ch, cx, status, data)
function runHttpTests(testArray, done)
Definition: head_utils.js:340
function start_multiple_exceptions_500(ch, cx)
function register400Handler(ch)
function createServer()
Definition: head_utils.js:53
function throwsException(metadata, response)
return null
Definition: FeedWriter.js:1143
function testComplete(srv)
Definition: head_utils.js:292
function Test(path, initChannel, onStartRequest, onStopRequest)
Definition: head_utils.js:322
observe data
Definition: FeedWriter.js:1329
function start_throws_exception(ch, cx)
function checkStatusLine(channel, httpMaxVer, httpMinVer, httpCode, statusText)