grpc_mock 0.2.1 → 0.4.1
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 +5 -5
- data/.travis.yml +1 -0
- data/README.md +42 -8
- data/grpc_mock.gemspec +3 -3
- data/lib/grpc_mock/errors.rb +1 -1
- data/lib/grpc_mock/grpc_stub_adapter.rb +4 -4
- data/lib/grpc_mock/request_stub.rb +12 -3
- data/lib/grpc_mock/response.rb +44 -0
- data/lib/grpc_mock/{resopnse_sequence.rb → response_sequence.rb} +0 -0
- data/lib/grpc_mock/stub_registry.rb +1 -1
- data/lib/grpc_mock/version.rb +1 -1
- metadata +15 -16
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 128da2bce960f7416a796a0b96bd0866a79bf30decc85e064d5c951b2f93a939
|
4
|
+
data.tar.gz: 7086f3897090c64f0d97aaa0cfbda4138787921929be89495f820dbeb866e533
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23511c5cacc91af0c26eafceee5f0a986605cb44feccf169608a35ff8f353a6f0933bc8ea0af22fbb9f04f190b5791ce6b76825040cb49e9655815bdb0f7b1a1
|
7
|
+
data.tar.gz: b069f76b458a0d95c7006a9f079e2c6bcd7c600ef563355716aa15f9208f79e3262a49a3efea6e7bc09169e5e2a8d60945f6bd772683896f44323bf3fbe7f5f4
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -30,35 +30,69 @@ require 'grpc_mock/rspec'
|
|
30
30
|
|
31
31
|
See definition of protocol buffers and gRPC generated code in [spec/exmaples/hello](https://github.com/ganmacs/grpc_mock/tree/master/spec/examples/hello)
|
32
32
|
|
33
|
-
|
33
|
+
### Stubbed request based on path and with the default response
|
34
34
|
|
35
35
|
```ruby
|
36
36
|
GrpcMock.stub_request("/hello.hello/Hello").to_return(Hello::HelloResponse.new(msg: 'test'))
|
37
37
|
|
38
38
|
client = Hello::Hello::Stub.new('localhost:8000', :this_channel_is_insecure)
|
39
|
-
client
|
39
|
+
client.hello(Hello::HelloRequest.new(msg: 'hi')) # => Hello::HelloResponse.new(msg: 'test')
|
40
40
|
```
|
41
41
|
|
42
|
-
|
42
|
+
### Stubbing requests based on path and request
|
43
43
|
|
44
44
|
```ruby
|
45
45
|
GrpcMock.stub_request("/hello.hello/Hello").with(Hello::HelloRequest.new(msg: 'hi')).to_return(Hello::HelloResponse.new(msg: 'test'))
|
46
46
|
|
47
47
|
client = Hello::Hello::Stub.new('localhost:8000', :this_channel_is_insecure)
|
48
|
-
client
|
49
|
-
client
|
48
|
+
client.hello(Hello::HelloRequest.new(msg: 'hello')) # => send a request to server
|
49
|
+
client client.hello(Hello::HelloRequest.new(msg: 'hi')) # => Hello::HelloResponse.new(msg: 'test') (without any requests to server)
|
50
50
|
```
|
51
51
|
|
52
|
-
|
52
|
+
### Responding dynamically to the stubbed requests
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
GrpcMock.stub_request("/hello.hello/Hello").to_return do |req|
|
56
|
+
Hello::HelloResponse.new(msg: "#{req.msg} too")
|
57
|
+
end
|
58
|
+
|
59
|
+
client = Hello::Hello::Stub.new('localhost:8000', :this_channel_is_insecure)
|
60
|
+
client.hello(Hello::HelloRequest.new(msg: 'hi')) # => Hello::HelloResponse.new(msg: 'hi too')
|
61
|
+
```
|
62
|
+
|
63
|
+
### Real requests to network can be allowed or disabled
|
53
64
|
|
54
65
|
```ruby
|
55
66
|
client = Hello::Hello::Stub.new('localhost:8000', :this_channel_is_insecure)
|
56
67
|
|
57
68
|
GrpcMock.disable_net_connect!
|
58
|
-
client
|
69
|
+
client.hello(Hello::HelloRequest.new(msg: 'hello')) # => Raise NetConnectNotAllowedError error
|
59
70
|
|
60
71
|
GrpcMock.allow_net_connect!
|
61
|
-
|
72
|
+
Hello::Hello::Stub.new('localhost:8000', :this_channel_is_insecure) # => send a request to server
|
73
|
+
```
|
74
|
+
|
75
|
+
### Raising errors
|
76
|
+
|
77
|
+
**Exception declared by class**
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
GrpcMock.stub_request("/hello.hello/Hello").to_raise(StandardError)
|
81
|
+
|
82
|
+
client = Hello::Hello::Stub.new('localhost:8000', :this_channel_is_insecure)
|
83
|
+
client.hello(Hello::HelloRequest.new(msg: 'hi')) # => Raise StandardError
|
84
|
+
```
|
85
|
+
|
86
|
+
**or by exception instance**
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
GrpcMock.stub_request("/hello.hello/Hello").to_raise(StandardError.new("Some error"))
|
90
|
+
```
|
91
|
+
|
92
|
+
**or by string**
|
93
|
+
|
94
|
+
```ruby
|
95
|
+
GrpcMock.stub_request("/hello.hello/Hello").to_raise("Some error")
|
62
96
|
```
|
63
97
|
|
64
98
|
## Contributing
|
data/grpc_mock.gemspec
CHANGED
@@ -22,12 +22,12 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
-
spec.add_dependency 'grpc', '>= 1.12.0', '<
|
25
|
+
spec.add_dependency 'grpc', '>= 1.12.0', '< 2'
|
26
26
|
|
27
|
-
spec.add_development_dependency 'bundler'
|
27
|
+
spec.add_development_dependency 'bundler'
|
28
28
|
spec.add_development_dependency 'grpc-tools'
|
29
29
|
spec.add_development_dependency 'pry-byebug'
|
30
|
-
spec.add_development_dependency 'rake', '
|
30
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
31
31
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
32
32
|
spec.add_development_dependency 'rubocop'
|
33
33
|
end
|
data/lib/grpc_mock/errors.rb
CHANGED
@@ -15,7 +15,7 @@ module GrpcMock
|
|
15
15
|
|
16
16
|
mock = GrpcMock.stub_registry.response_for_request(method, request)
|
17
17
|
if mock
|
18
|
-
mock
|
18
|
+
mock.evaluate(request)
|
19
19
|
elsif GrpcMock.config.allow_net_connect
|
20
20
|
super
|
21
21
|
else
|
@@ -32,7 +32,7 @@ module GrpcMock
|
|
32
32
|
r = requests.to_a # FIXME: this may not work
|
33
33
|
mock = GrpcMock.stub_registry.response_for_request(method, r)
|
34
34
|
if mock
|
35
|
-
mock
|
35
|
+
mock.evaluate(r)
|
36
36
|
elsif GrpcMock.config.allow_net_connect
|
37
37
|
super
|
38
38
|
else
|
@@ -47,7 +47,7 @@ module GrpcMock
|
|
47
47
|
|
48
48
|
mock = GrpcMock.stub_registry.response_for_request(method, request)
|
49
49
|
if mock
|
50
|
-
mock
|
50
|
+
mock.evaluate(request)
|
51
51
|
elsif GrpcMock.config.allow_net_connect
|
52
52
|
super
|
53
53
|
else
|
@@ -63,7 +63,7 @@ module GrpcMock
|
|
63
63
|
r = requests.to_a # FIXME: this may not work
|
64
64
|
mock = GrpcMock.stub_registry.response_for_request(method, r)
|
65
65
|
if mock
|
66
|
-
mock
|
66
|
+
mock.evaluate(r)
|
67
67
|
elsif GrpcMock.config.allow_net_connect
|
68
68
|
super
|
69
69
|
else
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'grpc_mock/request_pattern'
|
4
|
-
require 'grpc_mock/
|
4
|
+
require 'grpc_mock/response'
|
5
|
+
require 'grpc_mock/response_sequence'
|
5
6
|
require 'grpc_mock/errors'
|
6
7
|
|
7
8
|
module GrpcMock
|
@@ -17,8 +18,16 @@ module GrpcMock
|
|
17
18
|
self
|
18
19
|
end
|
19
20
|
|
20
|
-
def to_return(*
|
21
|
-
|
21
|
+
def to_return(*values, &block)
|
22
|
+
responses = [*values].flatten.map { |v| Response::Value.new(v) }
|
23
|
+
responses << Response::BlockValue.new(block) if block
|
24
|
+
@response_sequence << GrpcMock::ResponsesSequence.new(responses)
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_raise(*exceptions)
|
29
|
+
responses = [*exceptions].flatten.map { |e| Response::ExceptionValue.new(e) }
|
30
|
+
@response_sequence << GrpcMock::ResponsesSequence.new(responses)
|
22
31
|
self
|
23
32
|
end
|
24
33
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GrpcMock
|
4
|
+
module Response
|
5
|
+
class ExceptionValue
|
6
|
+
def initialize(exception)
|
7
|
+
@exception = case exception
|
8
|
+
when String
|
9
|
+
StandardError.new(exception)
|
10
|
+
when Class
|
11
|
+
exception.new('Exception from GrpcMock')
|
12
|
+
when Exception
|
13
|
+
exception
|
14
|
+
else
|
15
|
+
raise ArgumentError.new(message: "Invalid exception class: #{exception.class}")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def evaluate(_request = nil)
|
20
|
+
raise @exception.dup
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Value
|
25
|
+
def initialize(value)
|
26
|
+
@value = value
|
27
|
+
end
|
28
|
+
|
29
|
+
def evaluate(_request = nil)
|
30
|
+
@value.dup
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class BlockValue
|
35
|
+
def initialize(block)
|
36
|
+
@block = block
|
37
|
+
end
|
38
|
+
|
39
|
+
def evaluate(request)
|
40
|
+
@block.call(request)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
File without changes
|
data/lib/grpc_mock/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grpc_mock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuta Iwama
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: grpc
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 1.12.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,21 +29,21 @@ dependencies:
|
|
29
29
|
version: 1.12.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bundler
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '0'
|
40
40
|
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: grpc-tools
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,16 +76,16 @@ dependencies:
|
|
76
76
|
name: rake
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: 12.3.3
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
88
|
+
version: 12.3.3
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rspec
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,7 +124,6 @@ files:
|
|
124
124
|
- ".gitignore"
|
125
125
|
- ".rspec"
|
126
126
|
- ".rubocop.yml"
|
127
|
-
- ".ruby-version"
|
128
127
|
- ".travis.yml"
|
129
128
|
- Gemfile
|
130
129
|
- LICENSE.txt
|
@@ -143,7 +142,8 @@ files:
|
|
143
142
|
- lib/grpc_mock/matchers/request_including_matcher.rb
|
144
143
|
- lib/grpc_mock/request_pattern.rb
|
145
144
|
- lib/grpc_mock/request_stub.rb
|
146
|
-
- lib/grpc_mock/
|
145
|
+
- lib/grpc_mock/response.rb
|
146
|
+
- lib/grpc_mock/response_sequence.rb
|
147
147
|
- lib/grpc_mock/rspec.rb
|
148
148
|
- lib/grpc_mock/stub_registry.rb
|
149
149
|
- lib/grpc_mock/version.rb
|
@@ -166,8 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
168
|
requirements: []
|
169
|
-
|
170
|
-
rubygems_version: 2.6.14.3
|
169
|
+
rubygems_version: 3.0.3
|
171
170
|
signing_key:
|
172
171
|
specification_version: 4
|
173
172
|
summary: Library for stubbing grpc in Ruby
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.4
|