has_a_token 0.3.1 → 0.3.2
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.
- checksums.yaml +4 -4
- data/README.md +5 -0
- data/Rakefile +13 -0
- data/has_a_token.gemspec +6 -6
- data/lib/has_a_token/generator.rb +9 -6
- data/lib/has_a_token/version.rb +1 -1
- data/test/test_helper.rb +1 -1
- data/test/{test_token_generator.rb → token_generator_test.rb} +15 -3
- metadata +28 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e20722781a4d729f3b67521dab495abc49a6ccea
|
4
|
+
data.tar.gz: 97bd518d14cebbc6cbca39fe0c60d4c83fb246f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efe23ab4aceb6abb9e4db0e735690488dbd65448d64fe7a17ae9e715615aeb0bd791acc0a4debd8829dcb49f16bdd278a614e554fae4d6c6cb06e9cf5cc354cf
|
7
|
+
data.tar.gz: db012bde53d49f6a4c77d5a3c71e5c899bad79f4aa9f0b1a42a81b1dfeaaf9ea508b66a6e3c8e550210ce8cabff67fdc38ddf8771435390a21b796b5b6801f90
|
data/README.md
CHANGED
@@ -15,6 +15,7 @@ And then execute:
|
|
15
15
|
$ bundle
|
16
16
|
|
17
17
|
## Usage
|
18
|
+
Charsets include: `:unambiguous`, `:alphabetical`, and the default `urlsafe_base64`
|
18
19
|
|
19
20
|
Basic usage:
|
20
21
|
|
@@ -49,3 +50,7 @@ user.reset_password_reset_token! # creates a new token and persists the changes
|
|
49
50
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
50
51
|
4. Push to the branch (`git push origin my-new-feature`)
|
51
52
|
5. Create a new Pull Request
|
53
|
+
|
54
|
+
### Tests
|
55
|
+
|
56
|
+
You can run the tests using the `rake test` command.
|
data/Rakefile
CHANGED
data/has_a_token.gemspec
CHANGED
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
23
|
spec.add_development_dependency "minitest", "~> 5.0"
|
24
|
-
spec.add_development_dependency "simplecov-html"
|
25
|
-
spec.add_development_dependency "coveralls"
|
26
|
-
spec.add_development_dependency "rubocop"
|
27
|
-
spec.add_development_dependency "guard"
|
28
|
-
spec.add_development_dependency "guard-minitest"
|
29
|
-
spec.add_development_dependency "guard-rubocop"
|
24
|
+
spec.add_development_dependency "simplecov-html", "~> 0.8.0"
|
25
|
+
spec.add_development_dependency "coveralls", "~> 0.7.12"
|
26
|
+
spec.add_development_dependency "rubocop", "~> 0.44.1"
|
27
|
+
spec.add_development_dependency "guard", "~> 2.12.0"
|
28
|
+
spec.add_development_dependency "guard-minitest", "~> 2.4.0"
|
29
|
+
spec.add_development_dependency "guard-rubocop", "~> 1.2.0"
|
30
30
|
end
|
@@ -10,6 +10,7 @@ module HasAToken
|
|
10
10
|
# @option [Symbol] :charset charset to token
|
11
11
|
# :unambiguous token will only contain unambiguous letters and numbers
|
12
12
|
# :urlsafe_base64 will return base64 token with '/' & '+' replaced w/ '-' & '_'
|
13
|
+
# :alphabetical will contain only A-Z characters
|
13
14
|
# @option [Fixnum] :length of the resulting token; defaults to 24 (or 8 for unambiguous sets)
|
14
15
|
def initialize(charset: :urlsafe_base64, length: nil)
|
15
16
|
@length = length || (charset == :unambiguous ? 5 : 24)
|
@@ -23,7 +24,9 @@ module HasAToken
|
|
23
24
|
def generate
|
24
25
|
case @charset
|
25
26
|
when :unambiguous
|
26
|
-
|
27
|
+
generate_charset_token(UNAMBIGUOUS_CHARSET)
|
28
|
+
when :alphabetical
|
29
|
+
generate_charset_token(("A".."Z").to_a)
|
27
30
|
else
|
28
31
|
generate_secure_token
|
29
32
|
end
|
@@ -31,17 +34,17 @@ module HasAToken
|
|
31
34
|
|
32
35
|
private
|
33
36
|
|
34
|
-
Contract
|
35
|
-
def
|
37
|
+
Contract Array => String
|
38
|
+
def generate_charset_token(charset)
|
36
39
|
# Fetch a random set of bytes
|
37
|
-
randset = SecureRandom.random_number(
|
40
|
+
randset = SecureRandom.random_number(charset.size**@length)
|
38
41
|
|
39
42
|
# Assign to ambiguous charset
|
40
43
|
@length
|
41
44
|
.times
|
42
45
|
.map do |i|
|
43
|
-
|
44
|
-
(randset /
|
46
|
+
charset.to_a[
|
47
|
+
(randset / charset.size**i) % charset.size
|
45
48
|
]
|
46
49
|
end.join
|
47
50
|
end
|
data/lib/has_a_token/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -2,7 +2,7 @@ require "simplecov"
|
|
2
2
|
require "simplecov-html"
|
3
3
|
require "coveralls"
|
4
4
|
|
5
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter::new [
|
6
6
|
SimpleCov::Formatter::HTMLFormatter,
|
7
7
|
Coveralls::SimpleCov::Formatter,
|
8
8
|
]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "./test_helper.rb"
|
2
2
|
|
3
3
|
# Test Generator class
|
4
4
|
class GeneratorTests < Minitest::Test
|
@@ -8,9 +8,9 @@ class GeneratorTests < Minitest::Test
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_unambiguous_charset
|
11
|
-
SecureRandom.stub :random_number,
|
11
|
+
SecureRandom.stub :random_number, 456_975_123 do # CQYZ
|
12
12
|
assert_instance_of String, HasAToken::Generator.new(charset: :unambiguous, length: 1).generate
|
13
|
-
assert_equal "
|
13
|
+
assert_equal "CQYZ", HasAToken::Generator.new(charset: :unambiguous, length: 4).generate
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -29,4 +29,16 @@ class GeneratorTests < Minitest::Test
|
|
29
29
|
assert_equal "1234", HasAToken::Generator.new(charset: :hex).generate
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
def test_alphabetical_length
|
34
|
+
assert HasAToken::Generator.new(charset: :alphabetical, length: 8).generate.length == 8
|
35
|
+
assert HasAToken::Generator.new(charset: :alphabetical, length: 10).generate.length == 10
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_alphabetical_charset
|
39
|
+
SecureRandom.stub :random_number, 456_975_123 do # HSYZ
|
40
|
+
assert_instance_of String, HasAToken::Generator.new(charset: :alphabetical, length: 1).generate
|
41
|
+
assert_equal "HSYZ", HasAToken::Generator.new(charset: :alphabetical, length: 4).generate
|
42
|
+
end
|
43
|
+
end
|
32
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_a_token
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Phillips
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: contracts
|
@@ -70,86 +70,86 @@ dependencies:
|
|
70
70
|
name: simplecov-html
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.8.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.8.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: coveralls
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.7.12
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 0.7.12
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rubocop
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 0.44.1
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 0.44.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: guard
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 2.12.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 2.12.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: guard-minitest
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 2.4.0
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 2.4.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: guard-rubocop
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 1.2.0
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: 1.2.0
|
153
153
|
description:
|
154
154
|
email:
|
155
155
|
- jamesdphillips@gmail.com
|
@@ -171,7 +171,7 @@ files:
|
|
171
171
|
- lib/has_a_token/generator.rb
|
172
172
|
- lib/has_a_token/version.rb
|
173
173
|
- test/test_helper.rb
|
174
|
-
- test/
|
174
|
+
- test/token_generator_test.rb
|
175
175
|
homepage: https://www.github.com/jamesdphillips/has_a_token
|
176
176
|
licenses:
|
177
177
|
- MIT
|
@@ -198,4 +198,4 @@ specification_version: 4
|
|
198
198
|
summary: Generate simple/complex/readable tokens in Rails models
|
199
199
|
test_files:
|
200
200
|
- test/test_helper.rb
|
201
|
-
- test/
|
201
|
+
- test/token_generator_test.rb
|