1 /* Copyright 2015-present Samsung Electronics Co., Ltd. and other contributors
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
16 var assert = require('assert');
17 var http = require('http');
20 var responseCheck = '';
21 var connectionEvent = 0;
22 var serverCloseEvent = 0;
24 var responseEvent = 0;
27 // server will return the received msg from client
29 var server = http.createServer(function (req, res) {
34 req.on('data', function (chunk) {
38 var endHandler = function () {
40 res.writeHead(200, { 'Connection' : 'close',
41 'Content-Length' : body.length
45 if(body == 'close server') {
51 req.on('end', endHandler);
55 server.on('request', function() {
59 server.on('connection', function() {
63 server.on('close', function() {
67 server.listen(3001, 3);
71 // 1. send POST req to server and check response msg
72 // 2. send GET req to server and check response msg
73 // 3. send 'close server' msg
76 var msg = 'http request test msg';
80 headers : {'Content-Length': msg.length}
84 var postResponseHandler = function (res) {
87 assert.equal(200, res.statusCode);
88 var endHandler = function(){
89 assert.equal(msg, res_body);
92 res.on('end', endHandler);
94 res.on('data', function(chunk){
95 res_body += chunk.toString();
99 var req = http.request(options, postResponseHandler);
100 req.on('response', function() {
103 req.on('socket', function() {
116 var getResponseHandler = function (res) {
119 assert.equal(200, res.statusCode);
121 var endHandler = function(){
122 // GET msg, no received body
123 assert.equal('', res_body);
124 responseCheck += '2';
126 res.on('end', endHandler);
128 res.on('data', function(chunk){
129 res_body += chunk.toString();
134 var getReq = http.request(options, getResponseHandler);
135 getReq.on('response', function() {
138 getReq.on('socket', function() {
145 // 3. close server req
146 var finalMsg = 'close server';
150 headers : {'Content-Length': finalMsg.length}
153 var finalResponseHandler = function (res) {
156 assert.equal(200, res.statusCode);
158 var endHandler = function(){
159 assert.equal(finalMsg, res_body);
160 responseCheck += '3';
162 res.on('end', endHandler);
164 res.on('data', function(chunk){
165 res_body += chunk.toString();
169 var finalReq = http.request(finalOptions, finalResponseHandler);
170 finalReq.on('response', function() {
173 finalReq.on('socket', function() {
176 finalReq.write(finalMsg);
179 process.on('exit', function() {
180 assert.equal(responseCheck.length, 3);
181 assert.equal(connectionEvent, 3);
182 assert.equal(serverCloseEvent, 1);
183 assert.equal(requestEvent, 3);
184 assert.equal(responseEvent, 3);
185 assert.equal(socketEvent, 3);