validocno 0.2.0 → 0.2.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.
@@ -1,3 +1,3 @@
1
1
  module Validocno
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -0,0 +1,40 @@
1
+ <div id="content1left" class="content" style="min-height: 500px;">
2
+ <br>
3
+ <p>
4
+ Teil on võimalus kontrollida isikut tõendavate dokumentide kehtivust,
5
+ kui sisestate dokumendi numbri. <b>NB!</b> Dokumendi numbris olevad tähed palume sisestada läbivalt suurte tähtedega.
6
+ </p>
7
+ <br>
8
+ <form name="reqForm" method="post" action="">
9
+ <input type="hidden" name="cmd" value="request">
10
+ <input type="hidden" name="csrf" value="iiGifsNdIY/OVVbEXnh3hMLtJgXsKomOlWKClE2DozCAo/KdBk0N7g==">
11
+ <table class="form">
12
+ <tbody>
13
+ <tr>
14
+ <td class="label">Dokumendi number:</td>
15
+ <td>
16
+ <input class="basicInputText" type="text"
17
+ name="docNumber" size="20" maxlength="20" value="">
18
+ </td>
19
+ </tr>
20
+ <tr>
21
+ <td colspan="2">
22
+ </td>
23
+ </tr>
24
+ <tr>
25
+ <td colspan="2">
26
+ </td>
27
+ </tr>
28
+ <tr>
29
+ <td>
30
+ </td>
31
+ <td>
32
+ <input class="basicInputButton button100px" type="submit"
33
+ name="subButton" value="Esita päring">
34
+ </td>
35
+ </tr>
36
+ </tbody>
37
+ </table>
38
+ </form>
39
+ <br>
40
+ </div>
@@ -0,0 +1,13 @@
1
+ <html>
2
+ <head>
3
+ <title>Wrong structure</title>
4
+ </head>
5
+ <body>
6
+ <div id="wrong">
7
+ <h1>Hello World</h1>
8
+ <p>
9
+ Wrong structure
10
+ </p>
11
+ </div>
12
+ </body>
13
+ </html>
@@ -0,0 +1,41 @@
1
+ <div id="content1left" class="content" style="min-height: 500px;">
2
+ <br>
3
+ <p>
4
+ Teil on võimalus kontrollida isikut tõendavate dokumentide kehtivust,
5
+ kui sisestate dokumendi numbri. <b>NB!</b> Dokumendi numbris olevad tähed palume sisestada läbivalt suurte tähtedega.
6
+ </p>
7
+ <br>
8
+ <form name="reqForm" method="post" action="">
9
+ <input type="hidden" name="cmd" value="request">
10
+ <input type="hidden" name="csrf" value="iiGifsNdIY/OVVbEXnh3hMLtJgXsKomOlWKClE2DozCAo/KdBk0N7g==">
11
+ <table class="form">
12
+ <tbody>
13
+ <tr>
14
+ <td class="label">Dokumendi number:</td>
15
+ <td>
16
+ <input class="basicInputText" type="text"
17
+ name="docNumber" size="20" maxlength="20" value="">
18
+ </td>
19
+ </tr>
20
+ <tr>
21
+ <td colspan="2">
22
+ </td>
23
+ </tr>
24
+ <tr>
25
+ <td colspan="2">
26
+ </td>
27
+ </tr>
28
+ <tr>
29
+ <td>
30
+ </td>
31
+ <td>
32
+ <input class="basicInputButton button100px" type="submit"
33
+ name="subButton" value="Esita päring">
34
+ </td>
35
+ </tr>
36
+ </tbody>
37
+ </table>
38
+ </form>
39
+ <br>
40
+ Dokument A1234567 on kehtiv.
41
+ </div>
data/spec/spec_helper.rb CHANGED
@@ -1 +1,4 @@
1
1
  require 'validocno'
2
+ require 'webmock/rspec'
3
+
4
+ WebMock.disable_net_connect!(:allow_localhost => true)
@@ -3,9 +3,41 @@ require 'spec_helper'
3
3
  describe Validocno::Validator do
4
4
  let(:doc_number) { 'A1234567' }
5
5
  let(:validator) { Validocno::Validator.new(doc_number) }
6
+ let(:get_response) do
7
+ body = File.new('spec/fixtures/get_response.html').read
8
+ Nokogiri::HTML(body)
9
+ end
10
+
11
+ let(:valid_nr_response) do
12
+ body = File.new('spec/fixtures/post_response.html').read
13
+ Nokogiri::HTML(body)
14
+ end
15
+
16
+ let(:expired_nr_response) do
17
+ body = File.new('spec/fixtures/post_response.html').read
18
+ body = body.gsub('A1234567', 'A0111856')
19
+ body = body.gsub('kehtiv', 'kehtetu')
20
+ Nokogiri::HTML(body)
21
+ end
22
+
23
+ let(:invalid_nr_response) do
24
+ body = File.new('spec/fixtures/post_response.html').read
25
+ body = body.gsub('A1234567', 'A1234567890')
26
+ body = body.gsub(
27
+ 'Dokument A1234567890 on kehtiv.',
28
+ 'Dokumenti A1234567890 ei ole välja antud.'
29
+ )
30
+ Nokogiri::HTML(body)
31
+ end
32
+
33
+ let(:invalid_post_response) do
34
+ body = File.new('spec/fixtures/invalid_post_response.html').read
35
+ Nokogiri::HTML(body)
36
+ end
6
37
 
7
38
  describe '.new' do
8
39
  it 'initializes with a document number' do
40
+ mock_response_with :get, :get
9
41
  expect(validator).to be
10
42
  expect { validator }.to_not raise_error
11
43
  end
@@ -15,23 +47,32 @@ describe Validocno::Validator do
15
47
  end
16
48
 
17
49
  it 'sets csrf_token instance variable' do
50
+ mock_response_with :get, :get
18
51
  expect(validator.csrf_token).to_not be_nil
19
52
  end
20
-
21
53
  end
22
54
 
23
55
  describe '#validate' do
24
56
  let(:invalid_doc_number) { 'A1234567890' }
25
57
  let(:expired_doc_number) { 'A0111856' }
26
- let(:validator_with_invalid) { Validocno::Validator.new(invalid_doc_number) }
27
- let(:validator_with_expired) { Validocno::Validator.new(expired_doc_number) }
58
+ let(:validator_with_invalid) do
59
+ Validocno::Validator.new(invalid_doc_number)
60
+ end
61
+
62
+ let(:validator_with_expired) do
63
+ Validocno::Validator.new(expired_doc_number)
64
+ end
28
65
 
29
66
  it 'returns hash with :valid and :message keys' do
67
+ mock_response_with :get, :get
68
+ mock_response_with :post, :valid_nr
30
69
  expect(validator.validate).to have_key(:valid)
31
70
  expect(validator.validate).to have_key(:message)
32
71
  end
33
72
 
34
73
  it 'validates document with valid number' do
74
+ mock_response_with :get, :get
75
+ mock_response_with :post, :valid_nr
35
76
  expect(validator.validate).to include(
36
77
  :valid => true,
37
78
  :message => "Dokument #{doc_number} on kehtiv."
@@ -39,6 +80,8 @@ describe Validocno::Validator do
39
80
  end
40
81
 
41
82
  it 'validates expired document' do
83
+ mock_response_with :get, :get
84
+ mock_response_with :post, :expired_nr
42
85
  expect(validator_with_expired.validate).to include(
43
86
  :valid => false,
44
87
  :message => "Dokument #{expired_doc_number} on kehtetu."
@@ -46,10 +89,26 @@ describe Validocno::Validator do
46
89
  end
47
90
 
48
91
  it 'validates document with invalid number' do
92
+ mock_response_with :get, :get
93
+ mock_response_with :post, :invalid_nr
49
94
  expect(validator_with_invalid.validate).to include(
50
95
  :valid => false,
51
96
  :message => "Dokumenti #{invalid_doc_number} ei ole välja antud."
52
97
  )
53
98
  end
99
+
100
+ it 'fails if node not found' do
101
+ mock_response_with :get, :get
102
+ mock_response_with :post, :invalid_post
103
+ expect { validator.validate }.to raise_error(StandardError)
104
+ end
105
+ end
106
+
107
+ private
108
+
109
+ def mock_response_with(type, response)
110
+ allow(Validocno::Client).to receive(type) { send("#{response}_response") }
111
+ allow_any_instance_of(Validocno::Validator).
112
+ to receive(:check_response) { true }
54
113
  end
55
114
  end
@@ -2,38 +2,14 @@ require 'spec_helper'
2
2
 
3
3
  describe Validocno do
4
4
  describe '.validate' do
5
- let(:valid_doc_number) { 'A1234567' }
6
- let(:expired_doc_number) { 'A0111856' }
7
- let(:invalid_doc_number) { 'A1234567890' }
8
-
9
- it 'returns hash with :valid and :message keys' do
10
- expect(Validocno.validate(valid_doc_number)).to have_key(:valid)
11
- expect(Validocno.validate(valid_doc_number)).to have_key(:message)
12
- end
13
-
14
- it 'validates document with valid number' do
15
- expect(Validocno.validate(valid_doc_number)).to include(
16
- :valid => true,
17
- :message => "Dokument #{valid_doc_number} on kehtiv."
18
- )
19
- end
20
-
21
- it 'validates expired document' do
22
- expect(Validocno.validate(expired_doc_number)).to include(
23
- :valid => false,
24
- :message => "Dokument #{expired_doc_number} on kehtetu."
25
- )
26
- end
27
-
28
- it 'validates document with invalid number' do
29
- expect(Validocno.validate(invalid_doc_number)).to include(
30
- :valid => false,
31
- :message => "Dokumenti #{invalid_doc_number} ei ole välja antud."
32
- )
33
- end
34
-
35
- it 'raises an error without a document number' do
36
- expect { Validocno.validate }.to raise_error(ArgumentError)
5
+ let(:number) { 'A1234567' }
6
+
7
+ it 'calls Validocno::Validator#validate' do
8
+ allow_any_instance_of(Validocno::Validator).to receive(:csrf_token) {
9
+ 'iiGifsNdIY/OVVbEXnh3hMLtJgXsKomOlWKClE2DozCAo/KdBk0N7g=='
10
+ }
11
+ expect_any_instance_of(Validocno::Validator).to receive(:validate)
12
+ Validocno.validate(number)
37
13
  end
38
14
  end
39
15
  end
data/validocno.gemspec CHANGED
@@ -27,4 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'bundler', '~> 1.7'
28
28
  spec.add_development_dependency 'rake', '~> 10.0'
29
29
  spec.add_development_dependency 'rspec', '~> 3.1.0'
30
+ spec.add_development_dependency 'webmock', '~> 1.20.0'
30
31
  end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validocno
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ hash: 21
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 1
10
+ version: 0.2.1
5
11
  platform: ruby
6
12
  authors:
7
13
  - Artem Pakk
@@ -9,59 +15,100 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2014-12-04 00:00:00 Z
18
+ date: 2014-12-09 00:00:00 Z
13
19
  dependencies:
14
20
  - !ruby/object:Gem::Dependency
15
21
  requirement: &id001 !ruby/object:Gem::Requirement
22
+ none: false
16
23
  requirements:
17
24
  - - "="
18
25
  - !ruby/object:Gem::Version
26
+ hash: 51
27
+ segments:
28
+ - 0
29
+ - 11
30
+ - 0
19
31
  version: 0.11.0
20
- prerelease: false
21
32
  version_requirements: *id001
22
- type: :runtime
33
+ prerelease: false
23
34
  name: httparty
35
+ type: :runtime
24
36
  - !ruby/object:Gem::Dependency
25
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
26
39
  requirements:
27
- - &id006
28
- - ">="
40
+ - - ">="
29
41
  - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
30
45
  version: "0"
31
- prerelease: false
32
46
  version_requirements: *id002
33
- type: :runtime
47
+ prerelease: false
34
48
  name: nokogiri
49
+ type: :runtime
35
50
  - !ruby/object:Gem::Dependency
36
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
37
53
  requirements:
38
54
  - - ~>
39
55
  - !ruby/object:Gem::Version
56
+ hash: 1
57
+ segments:
58
+ - 1
59
+ - 7
40
60
  version: "1.7"
41
- prerelease: false
42
61
  version_requirements: *id003
43
- type: :development
62
+ prerelease: false
44
63
  name: bundler
64
+ type: :development
45
65
  - !ruby/object:Gem::Dependency
46
66
  requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
47
68
  requirements:
48
69
  - - ~>
49
70
  - !ruby/object:Gem::Version
71
+ hash: 35
72
+ segments:
73
+ - 10
74
+ - 0
50
75
  version: "10.0"
51
- prerelease: false
52
76
  version_requirements: *id004
53
- type: :development
77
+ prerelease: false
54
78
  name: rake
79
+ type: :development
55
80
  - !ruby/object:Gem::Dependency
56
81
  requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
57
83
  requirements:
58
84
  - - ~>
59
85
  - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 3
89
+ - 1
90
+ - 0
60
91
  version: 3.1.0
61
- prerelease: false
62
92
  version_requirements: *id005
63
- type: :development
93
+ prerelease: false
64
94
  name: rspec
95
+ type: :development
96
+ - !ruby/object:Gem::Dependency
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ hash: 71
103
+ segments:
104
+ - 1
105
+ - 20
106
+ - 0
107
+ version: 1.20.0
108
+ version_requirements: *id006
109
+ prerelease: false
110
+ name: webmock
111
+ type: :development
65
112
  description: Ruby gem to check validity of Estonian ID card
66
113
  email:
67
114
  - artem.pakk@deskrock.ee
@@ -83,6 +130,9 @@ files:
83
130
  - lib/validocno/validator.rb
84
131
  - lib/validocno/version.rb
85
132
  - rubocop.yml
133
+ - spec/fixtures/get_response.html
134
+ - spec/fixtures/invalid_post_response.html
135
+ - spec/fixtures/post_response.html
86
136
  - spec/spec_helper.rb
87
137
  - spec/validator_spec.rb
88
138
  - spec/validocno_spec.rb
@@ -90,29 +140,42 @@ files:
90
140
  homepage: https://github.com/deskrock/validocno
91
141
  licenses:
92
142
  - MIT
93
- metadata: {}
94
-
95
143
  post_install_message:
96
144
  rdoc_options: []
97
145
 
98
146
  require_paths:
99
147
  - lib
100
148
  required_ruby_version: !ruby/object:Gem::Requirement
149
+ none: false
101
150
  requirements:
102
151
  - - ">="
103
152
  - !ruby/object:Gem::Version
153
+ hash: 57
154
+ segments:
155
+ - 1
156
+ - 8
157
+ - 7
104
158
  version: 1.8.7
105
159
  required_rubygems_version: !ruby/object:Gem::Requirement
160
+ none: false
106
161
  requirements:
107
- - *id006
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ hash: 3
165
+ segments:
166
+ - 0
167
+ version: "0"
108
168
  requirements: []
109
169
 
110
170
  rubyforge_project:
111
- rubygems_version: 2.0.14
171
+ rubygems_version: 1.8.29
112
172
  signing_key:
113
- specification_version: 4
173
+ specification_version: 3
114
174
  summary: Estonian ID card validator
115
175
  test_files:
176
+ - spec/fixtures/get_response.html
177
+ - spec/fixtures/invalid_post_response.html
178
+ - spec/fixtures/post_response.html
116
179
  - spec/spec_helper.rb
117
180
  - spec/validator_spec.rb
118
181
  - spec/validocno_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 4a796e1c3ed9671f9be2b7cb8a9e13d322cc10e5
4
- data.tar.gz: 19f89fc43a3ab2ee3aa7be6e5ef9e0c06c632c02
5
- SHA512:
6
- metadata.gz: c420d0018f0e9f22a016236c44def340e76283d2ec7710e32eb897d071c2abedec329dec404647bf5d976fe90fdc9382d382ed10508860ab8902494715690809
7
- data.tar.gz: 9d596965f101a95758056b53cd07759dfb44d18a9e2fa55ca6c509cdc2ea182734e6639d690c0195e6ed4ae28c240db6b693809037902dc262a853a13eec8451