kono_epp_client 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a4bd5d2aace0903e87fdb0dfa0e5c0b6d6c5252bc174536eeae420c07334197
4
- data.tar.gz: e40f8a2a045e31022ab9dcf011e9a5b6eb03f89f798054e9b6d096263583cce8
3
+ metadata.gz: 2c14b24f2b061e44d80192c0e9612382f6f3f2f159bb3266c3750968dc56640d
4
+ data.tar.gz: bb38b49904a2b3205a270fb0d308cab943a710c54879cc193d2bacc868d16c95
5
5
  SHA512:
6
- metadata.gz: c13b257e76b8e742e42f6636e00c9b138ccedabedb26f96dfadcc68ab9b3b7f535258c27789aaa5a803e2265dec08ace2ad9bd4abf2791dbfb4080207c4fd393
7
- data.tar.gz: e782dd2e967c202cc9e85c37e0ecc7befc605d4a77f3b83c86878dc3a002433c99cb70441a5cf81e15b631fa8433bf9e534f60a86f4c06bacb7679b14a57ce66
6
+ metadata.gz: 4361d5610d860fd4d1bcadebe2dfb68eb19f52a12bd7e49eff016eec4ca756229efc69a3fc4473d9be7a4a622e7d993c52a8befb6bf0d7342e4c2fb28fbeee1d
7
+ data.tar.gz: 84f087306f9ce8b5fb2f16dc50e5022063e588b9535847e8edd85b6ad3fadc1d3f6e4d40815ff44e344a745101b4ec42ffb9377479ff0a8a240c801dc2fa6841
data/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.
3
+
4
+ - - -
5
+ ## 0.1.1 - 2024-05-23
6
+ #### Continuous Integration
7
+ - Cog typo - (f91c1b9) - Marino Bonetti
8
+ #### Features
9
+ - Add configuration options for transport - (d83d723) - Marino Bonetti
10
+ #### Miscellaneous Chores
11
+ - Configuration for development and deploy - (563edac) - Marino Bonetti
12
+ #### Tests
13
+ - Fix methods non present in std - (e0393ff) - Marino Bonetti
14
+
15
+ - - -
16
+
17
+ Changelog generated by [cocogitto](https://github.com/cocogitto/cocogitto).
data/README.md CHANGED
@@ -1,2 +1,18 @@
1
1
  # kono_epp_client
2
2
  A simple EPP Client
3
+
4
+
5
+
6
+ ## Development
7
+ Build dell'immagine di docker
8
+ ```shell
9
+ docker compose build
10
+ ```
11
+ Installazione dipendenze
12
+ ```shell
13
+ docker compose run app bundle
14
+ ```
15
+ Run rspec
16
+ ```shell
17
+ docker compose run app bundle exec rspec
18
+ ```
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,39 @@
1
+ require_relative "lib/kono_epp_client/version"
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'kono_epp_client'
5
+ s.version = KonoEppClient::VERSION
6
+ s.date = '2019-10-08'
7
+ s.summary = "Kono Epp client"
8
+ s.description = "A simple EPP Client"
9
+ s.authors = ["Fabio Bonelli", "Jury Ghidinelli", "Marino Bonetti"]
10
+ s.email = ['jury@archimedianet.it', 'marinobonetti@gmail.com']
11
+ s.files = ["lib/kono_epp_client.rb"]
12
+ s.homepage = 'https://github.com/ArchimediaZerogroup/kono_epp_client'
13
+ s.license = 'MIT'
14
+
15
+ s.files = Dir.chdir(__dir__) do
16
+ `git ls-files -z`.split("\x0").reject do |f|
17
+ (File.expand_path(f) == __FILE__) ||
18
+ f.start_with?(*[
19
+ "bin/", "test/", "spec/", "features/",
20
+ ".git", ".gitlab-ci.yml", "appveyor", "Gemfile",
21
+ "cog.toml", "docker-compose.yml", "Dockerfile",
22
+ ".rspec", ".rubocop.yml"
23
+ ])
24
+ end
25
+ end
26
+
27
+ files = `git ls-files -z`.split("\x0")
28
+ s.test_files = files.grep(%r{^(spec)/})
29
+
30
+ s.add_dependency 'activesupport', '>= 5.2'
31
+ s.add_dependency 'rexml'
32
+ s.add_dependency 'nokogiri', '>= 1.10'
33
+
34
+ s.add_development_dependency "rspec"
35
+ s.add_development_dependency "super_diff"
36
+ s.add_development_dependency "rspec-html-matchers"
37
+ s.add_development_dependency 'rspec-snapshot'
38
+
39
+ end
data/lib/epp/server.rb CHANGED
@@ -5,7 +5,9 @@ module KonoEppClient #:nodoc:
5
5
 
6
6
  require 'nokogiri'
7
7
 
8
- attr_accessor :tag, :password, :server, :port, :ssl_version, :old_server, :services, :lang, :extensions, :version, :credit, :timeout
8
+ attr_accessor :tag, :password, :server, :port, :ssl_version, :old_server,
9
+ :services, :lang, :extensions, :version, :credit, :timeout,
10
+ :transport, :transport_options
9
11
 
10
12
  # ==== Required Attrbiutes
11
13
  #
@@ -23,6 +25,7 @@ module KonoEppClient #:nodoc:
23
25
  # * <tt>:extensions</tt> - URLs to custom extensions to standard EPP. Use these to extend the standard EPP (e.g., Nominet uses extensions). Defaults to none.
24
26
  # * <tt>:version</tt> - Set the EPP version. Defaults to "1.0".
25
27
  # * <tt>:transport</tt> - Type of connection (http or tcp). Default to "tcp"
28
+ # * <tt>:transport_options</tt> - Overrides for transport configurations. Default to {}
26
29
  # * <tt>:timeout</tt> - Timeou for connections in seconds. Default to "30"
27
30
  # * <tt>:ssl_version</tt> - Version of the ssl protocol versione. Default to TLSv1
28
31
  # * <tt>:ssl_version</tt> - Version of the ssl protocol versione. Default to TLSv1
@@ -30,20 +33,21 @@ module KonoEppClient #:nodoc:
30
33
  def initialize(attributes = {})
31
34
  requires!(attributes, :tag, :password, :server)
32
35
 
33
- @tag = attributes[:tag]
34
- @password = attributes[:password]
35
- @server = attributes[:server]
36
- @port = attributes[:port] || 700
37
- @old_server = attributes[:old_server] || false
38
- @lang = attributes[:lang] || "en"
39
- @services = attributes[:services] || ["urn:ietf:params:xml:ns:domain-1.0", "urn:ietf:params:xml:ns:contact-1.0", "urn:ietf:params:xml:ns:host-1.0"]
40
- @extensions = attributes[:extensions] || []
41
- @version = attributes[:version] || "1.0"
42
- @transport = attributes[:transport] || :tcp
43
- @timeout = attributes[:timeout] || 30
44
- @ssl_version = attributes[:ssl_version] || :TLSv1
45
-
46
- @logged_in = false
36
+ @tag = attributes[:tag]
37
+ @password = attributes[:password]
38
+ @server = attributes[:server]
39
+ @port = attributes[:port] || 700
40
+ @old_server = attributes[:old_server] || false
41
+ @lang = attributes[:lang] || "en"
42
+ @services = attributes[:services] || ["urn:ietf:params:xml:ns:domain-1.0", "urn:ietf:params:xml:ns:contact-1.0", "urn:ietf:params:xml:ns:host-1.0"]
43
+ @extensions = attributes[:extensions] || []
44
+ @version = attributes[:version] || "1.0"
45
+ @transport = attributes[:transport] || :tcp
46
+ @transport_options = attributes[:transport_options] || {}
47
+ @timeout = attributes[:timeout] || 30
48
+ @ssl_version = attributes[:ssl_version] || :TLSv1
49
+
50
+ @logged_in = false
47
51
  end
48
52
 
49
53
  def connect_and_hello
@@ -61,13 +65,13 @@ module KonoEppClient #:nodoc:
61
65
  # <tt><login></tt> and <tt><logout></tt> requests are also wrapped
62
66
  # around the request, so we can close the socket immediately after
63
67
  # the request is made.
64
- def request( xml )
68
+ def request(xml)
65
69
  # open_connection
66
70
 
67
71
  # @logged_in = true if login
68
72
 
69
73
  begin
70
- @response = send_request( xml )
74
+ @response = send_request(xml)
71
75
  ensure
72
76
  if @logged_in && !old_server
73
77
  @logged_in = false if logout
@@ -79,7 +83,7 @@ module KonoEppClient #:nodoc:
79
83
 
80
84
  # Sends a standard login request to the EPP server.
81
85
  def login
82
- login = KonoEppLogin.new( tag, password )
86
+ login = KonoEppLogin.new(tag, password)
83
87
 
84
88
  # FIXME: Order matters
85
89
  login.version = version
@@ -88,11 +92,11 @@ module KonoEppClient #:nodoc:
88
92
  login.services = services
89
93
  login.extensions = extensions
90
94
 
91
- send_command( login )
95
+ send_command(login)
92
96
  end
93
97
 
94
- def change_password( new_password )
95
- login = KonoEppLogin.new( tag, password )
98
+ def change_password(new_password)
99
+ login = KonoEppLogin.new(tag, password)
96
100
 
97
101
  # FIXME: Order matters
98
102
  login.new_password = new_password
@@ -103,7 +107,7 @@ module KonoEppClient #:nodoc:
103
107
  login.services = services
104
108
  login.extensions = extensions
105
109
 
106
- send_command( login )
110
+ send_command(login)
107
111
  end
108
112
 
109
113
  def logged_in?
@@ -118,145 +122,145 @@ module KonoEppClient #:nodoc:
118
122
 
119
123
  # FIXME: Remove command wrappers?
120
124
  def hello
121
- send_request( KonoEppHello.new.to_s )
125
+ send_request(KonoEppHello.new.to_s)
122
126
  end
123
127
 
124
- def poll( id = nil )
125
- poll = KonoEppPoll.new( id ? :ack : :req )
128
+ def poll(id = nil)
129
+ poll = KonoEppPoll.new(id ? :ack : :req)
126
130
 
127
131
  poll.ack_id = id if id
128
132
 
129
- send_command( poll )
133
+ send_command(poll)
130
134
  end
131
135
 
132
- def create_contact( options )
136
+ def create_contact(options)
133
137
  contact = KonoEppCreateContact.new options
134
- send_command( contact )
138
+ send_command(contact)
135
139
  end
136
140
 
137
141
  def check_contacts(ids)
138
- send_command( KonoEppCheckContacts.new(ids) )
142
+ send_command(KonoEppCheckContacts.new(ids))
139
143
  end
140
144
 
141
- def delete_contact( id )
145
+ def delete_contact(id)
142
146
  contact = KonoEppDeleteContact.new id
143
- send_command( contact )
147
+ send_command(contact)
144
148
  end
145
149
 
146
- def update_contact( options )
150
+ def update_contact(options)
147
151
  contact = KonoEppUpdateContact.new options
148
- send_command( contact )
152
+ send_command(contact)
149
153
  end
150
154
 
151
- def create_domain( options )
155
+ def create_domain(options)
152
156
  domain = KonoEppCreateDomain.new options
153
- send_command( domain )
157
+ send_command(domain)
154
158
  end
155
159
 
156
- def check_domains( *domains )
157
- send_command( KonoEppCheckDomains.new *domains )
160
+ def check_domains(*domains)
161
+ send_command(KonoEppCheckDomains.new *domains)
158
162
  end
159
163
 
160
- def update_domain( options )
164
+ def update_domain(options)
161
165
  domain = KonoEppUpdateDomain.new options
162
- send_command( domain )
166
+ send_command(domain)
163
167
  end
164
168
 
165
- def delete_domain( name )
169
+ def delete_domain(name)
166
170
  domain = KonoEppDeleteDomain.new name
167
- send_command( domain )
171
+ send_command(domain)
168
172
  end
169
173
 
170
- def info_contact( id )
174
+ def info_contact(id)
171
175
  contact = KonoEppInfoContact.new id
172
- send_command( contact )
176
+ send_command(contact)
173
177
  end
174
178
 
175
- def info_domain( name )
179
+ def info_domain(name)
176
180
  info = KonoEppInfoDomain.new name
177
- send_command( info )
181
+ send_command(info)
178
182
  end
179
183
 
180
184
  def transfer_domain(name, authinfo, op, extension: nil)
181
- send_command(KonoEppTransferDomain.new( name, authinfo, op, extension: extension))
185
+ send_command(KonoEppTransferDomain.new(name, authinfo, op, extension: extension))
182
186
  end
183
187
 
184
188
  # Sends a standard logout request to the EPP server.
185
189
  def logout
186
- send_command( KonoEppLogout.new, 1500 )
190
+ send_command(KonoEppLogout.new, 1500)
187
191
  end
188
192
 
189
- # private
193
+ # private
190
194
  # Wrapper which sends XML to the server, and receives
191
195
  # the response in return.
192
- def send_request( xml )
193
- write( xml )
196
+ def send_request(xml)
197
+ write(xml)
194
198
  read
195
199
  end
196
200
 
197
- def send_command( command, expected_result = 1000..1999 )
198
- namespaces = { 'extepp' => 'http://www.nic.it/ITNIC-EPP/extepp-2.0',
199
- 'xmlns' => "urn:ietf:params:xml:ns:epp-1.0" }
201
+ def send_command(command, expected_result = 1000..1999)
202
+ namespaces = {'extepp' => 'http://www.nic.it/ITNIC-EPP/extepp-2.0',
203
+ 'xmlns' => "urn:ietf:params:xml:ns:epp-1.0"}
200
204
 
201
- xml = Nokogiri.XML( send_request( command.to_s ) )
205
+ xml = Nokogiri.XML(send_request(command.to_s))
202
206
 
203
207
  # TODO: multiple <response> RFC 3730 §2.6
204
- result = xml.at_xpath( "/xmlns:epp/xmlns:response[1]/xmlns:result",
205
- namespaces )
206
- raise KonoEppErrorResponse.new( :message => 'Malformed response' ) if result.nil?
208
+ result = xml.at_xpath("/xmlns:epp/xmlns:response[1]/xmlns:result",
209
+ namespaces)
210
+ raise KonoEppErrorResponse.new(:message => 'Malformed response') if result.nil?
207
211
 
208
- xmlns_code = result.at_xpath( "@code" )
209
- raise KonoEppErrorResponse.new( :message => 'Malformed response' ) if xmlns_code.nil?
212
+ xmlns_code = result.at_xpath("@code")
213
+ raise KonoEppErrorResponse.new(:message => 'Malformed response') if xmlns_code.nil?
210
214
 
211
215
  response_code = xmlns_code.value.to_i
212
216
 
213
- xmlns_msg = result.xpath( "xmlns:msg/text ()",
214
- namespaces )
215
- raise KonoEppErrorResponse.new( :message => 'Malformed response' ) if xmlns_msg.empty?
217
+ xmlns_msg = result.xpath("xmlns:msg/text ()",
218
+ namespaces)
219
+ raise KonoEppErrorResponse.new(:message => 'Malformed response') if xmlns_msg.empty?
216
220
 
217
221
  result_message = xmlns_msg.text.strip
218
222
 
219
223
  # TODO: value
220
224
 
221
- xmlns_ext_reason = result.xpath( "xmlns:extValue/xmlns:reason",
222
- namespaces)
225
+ xmlns_ext_reason = result.xpath("xmlns:extValue/xmlns:reason",
226
+ namespaces)
223
227
  result_message += ": #{xmlns_ext_reason.text.strip}" unless xmlns_ext_reason.empty?
224
228
 
225
- xmlns_reason_code = result.xpath( "xmlns:extValue/xmlns:value/extepp:reasonCode",
226
- namespaces )
229
+ xmlns_reason_code = result.xpath("xmlns:extValue/xmlns:value/extepp:reasonCode",
230
+ namespaces)
227
231
  reason_code = xmlns_reason_code.text.strip.to_i unless xmlns_reason_code.empty?
228
232
 
229
- credit_msg = xml.xpath( "//extepp:credit/text ()",
230
- namespaces )
233
+ credit_msg = xml.xpath("//extepp:credit/text ()",
234
+ namespaces)
231
235
  @credit = credit_msg.text.to_f unless credit_msg.empty?
232
236
 
233
237
  if expected_result === response_code
234
238
  return xml
235
239
  end
236
240
 
237
- args = { :xml => xml,
238
- :response_code => response_code,
239
- :reason_code => reason_code,
240
- :message => result_message }
241
-
242
- case [ response_code, reason_code ]
243
- when [2200, 6004]
244
- raise KonoEppAuthenticationPasswordExpired.new( args )
245
- when [2002, 4015]
246
- raise KonoEppLoginNeeded.new( args )
247
- when [2304, 9022]
248
- raise KonoEppDomainHasStatusCliTransProhibited.new(args)
249
- when [2304, 9026]
250
- raise KonoEppDomainHasStatusClientUpdateProhibited.new(args)
251
- else
252
- raise KonoEppErrorResponse.new( args )
241
+ args = {:xml => xml,
242
+ :response_code => response_code,
243
+ :reason_code => reason_code,
244
+ :message => result_message}
245
+
246
+ case [response_code, reason_code]
247
+ when [2200, 6004]
248
+ raise KonoEppAuthenticationPasswordExpired.new(args)
249
+ when [2002, 4015]
250
+ raise KonoEppLoginNeeded.new(args)
251
+ when [2304, 9022]
252
+ raise KonoEppDomainHasStatusCliTransProhibited.new(args)
253
+ when [2304, 9026]
254
+ raise KonoEppDomainHasStatusClientUpdateProhibited.new(args)
255
+ else
256
+ raise KonoEppErrorResponse.new(args)
253
257
  end
254
258
  end
255
259
 
256
260
  # Establishes the connection to the server. If the connection is
257
- # established, then this method will call read and return
258
- # the EPP <tt><greeting></tt> which is sent by the
259
- # server upon connection.
261
+ # established, then this method will call read and return
262
+ # the EPP <tt><greeting></tt> which is sent by the
263
+ # server upon connection.
260
264
  def open_connection
261
265
  # FIXME il timeout serve solamente nella versione tcp
262
266
  # FIXME perchè utilizzare un'istanza di classe? non sarebbe meglio avere un metodo che genera il transport
@@ -266,10 +270,14 @@ module KonoEppClient #:nodoc:
266
270
  when :tcp
267
271
  @connection = KonoEppClient::Transport::TcpTransport.new(server, port)
268
272
  when :http
269
- @connection = KonoEppClient::Transport::HttpTransport.new(server, port,
270
- ssl_version: ssl_version,
271
- cookie_file: "#{@tag.downcase}.cookies.pstore"
272
- )
273
+
274
+ options = {
275
+ ssl_version: ssl_version,
276
+ cookie_file: "#{@tag.downcase}.cookies.pstore"
277
+ }.merge(@transport_options)
278
+
279
+ @connection = KonoEppClient::Transport::HttpTransport.new(server, port, **options)
280
+
273
281
  end
274
282
  end
275
283
  end
@@ -286,9 +294,9 @@ module KonoEppClient #:nodoc:
286
294
 
287
295
  # Send XML to the server. If the socket returns EOF,
288
296
  # the connection has closed and a SocketError is raised.
289
- def write( xml )
297
+ def write(xml)
290
298
  Timeout.timeout @timeout do
291
- @connection.write( xml )
299
+ @connection.write(xml)
292
300
  end
293
301
  end
294
302
  end
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,3 @@
1
+ module KonoEppClient
2
+ VERSION = File.read(File.join(File.dirname(__FILE__), "./VERSION")).strip
3
+ end
@@ -0,0 +1,69 @@
1
+ RSpec.describe KonoEppClient::Server do
2
+
3
+ let(:params) {
4
+ {
5
+ tag: "abc",
6
+ password: "123123",
7
+ server: "epp.pubtest.nic.it"
8
+ }
9
+ }
10
+
11
+ let(:instance) { described_class.new(params) }
12
+
13
+ describe "initialization" do
14
+
15
+ it "base" do
16
+ expect(instance).to have_attributes(
17
+ **params,
18
+ port: 700,
19
+ old_server: false,
20
+ lang: "en",
21
+ services: ["urn:ietf:params:xml:ns:domain-1.0", "urn:ietf:params:xml:ns:contact-1.0", "urn:ietf:params:xml:ns:host-1.0"],
22
+ extensions: [],
23
+ version: "1.0",
24
+ transport: :tcp,
25
+ transport_options: {},
26
+ timeout: 30,
27
+ ssl_version: :TLSv1
28
+ )
29
+ end
30
+ end
31
+
32
+ describe "#open_connection" do
33
+
34
+ it "default transport" do
35
+
36
+ double = instance_double(KonoEppClient::Transport::TcpTransport)
37
+
38
+ expect(KonoEppClient::Transport::TcpTransport).to receive(:new).with(params[:server], 700).and_return(double)
39
+
40
+ expect { instance.open_connection }.to change { instance.instance_variable_get(:@connection) }.
41
+ to(double)
42
+ end
43
+
44
+ context "transport http" do
45
+
46
+ let(:params) {
47
+ super().merge(
48
+ transport: :http,
49
+ transport_options: {cookie_file: "file_to_coockies"},
50
+ )
51
+ }
52
+
53
+ it "use http transport" do
54
+ double = instance_double(KonoEppClient::Transport::HttpTransport)
55
+
56
+ expect(KonoEppClient::Transport::HttpTransport).to receive(:new).with(
57
+ params[:server],
58
+ 700, ssl_version: :TLSv1, cookie_file: "file_to_coockies").and_return(double)
59
+
60
+ expect { instance.open_connection }.to change { instance.instance_variable_get(:@connection) }.
61
+ to(double)
62
+
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+
69
+ end
@@ -9,7 +9,7 @@ RSpec.configure do |config|
9
9
  extension = ".#{example.metadata[:snapshot]}" unless example.metadata[:snapshot] === true
10
10
  class_name = example.metadata[:described_class].name.underscore
11
11
  test_name = example.metadata[:full_description].gsub(example.metadata[:described_class].name, "").tr(" ", "_")
12
- raise "component snapshot has no content" if raw_rendered_content.blank?
12
+ raise "component snapshot has no content" if raw_rendered_content.nil? or raw_rendered_content.empty?
13
13
  str_content = raw_rendered_content
14
14
  if extension == ".xml"
15
15
  str_content = Nokogiri.XML(str_content).to_xml
@@ -0,0 +1 @@
1
+ require "super_diff/rspec"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kono_epp_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabio Bonelli
@@ -68,6 +68,20 @@ dependencies:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: super_diff
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: rspec-html-matchers
73
87
  requirement: !ruby/object:Gem::Requirement
@@ -104,7 +118,10 @@ executables: []
104
118
  extensions: []
105
119
  extra_rdoc_files: []
106
120
  files:
121
+ - CHANGELOG.md
107
122
  - README.md
123
+ - Rakefile
124
+ - kono_epp_client.gemspec
108
125
  - lib/epp/epp_command.rb
109
126
  - lib/epp/epp_command/check_contacts.rb
110
127
  - lib/epp/epp_command/create_contact.rb
@@ -127,6 +144,8 @@ files:
127
144
  - lib/epp/transport/http.rb
128
145
  - lib/epp/transport/tcp.rb
129
146
  - lib/kono_epp_client.rb
147
+ - lib/kono_epp_client/VERSION
148
+ - lib/kono_epp_client/version.rb
130
149
  - lib/require_parameters.rb
131
150
  - spec/epp/epp_command/kono_epp_check_contacts_spec.rb
132
151
  - spec/epp/epp_command/kono_epp_check_domains_spec.rb
@@ -134,6 +153,7 @@ files:
134
153
  - spec/epp/epp_command/kono_epp_transfer_domain_spec.rb
135
154
  - spec/epp/epp_command/kono_epp_update_domain_spec.rb
136
155
  - spec/epp/kono_epp_command_spec.rb
156
+ - spec/epp/server_spec.rb
137
157
  - spec/fixtures/snapshots/kono_epp_check_contacts/_construct.xml.snap
138
158
  - spec/fixtures/snapshots/kono_epp_check_domains/_construct.xml.snap
139
159
  - spec/fixtures/snapshots/kono_epp_create_domain/_create.xml.snap
@@ -149,6 +169,7 @@ files:
149
169
  - spec/support/context.rb
150
170
  - spec/support/matchers.rb
151
171
  - spec/support/snapshot.rb
172
+ - spec/support/superdiff.rb
152
173
  homepage: https://github.com/ArchimediaZerogroup/kono_epp_client
153
174
  licenses:
154
175
  - MIT
@@ -179,6 +200,7 @@ test_files:
179
200
  - spec/epp/epp_command/kono_epp_transfer_domain_spec.rb
180
201
  - spec/epp/epp_command/kono_epp_update_domain_spec.rb
181
202
  - spec/epp/kono_epp_command_spec.rb
203
+ - spec/epp/server_spec.rb
182
204
  - spec/fixtures/snapshots/kono_epp_check_contacts/_construct.xml.snap
183
205
  - spec/fixtures/snapshots/kono_epp_check_domains/_construct.xml.snap
184
206
  - spec/fixtures/snapshots/kono_epp_create_domain/_create.xml.snap
@@ -194,3 +216,4 @@ test_files:
194
216
  - spec/support/context.rb
195
217
  - spec/support/matchers.rb
196
218
  - spec/support/snapshot.rb
219
+ - spec/support/superdiff.rb