et_fake_acas_server 0.1.10 → 0.2.0

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: e1b44caeed3506c7e77a313da39e242d5cbc9da4cbe8f01a7b1fb4c934989f94
4
- data.tar.gz: 9ec1b4f28579e6d0bcc1e91d75fff0b9eb41b588ca86fd33d983cb10255d3d9b
3
+ metadata.gz: d5c5cd02d12ff822ddc8f3c5c68a3ea23c1964e346b4310536126a8a20e5d626
4
+ data.tar.gz: c0ad55f520e6d25efd85d3e8f0ce4d829762f5b31cfbfe9f8494d4c0ee3d1b7c
5
5
  SHA512:
6
- metadata.gz: 647b1e946b836d91c16b659be85bf44edaa5accabd9a30fa5956b74f026af7801e5d77cdf937f9fffe5286bff2cdbb88910f7b06029498740baa9cbcf07dad5d
7
- data.tar.gz: 93b01217330bee21a1d43c6e29889dd2b4131af7de792b1d1e56d3d39a52724fd070dd904206a8c1aab0bd51b7ae32d9bf224b32669d600dd7354099e44ee21c
6
+ metadata.gz: ae3a4aa4a8767939fd52db6a6d833abf8fa9152102ad08797d4d960932eb36997dc8adf568fb050681f534a1af146da737224b858c69563766538dd9ddb10df6
7
+ data.tar.gz: 2fbcd8f0a30b21d89afa47bd504084ff6ebe712a5f91dd43c1f3b1a0259c18050c5dcdf7c96e783f2a7e8276cce0c0148ea51a90ace609cf4129afd6107d1e1a
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.7.5
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- et_fake_acas_server (0.1.10)
5
- activesupport (>= 5.2)
4
+ et_fake_acas_server (0.2.0)
5
+ activesupport (~> 6.1)
6
6
  iodine (~> 0.7)
7
7
  nokogiri (~> 1.8, >= 1.8.2)
8
8
  ruby-mcrypt (~> 0.2)
@@ -12,47 +12,46 @@ PATH
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activesupport (6.0.2.1)
15
+ activesupport (6.1.6)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 0.7, < 2)
18
- minitest (~> 5.1)
19
- tzinfo (~> 1.1)
20
- zeitwerk (~> 2.2)
21
- backports (3.16.1)
22
- concurrent-ruby (1.1.6)
23
- i18n (1.8.2)
17
+ i18n (>= 1.6, < 2)
18
+ minitest (>= 5.1)
19
+ tzinfo (~> 2.0)
20
+ zeitwerk (~> 2.3)
21
+ concurrent-ruby (1.1.10)
22
+ i18n (1.10.0)
24
23
  concurrent-ruby (~> 1.0)
25
- iodine (0.7.38)
26
- mini_portile2 (2.4.0)
27
- minitest (5.14.0)
28
- multi_json (1.14.1)
24
+ iodine (0.7.47)
25
+ mini_portile2 (2.8.0)
26
+ minitest (5.15.0)
27
+ multi_json (1.15.0)
29
28
  mustermann (1.1.1)
30
29
  ruby2_keywords (~> 0.0.1)
31
- nokogiri (1.10.8)
32
- mini_portile2 (~> 2.4.0)
33
- rack (2.2.2)
34
- rack-protection (2.0.8.1)
30
+ nokogiri (1.13.6)
31
+ mini_portile2 (~> 2.8.0)
32
+ racc (~> 1.4)
33
+ racc (1.6.0)
34
+ rack (2.2.3.1)
35
+ rack-protection (2.2.0)
35
36
  rack
36
37
  rake (13.0.1)
37
38
  ruby-mcrypt (0.2.0)
38
- ruby2_keywords (0.0.2)
39
- sinatra (2.0.8.1)
39
+ ruby2_keywords (0.0.5)
40
+ sinatra (2.2.0)
40
41
  mustermann (~> 1.0)
41
- rack (~> 2.0)
42
- rack-protection (= 2.0.8.1)
42
+ rack (~> 2.2)
43
+ rack-protection (= 2.2.0)
43
44
  tilt (~> 2.0)
44
- sinatra-contrib (2.0.8.1)
45
- backports (>= 2.8.2)
45
+ sinatra-contrib (2.2.0)
46
46
  multi_json
47
47
  mustermann (~> 1.0)
48
- rack-protection (= 2.0.8.1)
49
- sinatra (= 2.0.8.1)
48
+ rack-protection (= 2.2.0)
49
+ sinatra (= 2.2.0)
50
50
  tilt (~> 2.0)
51
- thread_safe (0.3.6)
52
51
  tilt (2.0.10)
53
- tzinfo (1.2.6)
54
- thread_safe (~> 0.1)
55
- zeitwerk (2.2.2)
52
+ tzinfo (2.0.4)
53
+ concurrent-ruby (~> 1.0)
54
+ zeitwerk (2.5.4)
56
55
 
57
56
  PLATFORMS
58
57
  ruby
@@ -27,6 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'sinatra-contrib', '~> 2.0'
28
28
  spec.add_dependency 'sinatra', '~> 2.0', '>= 2.0.3'
29
29
  spec.add_dependency 'nokogiri', '~> 1.8', '>= 1.8.2'
30
- spec.add_dependency 'activesupport', '>= 5.2'
30
+ spec.add_dependency 'activesupport', '~> 6.1'
31
31
  spec.add_dependency 'ruby-mcrypt', '~> 0.2'
32
32
  end
@@ -1,5 +1,6 @@
1
1
  require 'nokogiri'
2
2
  require 'base64'
3
+ require 'active_support'
3
4
  require 'active_support/core_ext/string'
4
5
  module EtFakeAcasServer
5
6
  class CertificateLookupForm
@@ -0,0 +1,22 @@
1
+ require 'base64'
2
+ require 'active_support'
3
+ require 'active_support/core_ext/string'
4
+ module EtFakeAcasServer
5
+ class CertificatesLookupForm
6
+ def initialize(payload)
7
+ self.payload = JSON.parse(payload)
8
+ end
9
+
10
+ def validate
11
+
12
+ end
13
+
14
+ def certificate_numbers
15
+ payload['CertificateNumbers']
16
+ end
17
+
18
+ private
19
+
20
+ attr_accessor :payload
21
+ end
22
+ end
@@ -0,0 +1,62 @@
1
+ require 'sinatra/base'
2
+ require 'sinatra/custom_logger'
3
+ require 'logger'
4
+ require 'et_fake_acas_server/forms/certificates_lookup_form'
5
+ require 'active_support'
6
+ require 'active_support/core_ext/numeric/time'
7
+ require 'base64'
8
+
9
+
10
+ module EtFakeAcasServer
11
+ class JsonServer < Sinatra::Base
12
+ def initialize(*)
13
+ super
14
+ self.subscription_key = ENV.fetch('ACAS_JSON_SUBSCRIPTION_KEY', 'fakesubscriptionkeyfortesting')
15
+ end
16
+
17
+ configure :development, :production do
18
+ logger = Logger.new(STDOUT)
19
+ logger.level = Logger::DEBUG
20
+ set :logger, logger
21
+ end
22
+
23
+ post '/ECCLJson' do
24
+ form = CertificatesLookupForm.new(request.body.read)
25
+ request.body.rewind
26
+ form.validate
27
+ json = form.certificate_numbers.map do |certificate_number|
28
+ case certificate_number
29
+ when /\A(R|NE|MU)000200/ then
30
+ json_builder_for_no_match(certificate_number)
31
+ else
32
+ json_builder_for_found(certificate_number)
33
+ end
34
+ end
35
+ JSON.pretty_generate(json)
36
+ end
37
+
38
+ private
39
+
40
+ attr_accessor :subscription_key
41
+
42
+ def json_builder_for_no_match(certificate_number)
43
+ {
44
+ CertificateNumber: certificate_number,
45
+ CertificateDocument: 'not found'
46
+ }
47
+ end
48
+
49
+ def json_builder_for_found(certificate_number)
50
+ {
51
+ CertificateNumber: certificate_number,
52
+ CertificateDocument: dummy_certificate_as_base_64
53
+ }
54
+ end
55
+
56
+ def dummy_certificate_as_base_64
57
+ filename = File.absolute_path(File.join('..', 'pdfs', '76 EC (C) Certificate R000080.pdf'), __dir__)
58
+ Base64.encode64(File.read(filename))
59
+ end
60
+ end
61
+ end
62
+
@@ -1,71 +1,12 @@
1
1
  require 'sinatra/base'
2
2
  require 'sinatra/custom_logger'
3
3
  require 'logger'
4
- require 'et_fake_acas_server/forms/certificate_lookup_form'
5
- require 'et_fake_acas_server/xml_builders/found_xml_builder'
6
- require 'et_fake_acas_server/xml_builders/no_match_xml_builder'
7
- require 'et_fake_acas_server/xml_builders/internal_error_xml_builder'
8
- require 'et_fake_acas_server/xml_builders/invalid_certificate_format_xml_builder'
9
- require 'active_support/core_ext/numeric/time'
10
-
4
+ require 'et_fake_acas_server/soap_server'
5
+ require 'et_fake_acas_server/json_server'
11
6
 
12
7
  module EtFakeAcasServer
13
8
  class Server < Sinatra::Base
14
- def initialize(*)
15
- super
16
- self.private_key_file = ENV.fetch('ACAS_PRIVATE_KEY_FILE', File.absolute_path(File.join('..', '..', 'temp_x509', 'acas', 'privatekey.pem'), __dir__))
17
- self.et_public_key_file = ENV.fetch('ET_PUBLIC_KEY_FILE', File.absolute_path(File.join('..', '..', 'temp_x509', 'et', 'publickey.cer'), __dir__))
18
- end
19
-
20
- configure :development, :production do
21
- logger = Logger.new(STDOUT)
22
- logger.level = Logger::DEBUG
23
- set :logger, logger
24
- end
25
-
26
- post '/Lookup/ECService.svc' do
27
- form = CertificateLookupForm.new(request.body.read, private_key_file: private_key_file)
28
- request.body.rewind
29
- form.validate
30
- case form.certificate_number
31
- when /\A(R|NE|MU)000200/ then
32
- xml_builder_for_no_match(form).to_xml
33
- when /\A(R|NE|MU)000201/ then
34
- xml_builder_for_invalid_certificate_format(form).to_xml
35
- when /\A(R|NE|MU)000500/ then
36
- xml_builder_for_internal_error(form).to_xml
37
- else
38
- xml_builder_for_found(form).to_xml
39
- end
40
- end
41
-
42
- private
43
-
44
- attr_accessor :private_key_file, :et_public_key_file
45
-
46
- def xml_builder_for_found(form)
47
- data = OpenStruct.new claimant_name: 'Claimant’s Name',
48
- respondent_name: 'Respondent’s Name',
49
- date_of_issue: Time.parse('1 December 2017 12:00:00'),
50
- date_of_receipt: Time.parse('1 January 2017 12:00:00'),
51
- certificate_number: form.certificate_number,
52
- message: 'CertificateFound',
53
- method_of_issue: 'Email',
54
- certificate_file: File.absolute_path(File.join('..', 'pdfs', '76 EC (C) Certificate R000080.pdf'), __dir__)
55
- FoundXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder(data)
56
- end
57
-
58
- def xml_builder_for_no_match(form)
59
- NoMatchXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder
60
- end
61
-
62
- def xml_builder_for_internal_error(form)
63
- InternalErrorXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder
64
- end
65
-
66
- def xml_builder_for_invalid_certificate_format(form)
67
- InvalidCertificateFormatXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder
68
- end
9
+ post(/\/Lookup\/.*/) { SoapServer.call(env) }
10
+ post(/\/ECCLJson/) { JsonServer.call(env) }
69
11
  end
70
12
  end
71
-
@@ -0,0 +1,72 @@
1
+ require 'sinatra/base'
2
+ require 'sinatra/custom_logger'
3
+ require 'logger'
4
+ require 'et_fake_acas_server/forms/certificate_lookup_form'
5
+ require 'et_fake_acas_server/xml_builders/found_xml_builder'
6
+ require 'et_fake_acas_server/xml_builders/no_match_xml_builder'
7
+ require 'et_fake_acas_server/xml_builders/internal_error_xml_builder'
8
+ require 'et_fake_acas_server/xml_builders/invalid_certificate_format_xml_builder'
9
+ require 'active_support'
10
+ require 'active_support/core_ext/numeric/time'
11
+
12
+
13
+ module EtFakeAcasServer
14
+ class SoapServer < Sinatra::Base
15
+ def initialize(*)
16
+ super
17
+ self.private_key_file = ENV.fetch('ACAS_PRIVATE_KEY_FILE', File.absolute_path(File.join('..', '..', 'temp_x509', 'acas', 'privatekey.pem'), __dir__))
18
+ self.et_public_key_file = ENV.fetch('ET_PUBLIC_KEY_FILE', File.absolute_path(File.join('..', '..', 'temp_x509', 'et', 'publickey.cer'), __dir__))
19
+ end
20
+
21
+ configure :development, :production do
22
+ logger = Logger.new(STDOUT)
23
+ logger.level = Logger::DEBUG
24
+ set :logger, logger
25
+ end
26
+
27
+ post '/Lookup/ECService.svc' do
28
+ form = CertificateLookupForm.new(request.body.read, private_key_file: private_key_file)
29
+ request.body.rewind
30
+ form.validate
31
+ case form.certificate_number
32
+ when /\A(R|NE|MU)000200/ then
33
+ xml_builder_for_no_match(form).to_xml
34
+ when /\A(R|NE|MU)000201/ then
35
+ xml_builder_for_invalid_certificate_format(form).to_xml
36
+ when /\A(R|NE|MU)000500/ then
37
+ xml_builder_for_internal_error(form).to_xml
38
+ else
39
+ xml_builder_for_found(form).to_xml
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ attr_accessor :private_key_file, :et_public_key_file
46
+
47
+ def xml_builder_for_found(form)
48
+ data = OpenStruct.new claimant_name: 'Claimant’s Name',
49
+ respondent_name: 'Respondent’s Name',
50
+ date_of_issue: Time.parse('1 December 2017 12:00:00'),
51
+ date_of_receipt: Time.parse('1 January 2017 12:00:00'),
52
+ certificate_number: form.certificate_number,
53
+ message: 'CertificateFound',
54
+ method_of_issue: 'Email',
55
+ certificate_file: File.absolute_path(File.join('..', 'pdfs', '76 EC (C) Certificate R000080.pdf'), __dir__)
56
+ FoundXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder(data)
57
+ end
58
+
59
+ def xml_builder_for_no_match(form)
60
+ NoMatchXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder
61
+ end
62
+
63
+ def xml_builder_for_internal_error(form)
64
+ InternalErrorXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder
65
+ end
66
+
67
+ def xml_builder_for_invalid_certificate_format(form)
68
+ InvalidCertificateFormatXmlBuilder.new(form, rsa_et_certificate_path: et_public_key_file).builder
69
+ end
70
+ end
71
+ end
72
+
@@ -1,3 +1,3 @@
1
1
  module EtFakeAcasServer
2
- VERSION = "0.1.10"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: et_fake_acas_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary Taylor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-21 00:00:00.000000000 Z
11
+ date: 2022-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -110,16 +110,16 @@ dependencies:
110
110
  name: activesupport
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - ">="
113
+ - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: '5.2'
115
+ version: '6.1'
116
116
  type: :runtime
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - ">="
120
+ - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: '5.2'
122
+ version: '6.1'
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: ruby-mcrypt
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -159,7 +159,10 @@ files:
159
159
  - lib/config.ru
160
160
  - lib/et_fake_acas_server.rb
161
161
  - lib/et_fake_acas_server/forms/certificate_lookup_form.rb
162
+ - lib/et_fake_acas_server/forms/certificates_lookup_form.rb
163
+ - lib/et_fake_acas_server/json_server.rb
162
164
  - lib/et_fake_acas_server/server.rb
165
+ - lib/et_fake_acas_server/soap_server.rb
163
166
  - lib/et_fake_acas_server/version.rb
164
167
  - lib/et_fake_acas_server/xml_builders/found_xml_builder.rb
165
168
  - lib/et_fake_acas_server/xml_builders/internal_error_xml_builder.rb
@@ -190,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
193
  - !ruby/object:Gem::Version
191
194
  version: '0'
192
195
  requirements: []
193
- rubygems_version: 3.0.6
196
+ rubygems_version: 3.1.6
194
197
  signing_key:
195
198
  specification_version: 4
196
199
  summary: Employment Tribunal (govuk) fake acas server