https://github.com/zetlen/creosote
⛔️ NOT WORKING a cycle.js driver for an express http server
https://github.com/zetlen/creosote
Last synced: about 2 months ago
JSON representation
⛔️ NOT WORKING a cycle.js driver for an express http server
- Host: GitHub
- URL: https://github.com/zetlen/creosote
- Owner: zetlen
- Created: 2015-12-29T21:49:47.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-01-04T13:33:11.000Z (over 10 years ago)
- Last Synced: 2026-04-30T06:39:45.441Z (about 2 months ago)
- Language: JavaScript
- Homepage:
- Size: 6.84 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## creosote is a [Reactive](http://reactivex.org) interface for an [express](http://expressjs.com) server
#### i hope, probably in vain, that this test is good enough documentation for now
```js
'use strict';
const Creosote = require('creosote');
const fetch = require('node-fetch');
const test = require('tape');
test('parses JSON from a post body', (t) => {
t.plan(1);
let creosote = Creosote({ port: process.env.PORT, expect: 'json' });
creosote.posts('/repos/:name/:tag')
.do(o => o.res.status(200).end())
.reduce(
(acc, c) => {
let name = c.params.name;
let tag = c.params.tag;
let out = Object.assign({}, acc);
out[name] = Object.assign({}, out[name]);
out[name][tag] = c.req.body;
return out;
},
{}
).subscribe((statuses) => {
t.same(
statuses,
{
sam: {
'1.0.0': {
buildStatus: 'failed'
}
},
diane: {
'1.2.1': {
buildStatus: 'succeeded'
}
}
},
'json was parsed'
);
});
fetch(`http://localhost:${port}/repos/sam/1.0.0`, {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
buildStatus: 'failed'
})
})
.then(() => fetch(`http://localhost:${port}/repos/diane/1.2.1`, {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
buildStatus: 'succeeded'
})
}))
.then(() => creosote.unmount())
.catch(t.fail);
});
test('parses form data from a post body', (t) => {
t.plan(1);
let creosote = Creosote({ port: process.env.PORT, expect: 'urlencoded' });
creosote.posts('/repos/:name/:tag')
.do(o => o.res.status(200).end())
.reduce(
(acc, c) => {
let name = c.params.name;
let tag = c.params.tag;
let out = Object.assign({}, acc);
out[name] = Object.assign({}, out[name]);
out[name][tag] = c.req.body;
return out;
},
{}
).subscribe((statuses) => {
t.same(
statuses,
{
sam: {
'1.0.0': {
buildStatus: 'red',
commit: '12345'
},
'1.2.1': {
buildStatus: 'green',
commit: '67890'
}
}
},
'form data was parsed'
);
});
fetch(`http://localhost:${port}/repos/sam/1.0.0`, {
method: 'post',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: 'buildStatus=red&commit=12345'
})
.then(() => fetch(`http://localhost:${port}/repos/sam/1.2.1`, {
method: 'post',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: 'buildStatus=green&commit=67890'
}))
.then(() => creosote.unmount())
.catch(t.fail);
});
```