has_a_token 0.3.1 → 0.3.2

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
  SHA1:
3
- metadata.gz: e11a23b109e18c334de61022309c9047eebd20b1
4
- data.tar.gz: 0d2ffe30e87feb5e3ce78ccbc6982a985df341be
3
+ metadata.gz: e20722781a4d729f3b67521dab495abc49a6ccea
4
+ data.tar.gz: 97bd518d14cebbc6cbca39fe0c60d4c83fb246f6
5
5
  SHA512:
6
- metadata.gz: 9e84cccfe4a898c56925b4a97da5b5b76f7498da57ec4c0910fb10d1a71bdbde2e1112bb65d40bfbed4c5db782e101dc5a05e51936b2d3a8b9ce820efd4a0e81
7
- data.tar.gz: 05fec3baf200e9f4695105769c37d713b99134faab924bfb6830c1d0076f1a1cc5cb904204acfe4a0f032a95c891883465d0601949a490905e77ed07cf0be8e2
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
@@ -1 +1,14 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+
5
+ # Tests
6
+ Rake::TestTask::new do |t|
7
+ t.pattern = "test/*_test.rb"
8
+ end
9
+
10
+ desc "Run tests"
11
+
12
+
13
+ # Default task
14
+ task default: :test
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
- generate_unambiguous_token
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 None => String
35
- def generate_unambiguous_token
37
+ Contract Array => String
38
+ def generate_charset_token(charset)
36
39
  # Fetch a random set of bytes
37
- randset = SecureRandom.random_number(UNAMBIGUOUS_CHARSET.size**@length)
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
- UNAMBIGUOUS_CHARSET.to_a[
44
- (randset / UNAMBIGUOUS_CHARSET.size**i) % UNAMBIGUOUS_CHARSET.size
46
+ charset.to_a[
47
+ (randset / charset.size**i) % charset.size
45
48
  ]
46
49
  end.join
47
50
  end
@@ -1,3 +1,3 @@
1
1
  module HasAToken
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
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
- require "test_helper"
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, 456_975 do # ZZZZ
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 "ZZZZ", HasAToken::Generator.new(charset: :unambiguous, length: 4).generate
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.1
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: 2015-11-17 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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/test_token_generator.rb
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/test_token_generator.rb
201
+ - test/token_generator_test.rb