mini_token 0.1.1 → 1.0.0

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.
data/Gemfile CHANGED
@@ -1,5 +1,8 @@
1
1
  source :gemcutter
2
2
 
3
+ gem "sequel"
4
+ gem "sqlite3-ruby"
5
+
3
6
  group :test do
4
7
  gem "shoulda"
5
8
  end
data/Gemfile.lock CHANGED
@@ -1,10 +1,14 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ sequel (3.16.0)
4
5
  shoulda (2.11.3)
6
+ sqlite3-ruby (1.3.1)
5
7
 
6
8
  PLATFORMS
7
9
  ruby
8
10
 
9
11
  DEPENDENCIES
12
+ sequel
10
13
  shoulda
14
+ sqlite3-ruby
data/README.rdoc CHANGED
@@ -18,6 +18,15 @@ Generate token with other size
18
18
  MiniToken.output(9)
19
19
  # => "2u27Jum8Y"
20
20
 
21
+ Returning all tokens storaged
22
+
23
+ MiniToken.all
24
+ # => [{:id=>1, :token=>"AcEi87"}, {:id=>2, :token=>"I8uEy2"}]
25
+
26
+ For truncate the tokens storage
27
+
28
+ MiniToken.truncate_tokens
29
+
21
30
  == Copyright
22
31
 
23
32
  Copyright (c) 2010 Antônio Roberto Silva. See LICENSE for details.
data/Rakefile CHANGED
@@ -10,6 +10,8 @@ begin
10
10
  gem.email = "forevertonny@gmail.com"
11
11
  gem.homepage = "http://github.com/devton/mini_token"
12
12
  gem.authors = ["Antonio Roberto Silva"]
13
+ gem.add_dependency 'sequel', '>= 3.16.0'
14
+ gem.add_dependency 'sqlite3-ruby', '>= 1.3.1'
13
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
16
  end
15
17
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 1.0.0
data/db/mini_token.db ADDED
Binary file
Binary file
data/lib/mini_token.rb CHANGED
@@ -1,24 +1,48 @@
1
- class MiniToken < Struct.new(:token_size, :token)
1
+ require 'sequel'
2
+ TOKEN_ENV = 'production'
3
+
4
+ class MiniToken < Struct.new(:db, :token)
2
5
  TOKEN_SIZE = 6
3
- TOKEN_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
6
+ TOKEN_CHARACTERS = (('A'..'Z').to_a+('a'..'z').to_a+('0'..'9').to_a)
7
+ DB_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', 'db'))
4
8
 
5
9
  class << self
6
10
  def output(size = nil)
7
11
  generate { @token_size = size.nil? ? TOKEN_SIZE : size }
8
12
  end
13
+
14
+ def truncate_tokens
15
+ connection
16
+ @db.truncate
17
+ end
18
+
19
+ def all
20
+ connection
21
+ @db.all
22
+ end
9
23
 
10
24
  private
11
25
 
12
26
  def generate
13
27
  yield if block_given?
14
- token = []
15
- @token_size.times { token << TOKEN_CHARACTERS[pointer] }
16
- token.join
28
+ @token = TOKEN_CHARACTERS.sample(@token_size).join
29
+ exist_token?
17
30
  end
18
-
19
- def pointer
20
- srand
21
- rand(MiniToken::TOKEN_CHARACTERS.size)
31
+
32
+ protected
33
+
34
+ def exist_token?
35
+ connection
36
+ @db.first(:token => @token).nil? ? storing : generate unless @token.nil?
37
+ end
38
+
39
+ def storing
40
+ @token if @db.insert(:token => @token)
41
+ end
42
+
43
+ def connection
44
+ sequel = Sequel.sqlite(DB_PATH+(TOKEN_ENV=='production' ? '/mini_token.db' : '/mini_token_test.db' ))
45
+ @db = sequel[:tokens]
22
46
  end
23
47
  end
24
48
  end
data/mini_token.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mini_token}
8
- s.version = "0.1.1"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Antonio Roberto Silva"]
@@ -20,7 +20,6 @@ Gem::Specification.new do |s|
20
20
  ".bundle/config",
21
21
  ".document",
22
22
  ".gitignore",
23
- ".rspec",
24
23
  ".rvmrc",
25
24
  "Gemfile",
26
25
  "Gemfile.lock",
@@ -28,6 +27,8 @@ Gem::Specification.new do |s|
28
27
  "README.rdoc",
29
28
  "Rakefile",
30
29
  "VERSION",
30
+ "db/mini_token.db",
31
+ "db/mini_token_test.db",
31
32
  "lib/mini_token.rb",
32
33
  "mini_token.gemspec",
33
34
  "test/helper.rb",
@@ -48,9 +49,15 @@ Gem::Specification.new do |s|
48
49
  s.specification_version = 3
49
50
 
50
51
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
+ s.add_runtime_dependency(%q<sequel>, [">= 3.16.0"])
53
+ s.add_runtime_dependency(%q<sqlite3-ruby>, [">= 1.3.1"])
51
54
  else
55
+ s.add_dependency(%q<sequel>, [">= 3.16.0"])
56
+ s.add_dependency(%q<sqlite3-ruby>, [">= 1.3.1"])
52
57
  end
53
58
  else
59
+ s.add_dependency(%q<sequel>, [">= 3.16.0"])
60
+ s.add_dependency(%q<sqlite3-ruby>, [">= 1.3.1"])
54
61
  end
55
62
  end
56
63
 
data/test/helper.rb CHANGED
@@ -4,11 +4,11 @@ require 'test/unit'
4
4
  require 'minitest/unit'
5
5
  require 'minitest/spec'
6
6
  require 'shoulda'
7
+ require 'sequel'
7
8
 
8
9
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
10
  $LOAD_PATH.unshift(File.dirname(__FILE__))
10
11
 
11
-
12
12
  require 'mini_token'
13
13
  Bundler.setup
14
14
 
@@ -1,5 +1,6 @@
1
1
  require 'helper'
2
2
  MiniTest::Unit.autorun
3
+ TOKEN_ENV = 'test'
3
4
 
4
5
  describe MiniToken do
5
6
  describe "MiniToken Constants" do
@@ -7,12 +8,15 @@ describe MiniToken do
7
8
  assert_equal 6, MiniToken::TOKEN_SIZE
8
9
  end
9
10
 
10
- it "Default Token Characters" do
11
- assert_equal 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890', MiniToken::TOKEN_CHARACTERS
11
+ it "Default Token Characters with use join" do
12
+ assert_equal 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', MiniToken::TOKEN_CHARACTERS.join
12
13
  end
13
14
  end
14
15
 
15
16
  describe "MiniToken" do
17
+ before(:each) do
18
+ cleaner
19
+ end
16
20
  it "without size defined the generated token should be have 6 characters" do
17
21
  assert_equal 6, MiniToken.output.size
18
22
  end
@@ -28,5 +32,42 @@ describe MiniToken do
28
32
  it 'should be return the token string with size' do
29
33
  assert_match /([a-zA-Z0-9]{10})/, MiniToken.output(10)
30
34
  end
35
+
36
+ describe ".truncate_tokens" do
37
+ before(:each) do
38
+ 4.times { MiniToken.output }
39
+ end
40
+
41
+ it "should have many tokens " do
42
+ assert_equal MiniToken.all.size, 4
43
+ end
44
+
45
+ it "when call truncate then don't have more tokens storaged" do
46
+ MiniToken.truncate_tokens
47
+ assert_equal MiniToken.all.size, 0
48
+ end
49
+ end
50
+
51
+ describe ".all" do
52
+ before(:each) do
53
+ @token1 = MiniToken.output
54
+ @token2 = MiniToken.output
55
+ @token3 = MiniToken.output
56
+ end
57
+
58
+ it "should return one hash with all tokens storaged" do
59
+ assert_equal MiniToken.all, [{:id=>1, :token=>@token1}, {:id=>2, :token=>@token2}, {:id=>3, :token=>@token3}]
60
+ end
61
+ end
31
62
  end
32
63
  end
64
+
65
+
66
+ def mock_tokens
67
+ sequel = Sequel.sqlite(MiniToken::DB_PATH+'/mini_token_test.db')
68
+ sequel[:tokens]
69
+ end
70
+
71
+ def cleaner
72
+ mock_tokens.truncate
73
+ end
metadata CHANGED
@@ -3,10 +3,10 @@ name: mini_token
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 0
7
- - 1
8
6
  - 1
9
- version: 0.1.1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Antonio Roberto Silva
@@ -16,8 +16,37 @@ cert_chain: []
16
16
 
17
17
  date: 2010-10-10 00:00:00 -03:00
18
18
  default_executable:
19
- dependencies: []
20
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: sequel
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 3
30
+ - 16
31
+ - 0
32
+ version: 3.16.0
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: sqlite3-ruby
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 1
45
+ - 3
46
+ - 1
47
+ version: 1.3.1
48
+ type: :runtime
49
+ version_requirements: *id002
21
50
  description: Generate simple tokens for short url and other things
22
51
  email: forevertonny@gmail.com
23
52
  executables: []
@@ -31,7 +60,6 @@ files:
31
60
  - .bundle/config
32
61
  - .document
33
62
  - .gitignore
34
- - .rspec
35
63
  - .rvmrc
36
64
  - Gemfile
37
65
  - Gemfile.lock
@@ -39,6 +67,8 @@ files:
39
67
  - README.rdoc
40
68
  - Rakefile
41
69
  - VERSION
70
+ - db/mini_token.db
71
+ - db/mini_token_test.db
42
72
  - lib/mini_token.rb
43
73
  - mini_token.gemspec
44
74
  - test/helper.rb
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color --format nested