sinatra-authentication-oran 0.0.1

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 (76) hide show
  1. data/Gemfile +33 -0
  2. data/History.txt +4 -0
  3. data/Manifest +26 -0
  4. data/Rakefile +43 -0
  5. data/TODO +53 -0
  6. data/UNLICENSE +24 -0
  7. data/example/database.yml +3 -0
  8. data/example/dm_extend_app.rb +26 -0
  9. data/example/dm_sinbook.rb +56 -0
  10. data/example/extend_views/edit.haml +42 -0
  11. data/example/extend_views/index.haml +31 -0
  12. data/example/extend_views/login.haml +21 -0
  13. data/example/extend_views/show.haml +9 -0
  14. data/example/extend_views/signup.haml +30 -0
  15. data/example/mm_app.rb +22 -0
  16. data/example/tc_app.rb +16 -0
  17. data/example/tc_sinbook.rb +62 -0
  18. data/lib/models/abstract_user.rb +95 -0
  19. data/lib/models/activerecord_user.rb +56 -0
  20. data/lib/models/ar_adapter.rb +66 -0
  21. data/lib/models/datamapper_user.rb +43 -0
  22. data/lib/models/dm_adapter.rb +61 -0
  23. data/lib/models/mm_adapter.rb +65 -0
  24. data/lib/models/mongoid_adapter.rb +67 -0
  25. data/lib/models/mongoid_user.rb +42 -0
  26. data/lib/models/mongomapper_user.rb +38 -0
  27. data/lib/models/rufus_tokyo_user.rb +206 -0
  28. data/lib/models/sequel_adapter.rb +68 -0
  29. data/lib/models/sequel_user.rb +53 -0
  30. data/lib/models/tc_adapter.rb +101 -0
  31. data/lib/sinatra-authentication-o.rb +305 -0
  32. data/lib/sinatra-authentication.rb +305 -0
  33. data/lib/sinatra-authentication/models.rb +5 -0
  34. data/lib/views/edit.haml +45 -0
  35. data/lib/views/edit.slim +46 -0
  36. data/lib/views/index.haml +29 -0
  37. data/lib/views/index.slim +30 -0
  38. data/lib/views/login.haml +24 -0
  39. data/lib/views/login.slim +25 -0
  40. data/lib/views/show.haml +9 -0
  41. data/lib/views/show.slim +10 -0
  42. data/lib/views/signup.haml +28 -0
  43. data/lib/views/signup.slim +33 -0
  44. data/readme.markdown +295 -0
  45. data/sinatra-authentication-oran.gemspec +137 -0
  46. data/spec/run_all_specs.rb +8 -0
  47. data/spec/unit/ar_model_spec.rb +3 -0
  48. data/spec/unit/dm_model_spec.rb +3 -0
  49. data/spec/unit/mm_model_spec.rb +3 -0
  50. data/spec/unit/mongoid_model_spec.rb +3 -0
  51. data/spec/unit/sequel_model_spec.rb +10 -0
  52. data/spec/unit/tc_model_spec.rb +3 -0
  53. data/spec/unit/user_specs.rb +119 -0
  54. data/test/activerecord_test.rb +5 -0
  55. data/test/datamapper_test.rb +5 -0
  56. data/test/lib/ar_app.rb +27 -0
  57. data/test/lib/dm_app.rb +20 -0
  58. data/test/lib/dm_extend_app.rb +27 -0
  59. data/test/lib/dm_sinbook.rb +54 -0
  60. data/test/lib/extend_views/edit.haml +46 -0
  61. data/test/lib/extend_views/index.haml +31 -0
  62. data/test/lib/extend_views/login.haml +21 -0
  63. data/test/lib/extend_views/show.haml +9 -0
  64. data/test/lib/extend_views/signup.haml +29 -0
  65. data/test/lib/helper.rb +16 -0
  66. data/test/lib/mm_app.rb +24 -0
  67. data/test/lib/mongoid_app.rb +28 -0
  68. data/test/lib/sequel_app.rb +21 -0
  69. data/test/lib/tc_app.rb +17 -0
  70. data/test/lib/tc_sinbook.rb +61 -0
  71. data/test/mongoid_test.rb +5 -0
  72. data/test/mongomapper_test.rb +40 -0
  73. data/test/route_tests.rb +29 -0
  74. data/test/rufus_tokyo_test.rb +5 -0
  75. data/test/sequel_test.rb +5 -0
  76. metadata +220 -0
@@ -0,0 +1,137 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "sinatra-authentication-oran"
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["oranzhang"]
12
+ s.date = "2012-12-08"
13
+ s.description = "Simple authentication plugin for sinatra."
14
+ s.email = "423794590@qq.com"
15
+ s.extra_rdoc_files = [
16
+ "TODO",
17
+ "readme.markdown"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "History.txt",
22
+ "Manifest",
23
+ "Rakefile",
24
+ "TODO",
25
+ "UNLICENSE",
26
+ "example/database.yml",
27
+ "example/dm_extend_app.rb",
28
+ "example/dm_sinbook.rb",
29
+ "example/extend_views/edit.haml",
30
+ "example/extend_views/index.haml",
31
+ "example/extend_views/login.haml",
32
+ "example/extend_views/show.haml",
33
+ "example/extend_views/signup.haml",
34
+ "example/mm_app.rb",
35
+ "example/tc_app.rb",
36
+ "example/tc_sinbook.rb",
37
+ "lib/models/abstract_user.rb",
38
+ "lib/models/activerecord_user.rb",
39
+ "lib/models/ar_adapter.rb",
40
+ "lib/models/datamapper_user.rb",
41
+ "lib/models/dm_adapter.rb",
42
+ "lib/models/mm_adapter.rb",
43
+ "lib/models/mongoid_adapter.rb",
44
+ "lib/models/mongoid_user.rb",
45
+ "lib/models/mongomapper_user.rb",
46
+ "lib/models/rufus_tokyo_user.rb",
47
+ "lib/models/sequel_adapter.rb",
48
+ "lib/models/sequel_user.rb",
49
+ "lib/models/tc_adapter.rb",
50
+ "lib/sinatra-authentication-o.rb",
51
+ "lib/sinatra-authentication.rb",
52
+ "lib/sinatra-authentication/models.rb",
53
+ "lib/views/edit.haml",
54
+ "lib/views/edit.slim",
55
+ "lib/views/index.haml",
56
+ "lib/views/index.slim",
57
+ "lib/views/login.haml",
58
+ "lib/views/login.slim",
59
+ "lib/views/show.haml",
60
+ "lib/views/show.slim",
61
+ "lib/views/signup.haml",
62
+ "lib/views/signup.slim",
63
+ "readme.markdown",
64
+ "sinatra-authentication-oran.gemspec",
65
+ "spec/run_all_specs.rb",
66
+ "spec/unit/ar_model_spec.rb",
67
+ "spec/unit/dm_model_spec.rb",
68
+ "spec/unit/mm_model_spec.rb",
69
+ "spec/unit/mongoid_model_spec.rb",
70
+ "spec/unit/sequel_model_spec.rb",
71
+ "spec/unit/tc_model_spec.rb",
72
+ "spec/unit/user_specs.rb",
73
+ "test/activerecord_test.rb",
74
+ "test/datamapper_test.rb",
75
+ "test/lib/ar_app.rb",
76
+ "test/lib/dm_app.rb",
77
+ "test/lib/dm_extend_app.rb",
78
+ "test/lib/dm_sinbook.rb",
79
+ "test/lib/extend_views/edit.haml",
80
+ "test/lib/extend_views/index.haml",
81
+ "test/lib/extend_views/login.haml",
82
+ "test/lib/extend_views/show.haml",
83
+ "test/lib/extend_views/signup.haml",
84
+ "test/lib/helper.rb",
85
+ "test/lib/mm_app.rb",
86
+ "test/lib/mongoid_app.rb",
87
+ "test/lib/sequel_app.rb",
88
+ "test/lib/tc_app.rb",
89
+ "test/lib/tc_sinbook.rb",
90
+ "test/mongoid_test.rb",
91
+ "test/mongomapper_test.rb",
92
+ "test/route_tests.rb",
93
+ "test/rufus_tokyo_test.rb",
94
+ "test/sequel_test.rb"
95
+ ]
96
+ s.homepage = "https://github.com/oranzhang/sinatra-authentication"
97
+ s.require_paths = ["lib"]
98
+ s.rubygems_version = "1.8.16"
99
+ s.summary = "Simple authentication plugin for sinatra."
100
+
101
+ if s.respond_to? :specification_version then
102
+ s.specification_version = 3
103
+
104
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
105
+ s.add_runtime_dependency(%q<sinatra-authentication-oran>, [">= 0"])
106
+ s.add_runtime_dependency(%q<sinatra>, [">= 0"])
107
+ s.add_runtime_dependency(%q<dm-core>, [">= 0"])
108
+ s.add_runtime_dependency(%q<dm-migrations>, [">= 0"])
109
+ s.add_runtime_dependency(%q<dm-validations>, [">= 0"])
110
+ s.add_runtime_dependency(%q<dm-timestamps>, [">= 0"])
111
+ s.add_runtime_dependency(%q<rufus-tokyo>, [">= 0"])
112
+ s.add_runtime_dependency(%q<sinbook>, [">= 0"])
113
+ s.add_runtime_dependency(%q<rack-flash3>, [">= 0"])
114
+ else
115
+ s.add_dependency(%q<sinatra-authentication-oran>, [">= 0"])
116
+ s.add_dependency(%q<sinatra>, [">= 0"])
117
+ s.add_dependency(%q<dm-core>, [">= 0"])
118
+ s.add_dependency(%q<dm-migrations>, [">= 0"])
119
+ s.add_dependency(%q<dm-validations>, [">= 0"])
120
+ s.add_dependency(%q<dm-timestamps>, [">= 0"])
121
+ s.add_dependency(%q<rufus-tokyo>, [">= 0"])
122
+ s.add_dependency(%q<sinbook>, [">= 0"])
123
+ s.add_dependency(%q<rack-flash3>, [">= 0"])
124
+ end
125
+ else
126
+ s.add_dependency(%q<sinatra-authentication-oran>, [">= 0"])
127
+ s.add_dependency(%q<sinatra>, [">= 0"])
128
+ s.add_dependency(%q<dm-core>, [">= 0"])
129
+ s.add_dependency(%q<dm-migrations>, [">= 0"])
130
+ s.add_dependency(%q<dm-validations>, [">= 0"])
131
+ s.add_dependency(%q<dm-timestamps>, [">= 0"])
132
+ s.add_dependency(%q<rufus-tokyo>, [">= 0"])
133
+ s.add_dependency(%q<sinbook>, [">= 0"])
134
+ s.add_dependency(%q<rack-flash3>, [">= 0"])
135
+ end
136
+ end
137
+
@@ -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/ar_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/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
@@ -0,0 +1,5 @@
1
+ require 'lib/ar_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
@@ -0,0 +1,5 @@
1
+ require 'lib/dm_app'
2
+ require 'lib/helper'
3
+ require 'test/unit'
4
+ require 'rack/test'
5
+ require 'route_tests'
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'active_record'
4
+ require 'rack-flash'
5
+
6
+ ActiveRecord::Base.establish_connection(
7
+ :adapter => "sqlite3",
8
+ :database => "#{Dir.pwd}/test.db"
9
+ )
10
+
11
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
12
+
13
+ use Rack::Session::Cookie, :secret => "heyhihello"
14
+ use Rack::Flash
15
+
16
+ set :environment, 'development'
17
+ set :public, 'public'
18
+ set :views, 'views'
19
+
20
+ get '/' do
21
+ send TEMPLATE, "= render_login_logout", :layout => :layout
22
+ end
23
+
24
+ __END__
25
+
26
+ @@ layout
27
+ = yield
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'dm-core'
4
+ require 'dm-migrations'
5
+ require 'rack-flash'
6
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
7
+
8
+ DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/test.db")
9
+ DataMapper.auto_migrate!
10
+
11
+ use Rack::Session::Cookie, :secret => "heyhihello"
12
+ use Rack::Flash
13
+
14
+ set :environment, 'development'
15
+ set :public, 'public'
16
+ set :views, 'views'
17
+
18
+ get '/' do
19
+ send TEMPLATE, "= render_login_logout", :layout => :layout
20
+ end
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'dm-core'
4
+ require 'dm-migrations'
5
+ require 'rack-flash'
6
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
7
+
8
+
9
+ class DmUser
10
+ property :name, String
11
+ end
12
+
13
+ DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/test.db")
14
+ DataMapper.auto_migrate!
15
+
16
+ set :sinatra_authentication_view_path, Pathname(__FILE__).dirname.expand_path + "extend_views/"
17
+ use Rack::Session::Cookie, :secret => "heyhihello"
18
+ use Rack::Flash
19
+
20
+ set :environment, 'development'
21
+ set :public, 'public'
22
+ set :views, 'views'
23
+
24
+ get '/' do
25
+ puts User.all(:name => 'max')
26
+ send TEMPLATE, "= render_login_logout", :layout => :layout
27
+ end
@@ -0,0 +1,54 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require 'sinbook'
4
+ require 'dm-core'
5
+ require File.join(File.dirname(__FILE__), '../../lib/sinatra-authentication')
6
+
7
+ facebook do
8
+ api_key 'aa2db1b96cb7b57f0c5b1d4d3d8f0a22'
9
+ secret '21d94ee63969ae3b3f833689838ca00f'
10
+ app_id 48652736613
11
+ url 'peoplewithjetpacks.com:4568/'
12
+ callback 'peoplewithjetpacks.com:4568/'
13
+ end
14
+
15
+ set :port, 4568
16
+
17
+ DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/test.db")
18
+ DataMapper.auto_migrate!
19
+
20
+ use Rack::Session::Cookie, :secret => "heyhihello"
21
+
22
+ set :environment, 'development'
23
+ set :public, 'public'
24
+ set :views, 'views'
25
+
26
+ get '/' do
27
+ send TEMPLATE, :main
28
+ end
29
+
30
+ get '/test' do
31
+ login_required
32
+ 'hihihi'
33
+ end
34
+
35
+ __END__
36
+
37
+ @@ layout
38
+ %html{:xmlns=>"http://www.w3.org/1999/xhtml", :'xmlns:fb'=>"http://www.facebook.com/2008/fbml"}
39
+ %head
40
+ %title Welcome to my Facebook Connect website!
41
+ %script{:type => 'text/javascript', :src => 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US'}
42
+ %body
43
+ = render_login_logout
44
+ = yield
45
+ :javascript
46
+ FB.init("#{fb.api_key}", "/receiver")
47
+
48
+ @@ main
49
+ - if fb[:user]
50
+ Hi,
51
+ %fb:profile-pic{:uid => fb[:user]}
52
+ %fb:name{:uid => fb[:user], :useyou => 'false', :firstnameonly => 'true'}
53
+ !
54
+