An open API service indexing awesome lists of open source software.

https://github.com/artdecocode/https-context

A Zoroaster test context that sets up an HTTP and self-signed HTTPS servers.
https://github.com/artdecocode/https-context

Last synced: 5 months ago
JSON representation

A Zoroaster test context that sets up an HTTP and self-signed HTTPS servers.

Awesome Lists containing this project

README

          

# https-context

[![npm version](https://badge.fury.io/js/https-context.svg)](https://npmjs.org/package/https-context)

`https-context` is a Zoroaster test context that sets up an HTTP and self-signed HTTPS servers. It can be used in testing packages that make requests. A new server will be installed for each test case, and all connections open to the server will be closed in the destroy method. This ensures that every gets gets a unique http server to be tested against, which is automatically destroyed so that the developers don't need to worry about implementing the tear-down.

```sh
yarn add -DE https-context
```

## Table Of Contents

- [Table Of Contents](#table-of-contents)
- [HTTP API](#http-api)
* [`response(): string|buffer`](#response-stringbuffer)
* [`host(): string`](#host-string)
* [`url(): string`](#url-string)
* [`setResponse(data: string|Buffer)`](#setresponsedata-stringbuffer-void)
* [`setHeaders(headers: Object)`](#setheadersheaders-object-void)
* [`setContentType(contentType: string)`](#setcontenttypecontenttype-string-void)
* [`state(): State`](#state-state)
* [`State` Type](#state-type)
* [called](#called)
* [headers](#headers)
* [postData](#postdata)

## HTTP API

The context can be used by setting it in a `zoroaster` test case:

```javascript
import { ok, deepEqual } from 'zoroaster/assert'
import rqt from 'rqt'
import { HTTPContext } from 'https-context'

/** @type {Object.} */
const T = {
context: HTTPContext,
async 'starts the context'({ url }) {
ok(url)
},
async 'responds to the message'({ url, setResponse, setContentType }) {
const d = { hello: 'world' }
setResponse(JSON.stringify(d))
setContentType('application/json')
const res = await rqt(url)
deepEqual(res, d)
},
async 'sends headers'({ url, state, host }) {
const headers = {
'user-agent': 'node.js',
}
await rqt(url, {
headers,
})
ok(state.called)
deepEqual(state.headers, {
host,
connection: 'close',
...headers,
})
},
}

export default T
```

### `response(): string|buffer`

Returns what the response was set to (default `OK`).

### `host(): string`

The host of the server, e.g., `127.0.0.1:49629`.

### `url(): string`

Returns the server `url`, such as `http://127.0.0.1:49629`.

### `setResponse(`
  `data: string|Buffer,`
`): void`

Sets the response with which the server will end the request. `OK` by default.

### `setHeaders(`
  `headers: Object,`
`): void`

Sets the headers which are sent back to the client.

### `setContentType(`
  `contentType: string,`
`): void`

Sets the content type of the response. If not set, `text/plain` will be used by default.

### `state(): State`

Get the state of the context, according to the [State type](#state-type).

### `State` Type



Property
Type
Description
Example




called
number
The number of times the server was called. Starts with 0.
0, 2, 3


headers
object
Request headers used previously.
{}


postData
string
The data sent with the request via any method other than `POST`.
Hello World

---

(c) [Art Deco Code][1] 2018

[1]: https://artdeco.bz