autosign 0.0.2 → 0.0.3

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.
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+ require 'securerandom'
3
+
4
+ context Autosign::Validators::JWT do
5
+ let(:certname) { 'host.example.com' }
6
+ let(:validator) { Autosign::Validators::JWT.new }
7
+
8
+ let(:one_time_token) { Autosign::Token.new('foo.example.com', false, 3600, 'rspec_test', 'secret').sign }
9
+ let(:reusable_token) { Autosign::Token.new('foo.example.com', true, 3600, 'rspec_test', 'secret').sign }
10
+ let(:expired_token) { Autosign::Token.new('foo.example.com', true, -1, 'rspec_test', 'secret').sign }
11
+
12
+ before {
13
+ # stub configuration
14
+ data = { 'general' => {
15
+ 'loglevel' => :debug,
16
+ 'logfile' => '/tmp/autosign.log'
17
+ },
18
+ 'jwt_token' => {
19
+ 'secret' => 'secret',
20
+ 'validity' => 3600,
21
+ 'journalfile' => '/tmp/autosign.journal'
22
+ }
23
+ }
24
+ allow_any_instance_of(Autosign::Config).to receive(:settings).and_return(data)
25
+ }
26
+
27
+
28
+ context 'class methods' do
29
+ describe '.new' do
30
+ it 'requires no parameters' do
31
+ expect { Autosign::Validators::JWT.new() }.to_not raise_error
32
+ end
33
+ end
34
+ end
35
+
36
+ context 'instance methods' do
37
+ describe '.name' do
38
+ it 'returns a string' do
39
+ expect(validator.name).to be_a(String)
40
+ end
41
+ it 'returns the string "jwt_token"' do
42
+ expect(validator.name).to eq('jwt_token')
43
+ end
44
+ end
45
+ describe '.validate' do
46
+ it 'validates a JWT token' do
47
+ expect(validator.validate(one_time_token, 'foo.example.com', 'dummy_csr_data')).to be true
48
+ end
49
+ it 'does not validate a token with the wrong hostname' do
50
+ expect(validator.validate(one_time_token, 'wrong.example.com', 'dummy_csr_data')).to be false
51
+ end
52
+ it 'does not validate an expired token' do
53
+ expect(validator.validate(expired_token, 'foo.example.com', 'dummy_csr_data')).to be false
54
+ end
55
+ it 'does not validate an invalid token' do
56
+ expect(validator.validate(SecureRandom.urlsafe_base64(200), 'foo.example.com', 'dummy_csr_data')).to be false
57
+ end
58
+ it 'does not validate a re-used one-time token' do
59
+ expect(validator.validate(one_time_token, 'foo.example.com', 'dummy_csr_data')).to be true
60
+ expect(validator.validate(one_time_token, 'foo.example.com', 'dummy_csr_data')).to be false
61
+ end
62
+ it 'does validate a re-used re-usable token' do
63
+ expect(validator.validate(reusable_token, 'foo.example.com', 'dummy_csr_data')).to be true
64
+ expect(validator.validate(reusable_token, 'foo.example.com', 'dummy_csr_data')).to be true
65
+ end
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+ require 'securerandom'
3
+
4
+ context Autosign::Validators::Passwordlist do
5
+ let(:certname) { 'host.example.com' }
6
+ let(:validator) { Autosign::Validators::Passwordlist.new }
7
+
8
+ before {
9
+ # stub configuration
10
+ data = { 'general' => {
11
+ 'loglevel' => :debug,
12
+ 'logfile' => '/tmp/autosign.log'
13
+ },
14
+ 'password_list' => {
15
+ 'password' => ['hunter2', 'opensesame', 'CPE1704TKS']
16
+ }
17
+ }
18
+ allow_any_instance_of(Autosign::Config).to receive(:settings).and_return(data)
19
+ }
20
+
21
+ context 'class methods' do
22
+ describe '.new' do
23
+ it 'requires no parameters' do
24
+ expect { Autosign::Validators::Passwordlist.new() }.to_not raise_error
25
+ end
26
+ end
27
+ end
28
+
29
+ context 'instance methods' do
30
+ describe '.name' do
31
+ it 'returns a string' do
32
+ expect(validator.name).to be_a(String)
33
+ end
34
+ it 'returns the string "password_list"' do
35
+ expect(validator.name).to eq('password_list')
36
+ end
37
+ end
38
+ describe '.validate' do
39
+ it 'validates a request with a valid password' do
40
+ expect(validator.validate('hunter2', 'foo.example.com', 'dummy_csr_data')).to be true
41
+ expect(validator.validate('opensesame', 'foo.example.com', 'dummy_csr_data')).to be true
42
+ expect(validator.validate('CPE1704TKS', 'foo.example.com', 'dummy_csr_data')).to be true
43
+ end
44
+ it 'does not validate a request with an invalid password' do
45
+ expect(validator.validate('bad_password', 'foo.example.com', 'dummy_csr_data')).to be false
46
+ expect(validator.validate('', 'foo.example.com', 'dummy_csr_data')).to be false
47
+ end
48
+ end
49
+
50
+ end
51
+ end
metadata CHANGED
@@ -1,214 +1,240 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autosign
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Your Name Here
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-14 00:00:00.000000000 Z
11
+ date: 2015-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '10'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '4'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: aruba
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '0.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '0.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: cucumber
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: puppet
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
74
102
  - !ruby/object:Gem::Version
75
103
  version: '0'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - ">="
108
+ - - ! '>='
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: gli
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - "~>"
115
+ - - ~>
88
116
  - !ruby/object:Gem::Version
89
117
  version: '2'
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - "~>"
122
+ - - ~>
95
123
  - !ruby/object:Gem::Version
96
124
  version: '2'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: jwt
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - "~>"
129
+ - - ~>
102
130
  - !ruby/object:Gem::Version
103
131
  version: '1'
104
132
  type: :runtime
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
- - - "~>"
136
+ - - ~>
109
137
  - !ruby/object:Gem::Version
110
138
  version: '1'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: iniparse
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - "~>"
143
+ - - ~>
116
144
  - !ruby/object:Gem::Version
117
145
  version: '1'
118
146
  type: :runtime
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
- - - "~>"
150
+ - - ~>
123
151
  - !ruby/object:Gem::Version
124
152
  version: '1'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: logging
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
- - - ">="
157
+ - - ~>
130
158
  - !ruby/object:Gem::Version
131
- version: '0'
159
+ version: '2'
132
160
  type: :runtime
133
161
  prerelease: false
134
162
  version_requirements: !ruby/object:Gem::Requirement
135
163
  requirements:
136
- - - ">="
164
+ - - ~>
137
165
  - !ruby/object:Gem::Version
138
- version: '0'
166
+ version: '2'
139
167
  - !ruby/object:Gem::Dependency
140
168
  name: json
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - ">="
171
+ - - ~>
144
172
  - !ruby/object:Gem::Version
145
- version: '0'
173
+ version: '1'
146
174
  type: :runtime
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - ">="
178
+ - - ~>
151
179
  - !ruby/object:Gem::Version
152
- version: '0'
180
+ version: '1'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: deep_merge
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
- - - ">="
185
+ - - ~>
158
186
  - !ruby/object:Gem::Version
159
- version: '0'
187
+ version: '1'
160
188
  type: :runtime
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
- - - ">="
192
+ - - ~>
165
193
  - !ruby/object:Gem::Version
166
- version: '0'
194
+ version: '1'
167
195
  - !ruby/object:Gem::Dependency
168
196
  name: require_all
169
197
  requirement: !ruby/object:Gem::Requirement
170
198
  requirements:
171
- - - ">="
199
+ - - ~>
172
200
  - !ruby/object:Gem::Version
173
- version: '0'
201
+ version: '1'
174
202
  type: :runtime
175
203
  prerelease: false
176
204
  version_requirements: !ruby/object:Gem::Requirement
177
205
  requirements:
178
- - - ">="
206
+ - - ~>
179
207
  - !ruby/object:Gem::Version
180
- version: '0'
208
+ version: '1'
181
209
  - !ruby/object:Gem::Dependency
182
210
  name: yard
183
211
  requirement: !ruby/object:Gem::Requirement
184
212
  requirements:
185
- - - ">="
213
+ - - ~>
186
214
  - !ruby/object:Gem::Version
187
- version: '0'
215
+ version: '0.8'
188
216
  type: :runtime
189
217
  prerelease: false
190
218
  version_requirements: !ruby/object:Gem::Requirement
191
219
  requirements:
192
- - - ">="
220
+ - - ~>
193
221
  - !ruby/object:Gem::Version
194
- version: '0'
222
+ version: '0.8'
195
223
  description:
196
224
  email: your@email.address.com
197
225
  executables:
198
226
  - autosign
199
227
  extensions: []
200
- extra_rdoc_files:
201
- - README.rdoc
202
- - autosign.rdoc
228
+ extra_rdoc_files: []
203
229
  files:
204
- - ".travis.yml"
230
+ - .gitignore
231
+ - .rspec
232
+ - .travis.yml
205
233
  - Gemfile
206
234
  - Gemfile.lock
207
235
  - README.md
208
- - README.rdoc
209
236
  - Rakefile
210
237
  - autosign.gemspec
211
- - autosign.rdoc
212
238
  - bin/autosign
213
239
  - bin/autosign-validator
214
240
  - features/autosign.feature
@@ -220,38 +246,45 @@ files:
220
246
  - lib/autosign/config.rb
221
247
  - lib/autosign/decoder.rb
222
248
  - lib/autosign/journal.rb
223
- - lib/autosign/logger.rb
224
249
  - lib/autosign/token.rb
225
250
  - lib/autosign/validator.rb
226
251
  - lib/autosign/validators/jwt.rb
227
252
  - lib/autosign/validators/multiplexer.rb
253
+ - lib/autosign/validators/passwordlist.rb
228
254
  - lib/autosign/version.rb
255
+ - spec/spec_helper.rb
256
+ - spec/specs/config_spec.rb
257
+ - spec/specs/decoder_spec.rb
258
+ - spec/specs/journal_spec.rb
259
+ - spec/specs/token_spec.rb
260
+ - spec/specs/validators/jwt_spec.rb
261
+ - spec/specs/validators/passwordlist_spec.rb
229
262
  homepage: http://your.website.com
230
263
  licenses: []
231
264
  metadata: {}
232
265
  post_install_message:
233
266
  rdoc_options:
234
- - "--title"
267
+ - --title
235
268
  - autosign
236
- - "--main"
269
+ - --main
237
270
  - README.rdoc
238
- - "-ri"
271
+ - -ri
239
272
  require_paths:
240
273
  - lib
241
274
  - lib
242
275
  required_ruby_version: !ruby/object:Gem::Requirement
243
276
  requirements:
244
- - - ">="
277
+ - - ! '>='
245
278
  - !ruby/object:Gem::Version
246
279
  version: '0'
247
280
  required_rubygems_version: !ruby/object:Gem::Requirement
248
281
  requirements:
249
- - - ">="
282
+ - - ! '>='
250
283
  - !ruby/object:Gem::Version
251
284
  version: '0'
252
285
  requirements: []
253
286
  rubyforge_project:
254
- rubygems_version: 2.2.2
287
+ rubygems_version: 2.4.5
255
288
  signing_key:
256
289
  specification_version: 4
257
290
  summary: A description of your project