automock 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/automock/version.rb +1 -1
- data/server/package.json +4 -0
- data/server/src/assets/javascripts/components/file_list.react.js +13 -0
- data/server/src/assets/stylesheets/components/_file_list.scss +8 -0
- data/server/src/assets/stylesheets/components/_select_buttons.scss +1 -1
- data/server/src/proxy_server.js +4 -6
- data/server/test/fixtures/mock/test.json +1 -1
- data/server/test/request/mock_files_test.js +17 -6
- data/server/test/request/proxy_server_test.js +59 -0
- data/server/test/request/selected_files_test.js +0 -2
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 135fcd6b5d6b550ee5517926d3216d2cffde3d48
|
4
|
+
data.tar.gz: c40a97ffe18428bc4f98ccbcb12d228e8b616d4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 101888f9eaafb90feecb6210803c661949902ee9a5f779c420f11713f02f763750dd8f9bd4dd48735de386438524b7dcb62a5c2fa894415e92eb7cb8d727a4ad
|
7
|
+
data.tar.gz: 9b9ea6d44fe6743f9f49aee3fd5cf1901f3d4181065abf559f5c9a565b52b056e44142b88f1697c71701fb546d3fc06e3979398fb8567246946fc530900340ad
|
data/lib/automock/version.rb
CHANGED
data/server/package.json
CHANGED
@@ -1,11 +1,23 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
|
3
3
|
export default class FileList extends React.Component {
|
4
|
+
constructor() {
|
5
|
+
super();
|
6
|
+
this.state = { searchingValue: '' };
|
7
|
+
|
8
|
+
}
|
4
9
|
handleSelect(file) {
|
5
10
|
this.props.onChange(file);
|
6
11
|
}
|
12
|
+
handleChangeIncrementalSearchInput(e) {
|
13
|
+
this.setState({ searchingValue: e.target.value });
|
14
|
+
}
|
7
15
|
render() {
|
8
16
|
const options = this.props.files.map((file) => {
|
17
|
+
const { searchingValue } = this.state;
|
18
|
+
if (searchingValue && file.name.indexOf(searchingValue) < 0) {
|
19
|
+
return;
|
20
|
+
}
|
9
21
|
let className = 'item';
|
10
22
|
if (file === this.props.viewingFile) {
|
11
23
|
className += ' active';
|
@@ -23,6 +35,7 @@ export default class FileList extends React.Component {
|
|
23
35
|
return(
|
24
36
|
<div className="file-list col-xs-5">
|
25
37
|
<h5>{this.props.title}</h5>
|
38
|
+
<input className="incremental-search-input" onChange={this.handleChangeIncrementalSearchInput.bind(this)}/>
|
26
39
|
<div className="file-select-box">
|
27
40
|
{options}
|
28
41
|
</div>
|
@@ -1,6 +1,7 @@
|
|
1
1
|
.selectable-lists {
|
2
2
|
height: 300px;
|
3
3
|
}
|
4
|
+
|
4
5
|
.file-list {
|
5
6
|
margin-bottom: 8px;
|
6
7
|
height: 100%;
|
@@ -10,6 +11,7 @@
|
|
10
11
|
overflow-y: auto;
|
11
12
|
overflow-x: hidden;
|
12
13
|
}
|
14
|
+
|
13
15
|
.item {
|
14
16
|
color: #555;
|
15
17
|
display: block;
|
@@ -22,9 +24,15 @@
|
|
22
24
|
background-color: #f5f5f5;
|
23
25
|
}
|
24
26
|
}
|
27
|
+
|
25
28
|
.item.active {
|
26
29
|
color: #fff;
|
27
30
|
background-color: #337ab7;
|
28
31
|
border-color: #337ab7;
|
29
32
|
}
|
33
|
+
|
34
|
+
.incremental-search-input {
|
35
|
+
width: 100%;
|
36
|
+
margin-bottom: 4px;
|
37
|
+
}
|
30
38
|
}
|
data/server/src/proxy_server.js
CHANGED
@@ -9,20 +9,17 @@ class ProxyServer {
|
|
9
9
|
constructor() {
|
10
10
|
const targetPort = process.env.AUTOMOCK_TARGET_PORT || 3000;
|
11
11
|
const proxyPort = process.env.AUTOMOCK_PROXY_PORT || 8001;
|
12
|
-
this.server = httpProxy.createProxyServer({
|
13
|
-
target:`http://localhost:${targetPort}`
|
14
|
-
}).listen(proxyPort);
|
12
|
+
this.server = httpProxy.createProxyServer({ target:`http://localhost:${targetPort}` }).listen(proxyPort);
|
15
13
|
this.selectedFiles = [];
|
16
14
|
}
|
17
15
|
|
18
16
|
loadSelectedFiles() {
|
19
|
-
SelectedFile.findAll().then((records) => {
|
17
|
+
return SelectedFile.findAll().then((records) => {
|
20
18
|
this.selectedFiles = records;
|
21
19
|
});
|
22
20
|
}
|
23
21
|
|
24
22
|
start() {
|
25
|
-
this.loadSelectedFiles();
|
26
23
|
this.server.on('proxyRes', (_proxyRes, req, res) => {
|
27
24
|
const lookupedSelectedFile = _.find(this.selectedFiles, (selectedFile) =>
|
28
25
|
(selectedFile.uri === req.url) && (selectedFile.method === req.method)
|
@@ -34,7 +31,7 @@ class ProxyServer {
|
|
34
31
|
bufs.push(body);
|
35
32
|
};
|
36
33
|
res.end = () => {
|
37
|
-
fs.readFile(`${process.env.AUTOMOCK_DATA_PATH}/${lookupedSelectedFile.name}`, 'utf8',
|
34
|
+
fs.readFile(`${process.env.AUTOMOCK_DATA_PATH}/${lookupedSelectedFile.name}`, 'utf8', (_err, text) => {
|
38
35
|
const mockData = JSON.parse(text);
|
39
36
|
writeHead.call(res, mockData.status, mockData.response_header);
|
40
37
|
write.call(res, mockData.response_body);
|
@@ -44,6 +41,7 @@ class ProxyServer {
|
|
44
41
|
};
|
45
42
|
}
|
46
43
|
});
|
44
|
+
return this.loadSelectedFiles();
|
47
45
|
}
|
48
46
|
}
|
49
47
|
|
@@ -1 +1 @@
|
|
1
|
-
{"description":"
|
1
|
+
{"description":"This is test API","method":"GET","uri":"/test.json","status":200,"response_header":{"X-Frame-Options":"SAMEORIGIN","X-XSS-Protection":"1; mode=block","X-Content-Type-Options":"nosniff","Content-Type":"application/json; charset=utf-8","ETag":"W/\"e224cce5657514dd4f022471dc9261c6\"","Cache-Control":"max-age=0, private, must-revalidate","X-Request-Id":"fbdd7722-e642-4a49-8837-f3c14cc72a4e","X-Runtime":"0.009382","Content-Length":"42"},"response_body":"{\"users\":[{\"user\":{\"name\":\"dummy user\"}}]}"}
|
@@ -13,12 +13,23 @@ describe('GET /mock_files', function () {
|
|
13
13
|
get('/mock_files').
|
14
14
|
expect(200, [
|
15
15
|
{
|
16
|
-
description:
|
17
|
-
method:
|
18
|
-
name:
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
"description": "This is test API",
|
17
|
+
"method": "GET",
|
18
|
+
"name": "test.json",
|
19
|
+
"response_body": "{\"users\":[{\"user\":{\"name\":\"dummy user\"}}]}",
|
20
|
+
"response_header": {
|
21
|
+
"Cache-Control": "max-age=0, private, must-revalidate",
|
22
|
+
"Content-Length": "42",
|
23
|
+
"Content-Type": "application/json; charset=utf-8",
|
24
|
+
"ETag": "W/\"e224cce5657514dd4f022471dc9261c6\"",
|
25
|
+
"X-Content-Type-Options": "nosniff",
|
26
|
+
"X-Frame-Options": "SAMEORIGIN",
|
27
|
+
"X-Request-Id": "fbdd7722-e642-4a49-8837-f3c14cc72a4e",
|
28
|
+
"X-Runtime": "0.009382",
|
29
|
+
"X-XSS-Protection": "1; mode=block"
|
30
|
+
},
|
31
|
+
"status": 200,
|
32
|
+
"uri": "/test.json"
|
22
33
|
},
|
23
34
|
{
|
24
35
|
description: 'description',
|
@@ -0,0 +1,59 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
require('./common_hooks');
|
4
|
+
const request = require('superagent');
|
5
|
+
const assert = require('power-assert');
|
6
|
+
|
7
|
+
const http = require('http');
|
8
|
+
const ProxyServer = require('../../src/proxy_server');
|
9
|
+
const SelectedFile = require('../../dist/models/selected_file');
|
10
|
+
const fs = require('fs');
|
11
|
+
|
12
|
+
let targetServer;
|
13
|
+
let proxy;
|
14
|
+
describe('ProxyServer', () => {
|
15
|
+
before(() => {
|
16
|
+
process.env.AUTOMOCK_PROXY_PORT = 9999;
|
17
|
+
process.env.AUTOMOCK_TARGET_PORT = 9998;
|
18
|
+
targetServer = http.createServer((_req, res) => {
|
19
|
+
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
20
|
+
res.end('Hello World');
|
21
|
+
});
|
22
|
+
targetServer.listen(process.env.AUTOMOCK_TARGET_PORT, '127.0.0.1');
|
23
|
+
proxy = new ProxyServer();
|
24
|
+
});
|
25
|
+
after(() => {
|
26
|
+
targetServer.close();
|
27
|
+
});
|
28
|
+
|
29
|
+
context('has generated mock_data', () => {
|
30
|
+
beforeEach((done) => {
|
31
|
+
SelectedFile.create({ name: 'test.json', uri: '/test.json', method: 'GET' }).then(() => {
|
32
|
+
proxy.start().then(done);
|
33
|
+
});
|
34
|
+
});
|
35
|
+
it('receives mocked response data.', (done) => {
|
36
|
+
request.get('http://127.0.0.1:9999/test.json').
|
37
|
+
end((_err, res) => {
|
38
|
+
fs.readFile(`${process.env.AUTOMOCK_DATA_PATH}/test.json`, 'utf8', (__err, text) => {
|
39
|
+
const expected = JSON.parse(text);
|
40
|
+
assert.equal(res.text, expected.response_body);
|
41
|
+
assert.equal(res.header['Content-Length'], expected.response_header['content-length']);
|
42
|
+
done();
|
43
|
+
});
|
44
|
+
});
|
45
|
+
});
|
46
|
+
});
|
47
|
+
context("doesn't have generated mock_data", () => {
|
48
|
+
beforeEach((done) => {
|
49
|
+
proxy.start().then(done);
|
50
|
+
});
|
51
|
+
it('passes through response.', (done) => {
|
52
|
+
request.get('http://127.0.0.1:9999/test.json').
|
53
|
+
end((_err, res) => {
|
54
|
+
assert.equal(res.text, 'Hello World');
|
55
|
+
done();
|
56
|
+
});
|
57
|
+
});
|
58
|
+
});
|
59
|
+
});
|
@@ -11,7 +11,6 @@ describe('GET /selected_files', function () {
|
|
11
11
|
beforeEach(function () {
|
12
12
|
server = require('./../../dist/index');
|
13
13
|
SelectedFile.create({ name: 'test.json' });
|
14
|
-
console.log('create?');
|
15
14
|
});
|
16
15
|
it('get selectedFiles and receives 200', function testSlash(done) {
|
17
16
|
request(server).
|
@@ -36,7 +35,6 @@ describe('GET /selected_files', function () {
|
|
36
35
|
get('/selected_files').
|
37
36
|
expect(200).
|
38
37
|
end((_err, response) => {
|
39
|
-
console.log(response.body);
|
40
38
|
assert(response.body.length === 0);
|
41
39
|
done();
|
42
40
|
});
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: automock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- joe-re
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -155,6 +155,7 @@ files:
|
|
155
155
|
- server/test/fixtures/mock/test.json
|
156
156
|
- server/test/request/common_hooks.js
|
157
157
|
- server/test/request/mock_files_test.js
|
158
|
+
- server/test/request/proxy_server_test.js
|
158
159
|
- server/test/request/selected_files_test.js
|
159
160
|
homepage: https://github.com/joe-re/automock
|
160
161
|
licenses:
|
@@ -176,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
177
|
version: '0'
|
177
178
|
requirements: []
|
178
179
|
rubyforge_project:
|
179
|
-
rubygems_version: 2.
|
180
|
+
rubygems_version: 2.4.5.1
|
180
181
|
signing_key:
|
181
182
|
specification_version: 4
|
182
183
|
summary: Auto-generate mock_data of JSON API response from your request-specs.
|