muck-users 0.2.23 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/README.rdoc +3 -1
  2. data/VERSION +1 -1
  3. data/app/controllers/admin/muck/access_codes_controller.rb +78 -0
  4. data/app/controllers/admin/muck/roles_controller.rb +34 -24
  5. data/app/controllers/admin/muck/users_controller.rb +56 -21
  6. data/app/controllers/muck/access_code_requests_controller.rb +27 -0
  7. data/app/controllers/muck/activations_controller.rb +0 -1
  8. data/app/controllers/muck/users_controller.rb +122 -110
  9. data/app/models/role.rb +5 -2
  10. data/app/models/user_mailer.rb +7 -0
  11. data/app/views/access_code_requests/new.html.erb +7 -0
  12. data/app/views/access_code_requests/show.html.erb +1 -0
  13. data/app/views/admin/access_codes/_access_code.html.erb +8 -0
  14. data/app/views/admin/access_codes/_form.html.erb +15 -0
  15. data/app/views/admin/access_codes/_user.html.erb +6 -0
  16. data/app/views/admin/access_codes/bulk.html.erb +12 -0
  17. data/app/views/admin/access_codes/edit.html.erb +6 -0
  18. data/app/views/admin/access_codes/index.html.erb +18 -0
  19. data/app/views/admin/access_codes/new.html.erb +6 -0
  20. data/app/views/admin/access_codes/show.html.erb +30 -0
  21. data/app/views/admin/permissions/_permission.html.erb +3 -0
  22. data/app/views/admin/roles/_role.html.erb +5 -9
  23. data/app/views/admin/roles/edit.html.erb +4 -17
  24. data/app/views/admin/roles/index.html.erb +16 -8
  25. data/app/views/admin/roles/new.html.erb +4 -16
  26. data/app/views/admin/roles/show.html.erb +3 -7
  27. data/app/views/admin/users/_activate.html.erb +2 -2
  28. data/app/views/admin/users/_row.html.erb +8 -2
  29. data/app/views/admin/users/_table.html.erb +10 -15
  30. data/app/views/admin/users/permissions.html.erb +8 -0
  31. data/app/views/user_mailer/access_code.text.html.erb +3 -0
  32. data/app/views/user_mailer/access_code.text.plain.erb +5 -0
  33. data/app/views/users/_signup_form.html.erb +7 -0
  34. data/app/views/users/welcome.html.erb +1 -1
  35. data/config/muck_users_routes.rb +5 -2
  36. data/db/migrate/20100123035450_create_access_codes.rb +19 -0
  37. data/db/migrate/20100123233654_create_access_code_requests.rb +14 -0
  38. data/lib/action_controller/authentic_application.rb +1 -1
  39. data/lib/active_record/acts/muck_access_code.rb +75 -0
  40. data/lib/active_record/acts/muck_access_code_request.rb +33 -0
  41. data/lib/active_record/acts/muck_user.rb +13 -1
  42. data/lib/muck_users.rb +8 -1
  43. data/lib/muck_users/muck_custom_form_builder.rb +10 -0
  44. data/locales/en.yml +163 -102
  45. data/muck-users.gemspec +41 -2
  46. data/test/rails_root/app/models/access_code.rb +3 -0
  47. data/test/rails_root/app/models/access_code_request.rb +3 -0
  48. data/test/rails_root/app/models/user.rb +12 -9
  49. data/test/rails_root/config/environment.rb +1 -0
  50. data/test/rails_root/config/global_config.yml +1 -1
  51. data/test/rails_root/db/migrate/20100123035450_create_access_codes.rb +19 -0
  52. data/test/rails_root/db/migrate/20100123233654_create_access_code_requests.rb +14 -0
  53. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +9 -2
  54. data/test/rails_root/public/javascripts/muck.js +39 -13
  55. data/test/rails_root/public/stylesheets/admin.css +20 -3
  56. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.2.custom.css +160 -0
  57. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.2.custom.css +160 -0
  58. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.2.custom.css +160 -0
  59. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.2.custom.css +160 -0
  60. data/test/rails_root/public/stylesheets/styles.css +9 -8
  61. data/test/rails_root/test/functional/access_code_requests_controller_test.rb +33 -0
  62. data/test/rails_root/test/functional/admin/access_codes_controller_test.rb +166 -0
  63. data/test/rails_root/test/unit/access_code_test.rb +100 -0
  64. data/test/rails_root/test/unit/role_test.rb +1 -0
  65. data/test/rails_root/test/unit/user_mailer_test.rb +13 -1
  66. data/test/rails_root/test/unit/user_test.rb +13 -9
  67. metadata +41 -2
@@ -0,0 +1,100 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: access_codes
4
+ #
5
+ # id :integer(4) not null, primary key
6
+ # code :string(255)
7
+ # uses :integer(4) default(0), not null
8
+ # unlimited :boolean(1) not null
9
+ # expires_at :datetime
10
+ # use_limit :integer(4) default(1), not null
11
+ # created_at :datetime
12
+ # updated_at :datetime
13
+ #
14
+
15
+ require File.dirname(__FILE__) + '/../test_helper'
16
+
17
+ class AccessCodeTest < ActiveSupport::TestCase
18
+
19
+ context "access code instance" do
20
+
21
+ setup do
22
+ Factory(:access_code)
23
+ end
24
+
25
+ should_validate_presence_of :code, :uses
26
+ should_validate_uniqueness_of :code
27
+ should_have_many :users
28
+
29
+ context "named scopes" do
30
+ should_scope_newest
31
+
32
+ context "by_alpha" do
33
+ setup do
34
+ AccessCode.delete_all
35
+ @first = Factory(:access_code, :code => 'a')
36
+ @second = Factory(:access_code, :code => 'b')
37
+ end
38
+ should "sort by code" do
39
+ assert_equal @first, AccessCode.by_alpha[0]
40
+ assert_equal @second, AccessCode.by_alpha[1]
41
+ end
42
+ end
43
+
44
+ context "active" do
45
+ setup do
46
+ AccessCode.delete_all
47
+ codes = [
48
+ Factory(:access_code, :code => 'expired', :expires_at => DateTime.now - 1.day),
49
+ Factory(:access_code, :code => 'overused', :uses => 10, :use_limit => 9, :expires_at => DateTime.now + 2.days),
50
+ Factory(:access_code, :code => 'valid_code', :expires_at => DateTime.now + 5.days),
51
+ ]
52
+ end
53
+ should "get active codes" do
54
+ AccessCode.active.each do |access_code|
55
+ assert_equal 'valid_code', access_code.code
56
+ end
57
+ end
58
+ end
59
+
60
+ end
61
+
62
+ should "use code" do
63
+ access_code = Factory(:access_code)
64
+ access_code.use_code
65
+ access_code.reload
66
+ assert access_code.uses == 1, "access code use was not 1"
67
+ end
68
+ should "not be overused" do
69
+ access_code = Factory(:access_code, :use_limit => 100)
70
+ assert access_code.overused? == false, "access code was not overused"
71
+ end
72
+ should "be over used" do
73
+ access_code = Factory(:access_code, :use_limit => 1)
74
+ access_code.use_code
75
+ access_code.use_code
76
+ assert access_code.overused? == true, "access code was not overused but should have been"
77
+ end
78
+ should "unlimited" do
79
+ access_code = Factory(:access_code, :use_limit => 1, :unlimited => true)
80
+ access_code.use_code
81
+ access_code.use_code
82
+ assert access_code.overused? == false, "access code should be unlimited"
83
+ end
84
+ should "be valid" do
85
+ code = 'accesscodetest'
86
+ access_code = Factory(:access_code, :code => code)
87
+ assert AccessCode.valid_code?(code), "access code was not valid"
88
+ end
89
+ should "be expired" do
90
+ access_code = Factory(:access_code, :unlimited => false, :expires_at => Time.now.to_date - 1.day)
91
+ assert access_code.expired?
92
+ end
93
+
94
+ should "generate a unique code" do
95
+ assert AccessCode.random_code.length > 0
96
+ end
97
+
98
+ end
99
+
100
+ end
@@ -4,6 +4,7 @@ class RoleTest < ActiveSupport::TestCase
4
4
 
5
5
  should_validate_presence_of :rolename
6
6
  should_have_many :permissions
7
+ should_have_many :users
7
8
 
8
9
  context "Create new role" do
9
10
  should "should create a new role" do
@@ -69,5 +69,17 @@ class UserMailerTest < ActiveSupport::TestCase
69
69
  assert_equal email.from, [GlobalConfig.from_email]
70
70
  end
71
71
 
72
- end
72
+ should "send access code email" do
73
+ email_address = 'testguy@example.com'
74
+ subject = 'test subject'
75
+ message = 'test message'
76
+ code = 'testcode'
77
+ response = UserMailer.deliver_access_code(email_address, subject, message, code)
78
+ assert !ActionMailer::Base.deliveries.empty?, "No email was sent"
79
+ email = ActionMailer::Base.deliveries.last
80
+ assert_equal email.to, [email_address]
81
+ assert_equal email.from, [GlobalConfig.from_email]
82
+ end
83
+
84
+ end
73
85
  end
@@ -2,29 +2,32 @@
2
2
  #
3
3
  # Table name: users
4
4
  #
5
- # id :integer not null, primary key
5
+ # id :integer(4) not null, primary key
6
6
  # login :string(255)
7
7
  # email :string(255)
8
8
  # first_name :string(255)
9
9
  # last_name :string(255)
10
10
  # crypted_password :string(255)
11
11
  # password_salt :string(255)
12
- # persistence_token :string(255)
13
- # single_access_token :string(255)
14
- # perishable_token :string(255)
15
- # login_count :integer default(0), not null
16
- # failed_login_count :integer default(0), not null
12
+ # persistence_token :string(255) not null
13
+ # single_access_token :string(255) not null
14
+ # perishable_token :string(255) not null
15
+ # login_count :integer(4) default(0), not null
16
+ # failed_login_count :integer(4) default(0), not null
17
17
  # last_request_at :datetime
18
- # last_login_at :datetime
19
18
  # current_login_at :datetime
19
+ # last_login_at :datetime
20
20
  # current_login_ip :string(255)
21
21
  # last_login_ip :string(255)
22
- # terms_of_service :boolean not null
22
+ # terms_of_service :boolean(1) not null
23
23
  # time_zone :string(255) default("UTC")
24
24
  # disabled_at :datetime
25
- # activated_at :datetime
26
25
  # created_at :datetime
26
+ # activated_at :datetime
27
27
  # updated_at :datetime
28
+ # identity_url :string(255)
29
+ # url_key :string(255)
30
+ # access_code_id :integer(4)
28
31
  #
29
32
 
30
33
  require File.dirname(__FILE__) + '/../test_helper'
@@ -45,6 +48,7 @@ class UserTest < ActiveSupport::TestCase
45
48
  should_not_allow_values_for :login, 'test guy', 'test.guy', 'testguy!', 'test@guy.com', :message => 'may only contain letters, numbers or a hyphen.'
46
49
  should_allow_values_for :login, 'testguy', 'test-guy'
47
50
 
51
+ should_belong_to :access_code
48
52
 
49
53
  should_not_allow_mass_assignment_of :crypted_password, :password_salt, :persistence_token, :single_access_token, :perishable_token, :login_count,
50
54
  :failed_login_count, :last_request_at, :last_login_at, :current_login_at, :current_login_ip, :last_login_ip,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-users
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.23
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-01-22 00:00:00 -07:00
13
+ date: 2010-01-30 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -77,8 +77,10 @@ files:
77
77
  - README.rdoc
78
78
  - Rakefile
79
79
  - VERSION
80
+ - app/controllers/admin/muck/access_codes_controller.rb
80
81
  - app/controllers/admin/muck/roles_controller.rb
81
82
  - app/controllers/admin/muck/users_controller.rb
83
+ - app/controllers/muck/access_code_requests_controller.rb
82
84
  - app/controllers/muck/activations_controller.rb
83
85
  - app/controllers/muck/password_resets_controller.rb
84
86
  - app/controllers/muck/user_sessions_controller.rb
@@ -88,6 +90,17 @@ files:
88
90
  - app/models/permission.rb
89
91
  - app/models/role.rb
90
92
  - app/models/user_mailer.rb
93
+ - app/views/access_code_requests/new.html.erb
94
+ - app/views/access_code_requests/show.html.erb
95
+ - app/views/admin/access_codes/_access_code.html.erb
96
+ - app/views/admin/access_codes/_form.html.erb
97
+ - app/views/admin/access_codes/_user.html.erb
98
+ - app/views/admin/access_codes/bulk.html.erb
99
+ - app/views/admin/access_codes/edit.html.erb
100
+ - app/views/admin/access_codes/index.html.erb
101
+ - app/views/admin/access_codes/new.html.erb
102
+ - app/views/admin/access_codes/show.html.erb
103
+ - app/views/admin/permissions/_permission.html.erb
91
104
  - app/views/admin/roles/_role.html.erb
92
105
  - app/views/admin/roles/edit.html.erb
93
106
  - app/views/admin/roles/index.html.erb
@@ -104,9 +117,12 @@ files:
104
117
  - app/views/admin/users/inactive.html.erb
105
118
  - app/views/admin/users/inactive_emails.html.erb
106
119
  - app/views/admin/users/index.html.erb
120
+ - app/views/admin/users/permissions.html.erb
107
121
  - app/views/admin/users/search.html.erb
108
122
  - app/views/password_resets/edit.html.erb
109
123
  - app/views/password_resets/new.html.erb
124
+ - app/views/user_mailer/access_code.text.html.erb
125
+ - app/views/user_mailer/access_code.text.plain.erb
110
126
  - app/views/user_mailer/activation_confirmation.text.ar.html.erb
111
127
  - app/views/user_mailer/activation_confirmation.text.ar.plain.erb
112
128
  - app/views/user_mailer/activation_confirmation.text.bg.html.erb
@@ -650,13 +666,18 @@ files:
650
666
  - config/muck_users_routes.rb
651
667
  - db/migrate/20090320174818_create_muck_permissions_and_roles.rb
652
668
  - db/migrate/20090327231918_create_users.rb
669
+ - db/migrate/20100123035450_create_access_codes.rb
670
+ - db/migrate/20100123233654_create_access_code_requests.rb
653
671
  - install.rb
654
672
  - lib/action_controller/authentic_application.rb
673
+ - lib/active_record/acts/muck_access_code.rb
674
+ - lib/active_record/acts/muck_access_code_request.rb
655
675
  - lib/active_record/acts/muck_user.rb
656
676
  - lib/active_record/secure_methods.rb
657
677
  - lib/muck_users.rb
658
678
  - lib/muck_users/exceptions.rb
659
679
  - lib/muck_users/initialize_routes.rb
680
+ - lib/muck_users/muck_custom_form_builder.rb
660
681
  - lib/muck_users/tasks.rb
661
682
  - locales/ar.yml
662
683
  - locales/bg.yml
@@ -718,6 +739,8 @@ files:
718
739
  - test/rails_root/app/controllers/default_controller.rb
719
740
  - test/rails_root/app/helpers/application_helper.rb
720
741
  - test/rails_root/app/models/.keep
742
+ - test/rails_root/app/models/access_code.rb
743
+ - test/rails_root/app/models/access_code_request.rb
721
744
  - test/rails_root/app/models/user.rb
722
745
  - test/rails_root/app/models/user_session.rb
723
746
  - test/rails_root/app/views/default/index.html.erb
@@ -741,6 +764,8 @@ files:
741
764
  - test/rails_root/db/migrate/20090402234137_create_languages.rb
742
765
  - test/rails_root/db/migrate/20090426041056_create_countries.rb
743
766
  - test/rails_root/db/migrate/20090426041103_create_states.rb
767
+ - test/rails_root/db/migrate/20100123035450_create_access_codes.rb
768
+ - test/rails_root/db/migrate/20100123233654_create_access_code_requests.rb
744
769
  - test/rails_root/features/step_definitions/webrat_steps.rb
745
770
  - test/rails_root/features/support/env.rb
746
771
  - test/rails_root/lib/tasks/muck.rake
@@ -1236,6 +1261,7 @@ files:
1236
1261
  - test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_cd0a0a_256x240.png
1237
1262
  - test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_ffffff_256x240.png
1238
1263
  - test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.1.custom.css
1264
+ - test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.2.custom.css
1239
1265
  - test/rails_root/public/stylesheets/jquery/jquery.autocomplete.css
1240
1266
  - test/rails_root/public/stylesheets/jquery/jquery.fancybox.css
1241
1267
  - test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png
@@ -1254,6 +1280,7 @@ files:
1254
1280
  - test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_d8e7f3_256x240.png
1255
1281
  - test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_f9bd01_256x240.png
1256
1282
  - test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.1.custom.css
1283
+ - test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.2.custom.css
1257
1284
  - test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
1258
1285
  - test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
1259
1286
  - test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
@@ -1268,6 +1295,7 @@ files:
1268
1295
  - test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_888888_256x240.png
1269
1296
  - test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png
1270
1297
  - test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.1.custom.css
1298
+ - test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.2.custom.css
1271
1299
  - test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
1272
1300
  - test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
1273
1301
  - test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
@@ -1283,6 +1311,7 @@ files:
1283
1311
  - test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png
1284
1312
  - test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png
1285
1313
  - test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.1.custom.css
1314
+ - test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.2.custom.css
1286
1315
  - test/rails_root/public/stylesheets/reset.css
1287
1316
  - test/rails_root/public/stylesheets/styles.css
1288
1317
  - test/rails_root/public/stylesheets/themes/blue/styles.css
@@ -1305,7 +1334,9 @@ files:
1305
1334
  - test/rails_root/script/runner
1306
1335
  - test/rails_root/script/server
1307
1336
  - test/rails_root/test/functional/.keep
1337
+ - test/rails_root/test/functional/access_code_requests_controller_test.rb
1308
1338
  - test/rails_root/test/functional/activations_controller_test.rb
1339
+ - test/rails_root/test/functional/admin/access_codes_controller_test.rb
1309
1340
  - test/rails_root/test/functional/admin/roles_controller_test.rb
1310
1341
  - test/rails_root/test/functional/admin/users_controller_test.rb
1311
1342
  - test/rails_root/test/functional/password_resets_controller_test.rb
@@ -1315,6 +1346,7 @@ files:
1315
1346
  - test/rails_root/test/integration/.keep
1316
1347
  - test/rails_root/test/test_helper.rb
1317
1348
  - test/rails_root/test/unit/.keep
1349
+ - test/rails_root/test/unit/access_code_test.rb
1318
1350
  - test/rails_root/test/unit/permission_test.rb
1319
1351
  - test/rails_root/test/unit/role_test.rb
1320
1352
  - test/rails_root/test/unit/secure_methods_test.rb
@@ -1356,6 +1388,8 @@ test_files:
1356
1388
  - test/rails_root/app/controllers/application_controller.rb
1357
1389
  - test/rails_root/app/controllers/default_controller.rb
1358
1390
  - test/rails_root/app/helpers/application_helper.rb
1391
+ - test/rails_root/app/models/access_code.rb
1392
+ - test/rails_root/app/models/access_code_request.rb
1359
1393
  - test/rails_root/app/models/user.rb
1360
1394
  - test/rails_root/app/models/user_session.rb
1361
1395
  - test/rails_root/config/boot.rb
@@ -1373,11 +1407,15 @@ test_files:
1373
1407
  - test/rails_root/db/migrate/20090402234137_create_languages.rb
1374
1408
  - test/rails_root/db/migrate/20090426041056_create_countries.rb
1375
1409
  - test/rails_root/db/migrate/20090426041103_create_states.rb
1410
+ - test/rails_root/db/migrate/20100123035450_create_access_codes.rb
1411
+ - test/rails_root/db/migrate/20100123233654_create_access_code_requests.rb
1376
1412
  - test/rails_root/features/step_definitions/webrat_steps.rb
1377
1413
  - test/rails_root/features/support/env.rb
1378
1414
  - test/rails_root/public/dispatch.rb
1379
1415
  - test/rails_root/script/create_project.rb
1416
+ - test/rails_root/test/functional/access_code_requests_controller_test.rb
1380
1417
  - test/rails_root/test/functional/activations_controller_test.rb
1418
+ - test/rails_root/test/functional/admin/access_codes_controller_test.rb
1381
1419
  - test/rails_root/test/functional/admin/roles_controller_test.rb
1382
1420
  - test/rails_root/test/functional/admin/users_controller_test.rb
1383
1421
  - test/rails_root/test/functional/password_resets_controller_test.rb
@@ -1385,6 +1423,7 @@ test_files:
1385
1423
  - test/rails_root/test/functional/username_request_controller_test.rb
1386
1424
  - test/rails_root/test/functional/users_controller_test.rb
1387
1425
  - test/rails_root/test/test_helper.rb
1426
+ - test/rails_root/test/unit/access_code_test.rb
1388
1427
  - test/rails_root/test/unit/permission_test.rb
1389
1428
  - test/rails_root/test/unit/role_test.rb
1390
1429
  - test/rails_root/test/unit/secure_methods_test.rb