sinatra-authentication 0.3.2 → 0.4.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.
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