mockserver-world-helpers 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 00b60456b65d99f36fba0c31201afe120fe57144
4
+ data.tar.gz: e84cdf60c2b8f7700066ce0e84bbc373de97c4bf
5
+ SHA512:
6
+ metadata.gz: 366f6cf558258b9df6cda80e889b73f8ce6a370b2680c771ce0508937f642ec97f36bce1eb629d01f9afd5dd2259e4c9d683022f615be9a8844e5379daf26d7e
7
+ data.tar.gz: fd1eea2eb63c0fbd0e5cf71e52fc504d1823d13d4fcd9772fe937858f6097919a46d8235eca2113864f4a8a79361cfd1abc808cfd8ddf1b7b3973f2d6be3c69c
@@ -0,0 +1,17 @@
1
+ require 'mockserver-client'
2
+
3
+ module MockServerWorldHelpers
4
+ class LocalDockerClient < MockServer::MockServerClient
5
+
6
+ def initialize(docker_host = self.class.docker_host_ip, mock_server_port = 8080)
7
+ raise "docker must be installed" unless docker_host != nil && docker_host.length > 0
8
+
9
+ super(docker_host, mock_server_port)
10
+ end
11
+
12
+ def self.docker_host_ip
13
+ docker_host = ENV["DOCKER_HOST"]
14
+ /([0-9]{1,3}[.]){3}[0-9]{1,3}/.match(docker_host)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,62 @@
1
+ require 'docker'
2
+
3
+ module MockServerWorldHelpers
4
+ class LocalDockerServer
5
+ attr_accessor :is_started
6
+
7
+ def initialize(public_port = 8080)
8
+ @name = "mockserver-world"
9
+ @image_name = "jamesdbloom/mockserver"
10
+ @private_port = 8080
11
+ @public_port = public_port
12
+ @is_started = false
13
+
14
+
15
+ if Docker::Image.get(@image_name) == nil
16
+ system "docker pull #{@image_name}"
17
+ end
18
+ end
19
+
20
+ def create
21
+ delete
22
+
23
+ ports = [{"PrivatePort"=>@private_port, "PublicPort"=>@public_port, "Type"=>"tcp"}]
24
+ @container = Docker::Container.create('Image' => "#{@image_name}", "Ports"=> ports, "name" => "#{@name}")
25
+
26
+ port_bindings = {"#{@private_port}/tcp"=>[{"HostIp"=>"0.0.0.0", "HostPort"=>"#{@public_port}"}]}
27
+ result_container = @container.start("PortBindings"=> port_bindings)
28
+
29
+ @is_started = result_container.json["State"]["Running"]
30
+ raise "Unable to start Docker container. Docker must be installed" unless @is_started
31
+ end
32
+
33
+ def delete
34
+ if @container != nil
35
+ @container.stop
36
+ @container.delete(:force => true)
37
+ end
38
+
39
+ delete_all_named_containers
40
+ @is_started = false
41
+ end
42
+
43
+ private
44
+
45
+ def delete_all_named_containers
46
+ containers = Docker::Container.all(:all => true)
47
+ for container in containers
48
+ container_json = container.json
49
+ container_exists = container_json != nil && container_json["Name"] == "/#{@name}"
50
+
51
+ container.stop(:force => true) if container_exists
52
+ @is_started = container_state(container_json) || @is_started
53
+ container.delete(:force => true) if container_exists
54
+ end
55
+ end
56
+
57
+ def container_state(container_json)
58
+ has_state = container_json != nil && container_json.has_key?("State")
59
+ has_state && container_json["State"] && container_json["State"]["Running"]
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,8 @@
1
+ require 'mockserver-client'
2
+ require_relative 'local-docker-server'
3
+ require_relative 'local-docker-client'
4
+
5
+ module MockServerWorldHelpers
6
+ include MockServer
7
+ include MockServer::Model::DSL
8
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,4 @@
1
+ # encoding: UTF-8
2
+ module MockServerWorldHelpers
3
+ VERSION = '0.1.3'
4
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mockserver-world-helpers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Richard Fisk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mocha
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mockserver-client
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.0.6
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '1.0'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.0.6
103
+ - !ruby/object:Gem::Dependency
104
+ name: docker-api
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.21'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.21'
117
+ description: Adding a way to use a completely isolated mock server from the context
118
+ of cucumber tests
119
+ email:
120
+ - richard.fisk+rubygem@gmail.com
121
+ executables: []
122
+ extensions: []
123
+ extra_rdoc_files: []
124
+ files:
125
+ - lib/local-docker-client.rb
126
+ - lib/local-docker-server.rb
127
+ - lib/mockserver-world-helpers.rb
128
+ - lib/version.rb
129
+ homepage: https://github.com/richardPFisk/mockserver-world-helpers
130
+ licenses:
131
+ - GPL-2
132
+ metadata: {}
133
+ post_install_message:
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '1.9'
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '2'
147
+ requirements: []
148
+ rubyforge_project:
149
+ rubygems_version: 2.2.2
150
+ signing_key:
151
+ specification_version: 4
152
+ summary: Ruby MockServer helpers for cucumber
153
+ test_files: []