autosign 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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