muck-users 0.2.23 → 0.3.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 (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