sinatra-authentication 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/Rakefile +6 -1
  2. data/lib/models/abstract_user.rb +39 -1
  3. data/lib/models/datamapper_user.rb +2 -1
  4. data/lib/models/dm_adapter.rb +15 -4
  5. data/lib/models/mm_adapter.rb +21 -9
  6. data/lib/models/mongoid_adapter.rb +67 -0
  7. data/lib/models/mongoid_user.rb +41 -0
  8. data/lib/models/mongomapper_user.rb +4 -8
  9. data/lib/models/rufus_tokyo_user.rb +48 -19
  10. data/lib/models/sequel_adapter.rb +68 -0
  11. data/lib/models/sequel_user.rb +53 -0
  12. data/lib/models/tc_adapter.rb +20 -2
  13. data/lib/sinatra-authentication.rb +35 -23
  14. data/lib/sinatra-authentication/models.rb +5 -0
  15. data/lib/views/edit.haml +1 -1
  16. data/lib/views/login.haml +3 -3
  17. data/lib/views/signup.haml +4 -4
  18. data/readme.markdown +53 -3
  19. data/sinatra-authentication-0.3.2.gem +0 -0
  20. data/sinatra-authentication.gemspec +86 -60
  21. data/spec/run_all_specs.rb +8 -0
  22. data/spec/unit/dm_model_spec.rb +3 -0
  23. data/spec/unit/mm_model_spec.rb +3 -0
  24. data/spec/unit/mongoid_model_spec.rb +3 -0
  25. data/spec/unit/sequel_model_spec.rb +10 -0
  26. data/spec/unit/tc_model_spec.rb +3 -0
  27. data/spec/unit/user_specs.rb +119 -0
  28. data/test/lib/dm_app.rb +1 -0
  29. data/test/lib/dm_extend_app.rb +1 -0
  30. data/test/lib/extend_views/edit.haml +4 -0
  31. data/test/lib/extend_views/signup.haml +4 -4
  32. data/test/lib/helper.rb +4 -0
  33. data/test/lib/mm_app.rb +16 -15
  34. data/test/lib/mongoid_app.rb +29 -0
  35. data/test/lib/sequel_app.rb +22 -0
  36. data/test/lib/tc_app.rb +2 -0
  37. data/test/mongoid_test.rb +5 -0
  38. data/test/mongomapper_test.rb +36 -35
  39. data/test/sequel_test.rb +5 -0
  40. metadata +40 -24
  41. data/.gitignore +0 -4
@@ -1,85 +1,111 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sinatra-authentication}
8
- s.version = "0.3.2"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Max Justus Spransy"]
12
- s.date = %q{2010-06-14}
12
+ s.date = %q{2010-12-13}
13
13
  s.description = %q{Simple authentication plugin for sinatra.}
14
14
  s.email = %q{maxjustus@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "TODO"
17
17
  ]
18
18
  s.files = [
19
- ".gitignore",
20
- "History.txt",
21
- "Manifest",
22
- "Rakefile",
23
- "TODO",
24
- "example/dm_extend_app.rb",
25
- "example/dm_sinbook.rb",
26
- "example/extend_views/edit.haml",
27
- "example/extend_views/index.haml",
28
- "example/extend_views/login.haml",
29
- "example/extend_views/show.haml",
30
- "example/extend_views/signup.haml",
31
- "example/mm_app.rb",
32
- "example/tc_app.rb",
33
- "example/tc_sinbook.rb",
34
- "lib/models/abstract_user.rb",
35
- "lib/models/datamapper_user.rb",
36
- "lib/models/dm_adapter.rb",
37
- "lib/models/mm_adapter.rb",
38
- "lib/models/mongomapper_user.rb",
39
- "lib/models/rufus_tokyo_user.rb",
40
- "lib/models/tc_adapter.rb",
41
- "lib/sinatra-authentication.rb",
42
- "lib/views/edit.haml",
43
- "lib/views/index.haml",
44
- "lib/views/login.haml",
45
- "lib/views/show.haml",
46
- "lib/views/signup.haml",
47
- "readme.markdown",
48
- "sinatra-authentication.gemspec",
49
- "test/datamapper_test.rb",
50
- "test/lib/dm_app.rb",
51
- "test/lib/dm_extend_app.rb",
52
- "test/lib/dm_sinbook.rb",
53
- "test/lib/extend_views/edit.haml",
54
- "test/lib/extend_views/index.haml",
55
- "test/lib/extend_views/login.haml",
56
- "test/lib/extend_views/show.haml",
57
- "test/lib/extend_views/signup.haml",
58
- "test/lib/helper.rb",
59
- "test/lib/mm_app.rb",
60
- "test/lib/tc_app.rb",
61
- "test/lib/tc_sinbook.rb",
62
- "test/mongomapper_test.rb",
63
- "test/route_tests.rb",
64
- "test/rufus_tokyo_test.rb"
19
+ "History.txt",
20
+ "Manifest",
21
+ "Rakefile",
22
+ "TODO",
23
+ "example/dm_extend_app.rb",
24
+ "example/dm_sinbook.rb",
25
+ "example/extend_views/edit.haml",
26
+ "example/extend_views/index.haml",
27
+ "example/extend_views/login.haml",
28
+ "example/extend_views/show.haml",
29
+ "example/extend_views/signup.haml",
30
+ "example/mm_app.rb",
31
+ "example/tc_app.rb",
32
+ "example/tc_sinbook.rb",
33
+ "lib/models/abstract_user.rb",
34
+ "lib/models/datamapper_user.rb",
35
+ "lib/models/dm_adapter.rb",
36
+ "lib/models/mm_adapter.rb",
37
+ "lib/models/mongoid_adapter.rb",
38
+ "lib/models/mongoid_user.rb",
39
+ "lib/models/mongomapper_user.rb",
40
+ "lib/models/rufus_tokyo_user.rb",
41
+ "lib/models/sequel_adapter.rb",
42
+ "lib/models/sequel_user.rb",
43
+ "lib/models/tc_adapter.rb",
44
+ "lib/sinatra-authentication.rb",
45
+ "lib/sinatra-authentication/models.rb",
46
+ "lib/views/edit.haml",
47
+ "lib/views/index.haml",
48
+ "lib/views/login.haml",
49
+ "lib/views/show.haml",
50
+ "lib/views/signup.haml",
51
+ "readme.markdown",
52
+ "sinatra-authentication-0.3.2.gem",
53
+ "sinatra-authentication.gemspec",
54
+ "spec/run_all_specs.rb",
55
+ "spec/unit/dm_model_spec.rb",
56
+ "spec/unit/mm_model_spec.rb",
57
+ "spec/unit/mongoid_model_spec.rb",
58
+ "spec/unit/sequel_model_spec.rb",
59
+ "spec/unit/tc_model_spec.rb",
60
+ "spec/unit/user_specs.rb",
61
+ "test/datamapper_test.rb",
62
+ "test/lib/dm_app.rb",
63
+ "test/lib/dm_extend_app.rb",
64
+ "test/lib/dm_sinbook.rb",
65
+ "test/lib/extend_views/edit.haml",
66
+ "test/lib/extend_views/index.haml",
67
+ "test/lib/extend_views/login.haml",
68
+ "test/lib/extend_views/show.haml",
69
+ "test/lib/extend_views/signup.haml",
70
+ "test/lib/helper.rb",
71
+ "test/lib/mm_app.rb",
72
+ "test/lib/mongoid_app.rb",
73
+ "test/lib/sequel_app.rb",
74
+ "test/lib/tc_app.rb",
75
+ "test/lib/tc_sinbook.rb",
76
+ "test/mongoid_test.rb",
77
+ "test/mongomapper_test.rb",
78
+ "test/route_tests.rb",
79
+ "test/rufus_tokyo_test.rb",
80
+ "test/sequel_test.rb"
65
81
  ]
66
82
  s.homepage = %q{http://github.com/maxjustus/sinatra-authentication}
67
- s.rdoc_options = ["--charset=UTF-8"]
68
83
  s.require_paths = ["lib"]
69
84
  s.rubygems_version = %q{1.3.7}
70
85
  s.summary = %q{Simple authentication plugin for sinatra.}
71
86
  s.test_files = [
87
+ "spec/run_all_specs.rb",
88
+ "spec/unit/dm_model_spec.rb",
89
+ "spec/unit/mm_model_spec.rb",
90
+ "spec/unit/mongoid_model_spec.rb",
91
+ "spec/unit/sequel_model_spec.rb",
92
+ "spec/unit/tc_model_spec.rb",
93
+ "spec/unit/user_specs.rb",
94
+ "test/datamapper_test.rb",
95
+ "test/lib/dm_app.rb",
96
+ "test/lib/dm_extend_app.rb",
72
97
  "test/lib/dm_sinbook.rb",
73
- "test/lib/tc_app.rb",
74
- "test/lib/mm_app.rb",
75
- "test/lib/tc_sinbook.rb",
76
- "test/lib/helper.rb",
77
- "test/lib/dm_extend_app.rb",
78
- "test/lib/dm_app.rb",
79
- "test/datamapper_test.rb",
80
- "test/mongomapper_test.rb",
81
- "test/rufus_tokyo_test.rb",
82
- "test/route_tests.rb"
98
+ "test/lib/helper.rb",
99
+ "test/lib/mm_app.rb",
100
+ "test/lib/mongoid_app.rb",
101
+ "test/lib/sequel_app.rb",
102
+ "test/lib/tc_app.rb",
103
+ "test/lib/tc_sinbook.rb",
104
+ "test/mongoid_test.rb",
105
+ "test/mongomapper_test.rb",
106
+ "test/route_tests.rb",
107
+ "test/rufus_tokyo_test.rb",
108
+ "test/sequel_test.rb"
83
109
  ]
84
110
 
85
111
  if s.respond_to? :specification_version then
@@ -0,0 +1,8 @@
1
+ #!/bin/ruby
2
+
3
+ specs = ['sequel_model', 'dm_model', 'mm_model', 'tc_model', 'mongoid_model']
4
+ specs.each do |spec|
5
+ spec_path = File.dirname(__FILE__) + "/unit/#{spec}_spec.rb"
6
+ @output = %x[rspec #{spec_path}]
7
+ puts @output
8
+ end
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/dm_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/mm_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/mongoid_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -0,0 +1,10 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/sequel_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
4
+
5
+ describe User do
6
+ describe '#get' do
7
+ it 'Should pass arguments to the underlying ORM' do
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), '../../test/lib/tc_app')
2
+ require File.join(File.dirname(__FILE__), '../../test/lib/helper')
3
+ require File.join(File.dirname(__FILE__), 'user_specs')
@@ -0,0 +1,119 @@
1
+ describe User do
2
+ before :each do
3
+ User.all.each do |u|
4
+ User.delete(u.id)
5
+ end
6
+
7
+ @user = User.set(TestHelper.gen_user_for_model)
8
+ end
9
+
10
+ describe 'instance' do
11
+ describe '#update' do
12
+ before :each do
13
+ @user.update(:password => 'password', :password_confirmation => 'password')
14
+ end
15
+
16
+ it 'Returns an instance if User' do
17
+ @user.class.should == User
18
+ end
19
+
20
+ it 'Should return true on success' do
21
+ @user.update(:email => 'max@max.com', :password => 'hi', :password_confirmation => 'hi').should == true
22
+ @user.update(:email => 'max@max.com').should == true
23
+ end
24
+
25
+ it 'Does not allow duplicate email addresses on update' do
26
+ @user_two = User.set(:email => 'steve@steve.com', :password => 'hi', :password_confirmation => 'hi')
27
+ @user.update(:email => 'steve@steve.com').should == false
28
+ #@user.class.should == User
29
+ end
30
+
31
+ it 'Should say saved is false when invalid' do
32
+ @user.update(:password => 'paz')
33
+ @user.saved.should == false
34
+ end
35
+ end
36
+
37
+ describe '#errors' do
38
+ it 'Returns a string of errors' do
39
+ @user.update(:password => 'paz')
40
+ @user.errors.class.should == String && @user.errors.length.should > 0
41
+ end
42
+ end
43
+
44
+ describe '#valid' do
45
+ it 'Should return false when invalid' do
46
+ @user.update(:password => 'hi')
47
+ @user.valid.should == false
48
+ end
49
+
50
+ it 'Should validate format of email' do
51
+ @user.update(:email => 'meeewewe!!')
52
+ @user.valid.should == false
53
+ end
54
+
55
+ it 'Should return true when valid' do
56
+ @user.valid.should == true
57
+ end
58
+ end
59
+ end
60
+
61
+ describe '#all' do
62
+ it 'Should return an array of instances of User' do
63
+ User.all[0].class.should == User
64
+ end
65
+
66
+ it 'Should return users in descending order of creation time' do
67
+ @newest_user = User.set(:email => 'hey@hi.com', :password => 'hihihi', :password_confirmation => 'hihihi', :created_at => Time.now + 1)
68
+ User.all[0].email.should == @newest_user.email
69
+ end
70
+
71
+ #it 'Should accept a page argument in a hash and limit results to 20 by default' do
72
+ # 40.times do |n|
73
+ # @newest_user = User.set(:email => "#{n}hey@hi.com", :password => 'hihihi', :password_confirmation => 'hihihi', :created_at => Time.now + n)
74
+ # end
75
+ # users = User.all(:page => 0)
76
+ # users[0].email.should == @newest_user.email
77
+ # users.size.should == 20
78
+ # User.all(:page => 1)[0].email.should == "19hey@hi.com"
79
+ #end
80
+ end
81
+
82
+ describe '#set' do
83
+ it 'Returns an instance if User' do
84
+ @user.class.should == User
85
+ end
86
+
87
+ it 'Timestamps user with Time' do
88
+ @user.created_at.class.should == Time
89
+ end
90
+
91
+ it 'Should set first user in database as site admin' do
92
+ @user.site_admin.should == true
93
+ end
94
+
95
+ #it 'Should say saved is true' do
96
+ # @user.saved.should == true
97
+ #end
98
+ end
99
+
100
+ describe '#set!' do
101
+ before :each do
102
+ @user = User.set!({:password => 'hi'})
103
+ end
104
+
105
+ it 'Returns an instance if User' do
106
+ @user.class.should == User
107
+ end
108
+
109
+ #it 'Should say saved is true' do
110
+ # @user.saved.should == true
111
+ #end
112
+ end
113
+
114
+ describe '#delete' do
115
+ it 'Returns a boolean' do
116
+ User.delete(@user.id).should == true
117
+ end
118
+ end
119
+ end
@@ -2,6 +2,7 @@ require 'rubygems'
2
2
  require 'sinatra'
3
3
  require 'haml'
4
4
  require 'dm-core'
5
+ require 'dm-migrations'
5
6
  require 'rack-flash'
6
7
  require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
7
8
 
@@ -2,6 +2,7 @@ require 'rubygems'
2
2
  require 'sinatra'
3
3
  require 'haml'
4
4
  require 'dm-core'
5
+ require 'dm-migrations'
5
6
  require 'rack-flash'
6
7
  require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
7
8
 
@@ -16,6 +16,10 @@
16
16
  .label
17
17
  %label{:for => "user_email"} Email
18
18
  %input{ :id => "user_email", :name => "user[email]", :size => 30, :type => "text", :value => @user.email }
19
+ .field
20
+ .label
21
+ %label{:for => "user_email"} Name
22
+ %input{ :id => "user_email", :name => "user[name]", :size => 30, :type => "text", :value => @user.name }
19
23
  .field
20
24
  .label
21
25
  %label{:for => "user_password"} New password
@@ -6,14 +6,14 @@
6
6
  .label
7
7
  %label{:for => "user_email"} Email
8
8
  %input{ :id => "user_email", :name => "user[email]", :size => 30, :type => "text" }
9
- .field
10
- .label
11
- %label{:for => "user_password"} Password
12
- %input{ :id => "user_password", :name => "user[password]", :size => 30, :type => "password" }
13
9
  .field
14
10
  .label
15
11
  %label{:for => "user_name"} Name
16
12
  %input{ :id => "user_name", :name => "user[name]", :size => 30, :type => "text" }
13
+ .field
14
+ .label
15
+ %label{:for => "user_password"} Password
16
+ %input{ :id => "user_password", :name => "user[password]", :size => 30, :type => "password" }
17
17
  .field
18
18
  .label
19
19
  %label{:for => "user_password_confirmation"} Confirm Password
@@ -2,6 +2,10 @@ class TestHelper
2
2
  def self.gen_user
3
3
  {'user[email]' => 'yodawg@gmail.com', 'user[password]' => 'password', 'user[password_confirmation]' => 'password'}
4
4
  end
5
+
6
+ def self.gen_user_for_model
7
+ {:email => 'yodawg@gmail.com', :password => 'password', :password_confirmation => 'password'}
8
+ end
5
9
  end
6
10
 
7
11
  def app
@@ -1,24 +1,25 @@
1
1
  require 'rubygems'
2
- require 'sinatra/base'
2
+ require 'sinatra'
3
3
  require 'haml'
4
+ require 'rack-flash'
4
5
  require 'mongo_mapper'
5
- require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
6
6
 
7
- logger = Logger.new($stdout)
8
- MongoMapper.connection = Mongo::Connection.new('db.mongohq.com', 27017, :logger => logger)
9
- MongoMapper.database = "fdbk"
10
- MongoMapper.database.authenticate(ENV['mongohq_user'], ENV['mongohq_pass'])
7
+ #logger = Logger.new($stdout)
8
+ #MongoMapper.connection = Mongo::Connection.new('db.mongohq.com', 27017, :logger => logger)
9
+ #MongoMapper.database = "fdbk"
10
+ #MongoMapper.database.authenticate(ENV['mongohq_user'], ENV['mongohq_pass'])
11
+
12
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
11
13
 
12
- class TestApp < Sinatra::Base
13
- use Rack::Session::Cookie, :secret => "heyhihello"
14
+ MongoMapper.database = "sinatraauthtest"
14
15
 
15
- register Sinatra::LilAuthentication
16
+ use Rack::Session::Cookie, :secret => "heyhihello"
17
+ use Rack::Flash
16
18
 
17
- set :environment, 'development'
18
- set :public, 'public'
19
- set :views, 'views'
19
+ set :environment, 'development'
20
+ set :public, 'public'
21
+ set :views, 'views'
20
22
 
21
- get '/' do
22
- haml "= render_login_logout", :layout => :layout
23
- end
23
+ get '/' do
24
+ haml "= render_login_logout", :layout => :layout
24
25
  end
@@ -0,0 +1,29 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'haml'
4
+ require 'rack-flash'
5
+ require 'mongoid'
6
+
7
+ #logger = Logger.new($stdout)
8
+ #MongoMapper.connection = Mongo::Connection.new('db.mongohq.com', 27017, :logger => logger)
9
+ #MongoMapper.database = "fdbk"
10
+ #MongoMapper.database.authenticate(ENV['mongohq_user'], ENV['mongohq_pass'])
11
+
12
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
13
+
14
+ Mongoid.configure do |config|
15
+ name = "sinatraauth_test"
16
+ host = "localhost"
17
+ config.master = Mongo::Connection.new.db(name)
18
+ end
19
+
20
+ use Rack::Session::Cookie, :secret => "heyhihello"
21
+ use Rack::Flash
22
+
23
+ set :environment, 'development'
24
+ set :public, 'public'
25
+ set :views, 'views'
26
+
27
+ get '/' do
28
+ haml "= render_login_logout", :layout => :layout
29
+ end