mini_mock 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/mini_mock.rb +58 -0
- metadata +43 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9e96d52e166cf0503f9a5e09800f9aa87accf0ae89d649e3e7554afb4a619a46
|
4
|
+
data.tar.gz: b320f3f91aca310659abb3391c8bac039b9b435797cbdd36e9626c3a66fd0a0b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f3d2097d3ab1bc147126578f6495e4b300036e5c7ad1405cf346e2457a0c4c2f20c1d241b357edc231b1431fd7f3580d0732a9147e32bde8710292bf40a6b6d5
|
7
|
+
data.tar.gz: 758fa946b59033b18e7d42dc97c0dba27b574a4d725944d0ce65fa853092c26696739396a70e1ee78fb47707431fb8d954693f6f66ac2212690186411f536f6a
|
data/lib/mini_mock.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
class MiniMock
|
2
|
+
RECORDINGS_PATH = 'mini_mock'
|
3
|
+
DEFAULT_FILE = "mocks"
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def record file_name=DEFAULT_FILE
|
8
|
+
FileUtils.mkdir_p(RECORDINGS_PATH)
|
9
|
+
@@file_name = file_name
|
10
|
+
Typhoeus::Config.block_connection = false
|
11
|
+
add_callback
|
12
|
+
true
|
13
|
+
end
|
14
|
+
|
15
|
+
def replay file_name=DEFAULT_FILE
|
16
|
+
Typhoeus::Config.block_connection = true
|
17
|
+
remove_callback
|
18
|
+
load "#{RECORDINGS_PATH}/#{file_name}.rb"
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def off
|
23
|
+
Typhoeus::Config.block_connection = false
|
24
|
+
remove_callback
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def add_callback
|
30
|
+
unless Typhoeus.on_complete.include?(AFTER_REQUEST_CALLBACK)
|
31
|
+
Typhoeus.on_complete << AFTER_REQUEST_CALLBACK
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def remove_callback
|
36
|
+
Typhoeus.on_complete.delete_if {|v| v == AFTER_REQUEST_CALLBACK }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
AFTER_REQUEST_CALLBACK = Proc.new do |response|
|
42
|
+
code = <<~RUBY
|
43
|
+
response = Typhoeus::Response.new(
|
44
|
+
code: #{response.code},
|
45
|
+
status_message: "#{response.status_message}",
|
46
|
+
body: #{response.body.inspect},
|
47
|
+
headers: #{response.headers},
|
48
|
+
effective_url: #{response.effective_url.inspect},
|
49
|
+
options: #{response.options.tap{|a| a[:debug_info] = ""}.inspect}
|
50
|
+
)
|
51
|
+
Typhoeus.stub(#{response.request.base_url.inspect}, #{response.request.original_options})
|
52
|
+
.and_return(response)
|
53
|
+
|
54
|
+
RUBY
|
55
|
+
File.write "#{RECORDINGS_PATH}/#{@@file_name}.rb", code, mode: 'a+'
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
metadata
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mini_mock
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Felipe Mesquita
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-03-12 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email: felipemesquita@hey.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/mini_mock.rb
|
20
|
+
homepage: https://github.com/felipedmesquita/mini_mock
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubygems_version: 3.3.3
|
40
|
+
signing_key:
|
41
|
+
specification_version: 4
|
42
|
+
summary: Record and replay Typhoeus requests
|
43
|
+
test_files: []
|