You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					92 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					92 lines
				
				2.0 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-prototype-builtins */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const http = require('http')
							 | 
						||
| 
								 | 
							
								const test = require('tap').test
							 | 
						||
| 
								 | 
							
								const serializers = require('../lib/res')
							 | 
						||
| 
								 | 
							
								const wrapResponseSerializer = require('../').wrapResponseSerializer
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('res.raw is not enumerable', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const server = http.createServer(handler)
							 | 
						||
| 
								 | 
							
								  server.unref()
							 | 
						||
| 
								 | 
							
								  server.listen(0, () => {
							 | 
						||
| 
								 | 
							
								    http.get(server.address(), () => {})
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.tearDown(() => server.close())
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function handler (req, res) {
							 | 
						||
| 
								 | 
							
								    const serialized = serializers.resSerializer(res)
							 | 
						||
| 
								 | 
							
								    t.is(serialized.propertyIsEnumerable('raw'), false)
							 | 
						||
| 
								 | 
							
								    res.end()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('res.raw is available', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const server = http.createServer(handler)
							 | 
						||
| 
								 | 
							
								  server.unref()
							 | 
						||
| 
								 | 
							
								  server.listen(0, () => {
							 | 
						||
| 
								 | 
							
								    http.get(server.address(), () => {})
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.tearDown(() => server.close())
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function handler (req, res) {
							 | 
						||
| 
								 | 
							
								    res.statusCode = 200
							 | 
						||
| 
								 | 
							
								    const serialized = serializers.resSerializer(res)
							 | 
						||
| 
								 | 
							
								    t.ok(serialized.raw)
							 | 
						||
| 
								 | 
							
								    t.is(serialized.raw.statusCode, 200)
							 | 
						||
| 
								 | 
							
								    res.end()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('can wrap response serializers', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const server = http.createServer(handler)
							 | 
						||
| 
								 | 
							
								  server.unref()
							 | 
						||
| 
								 | 
							
								  server.listen(0, () => {
							 | 
						||
| 
								 | 
							
								    http.get(server.address(), () => {})
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.tearDown(() => server.close())
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const serializer = wrapResponseSerializer(function (res) {
							 | 
						||
| 
								 | 
							
								    t.ok(res.statusCode)
							 | 
						||
| 
								 | 
							
								    t.is(res.statusCode, 200)
							 | 
						||
| 
								 | 
							
								    delete res.statusCode
							 | 
						||
| 
								 | 
							
								    return res
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function handler (req, res) {
							 | 
						||
| 
								 | 
							
								    res.statusCode = 200
							 | 
						||
| 
								 | 
							
								    const serialized = serializer(res)
							 | 
						||
| 
								 | 
							
								    t.notOk(serialized.statusCode)
							 | 
						||
| 
								 | 
							
								    res.end()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('res.headers is serialized', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const server = http.createServer(handler)
							 | 
						||
| 
								 | 
							
								  server.unref()
							 | 
						||
| 
								 | 
							
								  server.listen(0, () => {
							 | 
						||
| 
								 | 
							
								    http.get(server.address(), () => {})
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.tearDown(() => server.close())
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function handler (req, res) {
							 | 
						||
| 
								 | 
							
								    res.setHeader('x-custom', 'y')
							 | 
						||
| 
								 | 
							
								    const serialized = serializers.resSerializer(res)
							 | 
						||
| 
								 | 
							
								    t.is(serialized.headers['x-custom'], 'y')
							 | 
						||
| 
								 | 
							
								    res.end()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})
							 |