a_b 0.1.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 (173) hide show
  1. data/MIT-LICENSE +18 -0
  2. data/README.markdown +4 -0
  3. data/Rakefile +74 -0
  4. data/config.ru +3 -0
  5. data/config/database.example.yml +6 -0
  6. data/config/externals.yml +6 -0
  7. data/config/mail.example.yml +32 -0
  8. data/db/migrate/001_a_b_tests.rb +14 -0
  9. data/db/migrate/002_a_b_variants.rb +19 -0
  10. data/db/migrate/003_a_b_users.rb +25 -0
  11. data/db/migrate/004_a_b_tokens.rb +12 -0
  12. data/features/example.feature +10 -0
  13. data/features/support/env.rb +35 -0
  14. data/features/support/rspec.rb +11 -0
  15. data/features/support/webrat.rb +3 -0
  16. data/gemspec.rb +41 -0
  17. data/lib/a_b.rb +31 -0
  18. data/lib/a_b/boot.rb +30 -0
  19. data/lib/a_b/controller/api.rb +32 -0
  20. data/lib/a_b/controller/application.rb +6 -0
  21. data/lib/a_b/controller/index.rb +16 -0
  22. data/lib/a_b/controller/sessions.rb +28 -0
  23. data/lib/a_b/controller/tests.rb +37 -0
  24. data/lib/a_b/controller/variants.rb +14 -0
  25. data/lib/a_b/helper/api.rb +8 -0
  26. data/lib/a_b/helper/application.rb +56 -0
  27. data/lib/a_b/helper/index.rb +12 -0
  28. data/lib/a_b/model/a_b_test.rb +65 -0
  29. data/lib/a_b/model/a_b_variant.rb +131 -0
  30. data/lib/a_b/model/token.rb +22 -0
  31. data/lib/a_b/model/user.rb +5 -0
  32. data/lib/a_b/model/user_session.rb +4 -0
  33. data/lib/a_b/view/index.haml +129 -0
  34. data/lib/a_b/view/index.sass +55 -0
  35. data/lib/a_b/view/layout.haml +15 -0
  36. data/lib/a_b/view/layout.sass +34 -0
  37. data/lib/a_b/view/log_in.haml +15 -0
  38. data/lib/a_b/view/log_in.sass +11 -0
  39. data/public/css/blueprint/ie.css +35 -0
  40. data/public/css/blueprint/print.css +29 -0
  41. data/public/css/blueprint/screen.css +257 -0
  42. data/public/js/index.js +126 -0
  43. data/public/js/jquery.js +19 -0
  44. data/public/js/visit.js +59 -0
  45. data/script/console +2 -0
  46. data/script/env.rb +30 -0
  47. data/spec/spec.opts +1 -0
  48. data/spec/spec_helper.rb +16 -0
  49. data/vendor/authlogic/CHANGELOG.rdoc +345 -0
  50. data/vendor/authlogic/LICENSE +20 -0
  51. data/vendor/authlogic/README.rdoc +246 -0
  52. data/vendor/authlogic/Rakefile +42 -0
  53. data/vendor/authlogic/VERSION.yml +5 -0
  54. data/vendor/authlogic/authlogic.gemspec +217 -0
  55. data/vendor/authlogic/generators/session/session_generator.rb +9 -0
  56. data/vendor/authlogic/generators/session/templates/session.rb +2 -0
  57. data/vendor/authlogic/init.rb +1 -0
  58. data/vendor/authlogic/lib/authlogic.rb +57 -0
  59. data/vendor/authlogic/lib/authlogic/acts_as_authentic/base.rb +107 -0
  60. data/vendor/authlogic/lib/authlogic/acts_as_authentic/email.rb +110 -0
  61. data/vendor/authlogic/lib/authlogic/acts_as_authentic/logged_in_status.rb +60 -0
  62. data/vendor/authlogic/lib/authlogic/acts_as_authentic/login.rb +141 -0
  63. data/vendor/authlogic/lib/authlogic/acts_as_authentic/magic_columns.rb +24 -0
  64. data/vendor/authlogic/lib/authlogic/acts_as_authentic/password.rb +344 -0
  65. data/vendor/authlogic/lib/authlogic/acts_as_authentic/perishable_token.rb +105 -0
  66. data/vendor/authlogic/lib/authlogic/acts_as_authentic/persistence_token.rb +68 -0
  67. data/vendor/authlogic/lib/authlogic/acts_as_authentic/restful_authentication.rb +61 -0
  68. data/vendor/authlogic/lib/authlogic/acts_as_authentic/session_maintenance.rb +139 -0
  69. data/vendor/authlogic/lib/authlogic/acts_as_authentic/single_access_token.rb +65 -0
  70. data/vendor/authlogic/lib/authlogic/acts_as_authentic/validations_scope.rb +32 -0
  71. data/vendor/authlogic/lib/authlogic/authenticates_many/association.rb +42 -0
  72. data/vendor/authlogic/lib/authlogic/authenticates_many/base.rb +55 -0
  73. data/vendor/authlogic/lib/authlogic/controller_adapters/abstract_adapter.rb +67 -0
  74. data/vendor/authlogic/lib/authlogic/controller_adapters/merb_adapter.rb +30 -0
  75. data/vendor/authlogic/lib/authlogic/controller_adapters/rails_adapter.rb +48 -0
  76. data/vendor/authlogic/lib/authlogic/controller_adapters/sinatra_adapter.rb +61 -0
  77. data/vendor/authlogic/lib/authlogic/crypto_providers/aes256.rb +43 -0
  78. data/vendor/authlogic/lib/authlogic/crypto_providers/bcrypt.rb +90 -0
  79. data/vendor/authlogic/lib/authlogic/crypto_providers/md5.rb +34 -0
  80. data/vendor/authlogic/lib/authlogic/crypto_providers/sha1.rb +35 -0
  81. data/vendor/authlogic/lib/authlogic/crypto_providers/sha256.rb +50 -0
  82. data/vendor/authlogic/lib/authlogic/crypto_providers/sha512.rb +50 -0
  83. data/vendor/authlogic/lib/authlogic/crypto_providers/wordpress.rb +43 -0
  84. data/vendor/authlogic/lib/authlogic/i18n.rb +83 -0
  85. data/vendor/authlogic/lib/authlogic/i18n/translator.rb +15 -0
  86. data/vendor/authlogic/lib/authlogic/random.rb +33 -0
  87. data/vendor/authlogic/lib/authlogic/regex.rb +25 -0
  88. data/vendor/authlogic/lib/authlogic/session/activation.rb +58 -0
  89. data/vendor/authlogic/lib/authlogic/session/active_record_trickery.rb +61 -0
  90. data/vendor/authlogic/lib/authlogic/session/base.rb +37 -0
  91. data/vendor/authlogic/lib/authlogic/session/brute_force_protection.rb +96 -0
  92. data/vendor/authlogic/lib/authlogic/session/callbacks.rb +88 -0
  93. data/vendor/authlogic/lib/authlogic/session/cookies.rb +130 -0
  94. data/vendor/authlogic/lib/authlogic/session/existence.rb +93 -0
  95. data/vendor/authlogic/lib/authlogic/session/foundation.rb +63 -0
  96. data/vendor/authlogic/lib/authlogic/session/http_auth.rb +58 -0
  97. data/vendor/authlogic/lib/authlogic/session/id.rb +41 -0
  98. data/vendor/authlogic/lib/authlogic/session/klass.rb +78 -0
  99. data/vendor/authlogic/lib/authlogic/session/magic_columns.rb +95 -0
  100. data/vendor/authlogic/lib/authlogic/session/magic_states.rb +59 -0
  101. data/vendor/authlogic/lib/authlogic/session/params.rb +101 -0
  102. data/vendor/authlogic/lib/authlogic/session/password.rb +240 -0
  103. data/vendor/authlogic/lib/authlogic/session/perishable_token.rb +18 -0
  104. data/vendor/authlogic/lib/authlogic/session/persistence.rb +70 -0
  105. data/vendor/authlogic/lib/authlogic/session/priority_record.rb +34 -0
  106. data/vendor/authlogic/lib/authlogic/session/scopes.rb +101 -0
  107. data/vendor/authlogic/lib/authlogic/session/session.rb +62 -0
  108. data/vendor/authlogic/lib/authlogic/session/timeout.rb +82 -0
  109. data/vendor/authlogic/lib/authlogic/session/unauthorized_record.rb +50 -0
  110. data/vendor/authlogic/lib/authlogic/session/validation.rb +82 -0
  111. data/vendor/authlogic/lib/authlogic/test_case.rb +120 -0
  112. data/vendor/authlogic/lib/authlogic/test_case/mock_controller.rb +45 -0
  113. data/vendor/authlogic/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
  114. data/vendor/authlogic/lib/authlogic/test_case/mock_logger.rb +10 -0
  115. data/vendor/authlogic/lib/authlogic/test_case/mock_request.rb +19 -0
  116. data/vendor/authlogic/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
  117. data/vendor/authlogic/rails/init.rb +1 -0
  118. data/vendor/authlogic/shoulda_macros/authlogic.rb +69 -0
  119. data/vendor/authlogic/test/acts_as_authentic_test/base_test.rb +18 -0
  120. data/vendor/authlogic/test/acts_as_authentic_test/email_test.rb +97 -0
  121. data/vendor/authlogic/test/acts_as_authentic_test/logged_in_status_test.rb +36 -0
  122. data/vendor/authlogic/test/acts_as_authentic_test/login_test.rb +109 -0
  123. data/vendor/authlogic/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
  124. data/vendor/authlogic/test/acts_as_authentic_test/password_test.rb +236 -0
  125. data/vendor/authlogic/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
  126. data/vendor/authlogic/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
  127. data/vendor/authlogic/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
  128. data/vendor/authlogic/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
  129. data/vendor/authlogic/test/acts_as_authentic_test/single_access_test.rb +44 -0
  130. data/vendor/authlogic/test/authenticates_many_test.rb +16 -0
  131. data/vendor/authlogic/test/crypto_provider_test/aes256_test.rb +14 -0
  132. data/vendor/authlogic/test/crypto_provider_test/bcrypt_test.rb +14 -0
  133. data/vendor/authlogic/test/crypto_provider_test/sha1_test.rb +23 -0
  134. data/vendor/authlogic/test/crypto_provider_test/sha256_test.rb +14 -0
  135. data/vendor/authlogic/test/crypto_provider_test/sha512_test.rb +14 -0
  136. data/vendor/authlogic/test/fixtures/companies.yml +5 -0
  137. data/vendor/authlogic/test/fixtures/employees.yml +17 -0
  138. data/vendor/authlogic/test/fixtures/projects.yml +3 -0
  139. data/vendor/authlogic/test/fixtures/users.yml +24 -0
  140. data/vendor/authlogic/test/i18n_test.rb +33 -0
  141. data/vendor/authlogic/test/libs/affiliate.rb +7 -0
  142. data/vendor/authlogic/test/libs/company.rb +6 -0
  143. data/vendor/authlogic/test/libs/employee.rb +7 -0
  144. data/vendor/authlogic/test/libs/employee_session.rb +2 -0
  145. data/vendor/authlogic/test/libs/ldaper.rb +3 -0
  146. data/vendor/authlogic/test/libs/ordered_hash.rb +9 -0
  147. data/vendor/authlogic/test/libs/project.rb +3 -0
  148. data/vendor/authlogic/test/libs/user.rb +5 -0
  149. data/vendor/authlogic/test/libs/user_session.rb +6 -0
  150. data/vendor/authlogic/test/random_test.rb +49 -0
  151. data/vendor/authlogic/test/session_test/activation_test.rb +43 -0
  152. data/vendor/authlogic/test/session_test/active_record_trickery_test.rb +36 -0
  153. data/vendor/authlogic/test/session_test/brute_force_protection_test.rb +101 -0
  154. data/vendor/authlogic/test/session_test/callbacks_test.rb +6 -0
  155. data/vendor/authlogic/test/session_test/cookies_test.rb +112 -0
  156. data/vendor/authlogic/test/session_test/credentials_test.rb +0 -0
  157. data/vendor/authlogic/test/session_test/existence_test.rb +64 -0
  158. data/vendor/authlogic/test/session_test/http_auth_test.rb +28 -0
  159. data/vendor/authlogic/test/session_test/id_test.rb +17 -0
  160. data/vendor/authlogic/test/session_test/klass_test.rb +40 -0
  161. data/vendor/authlogic/test/session_test/magic_columns_test.rb +62 -0
  162. data/vendor/authlogic/test/session_test/magic_states_test.rb +60 -0
  163. data/vendor/authlogic/test/session_test/params_test.rb +53 -0
  164. data/vendor/authlogic/test/session_test/password_test.rb +106 -0
  165. data/vendor/authlogic/test/session_test/perishability_test.rb +15 -0
  166. data/vendor/authlogic/test/session_test/persistence_test.rb +21 -0
  167. data/vendor/authlogic/test/session_test/scopes_test.rb +60 -0
  168. data/vendor/authlogic/test/session_test/session_test.rb +59 -0
  169. data/vendor/authlogic/test/session_test/timeout_test.rb +52 -0
  170. data/vendor/authlogic/test/session_test/unauthorized_record_test.rb +13 -0
  171. data/vendor/authlogic/test/session_test/validation_test.rb +23 -0
  172. data/vendor/authlogic/test/test_helper.rb +182 -0
  173. metadata +325 -0
@@ -0,0 +1,59 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module SessionTest
5
+ class ConfigTest < ActiveSupport::TestCase
6
+ def test_session_key
7
+ UserSession.session_key = "my_session_key"
8
+ assert_equal "my_session_key", UserSession.session_key
9
+
10
+ UserSession.session_key "user_credentials"
11
+ assert_equal "user_credentials", UserSession.session_key
12
+ end
13
+ end
14
+
15
+ class InstanceMethodsTest < ActiveSupport::TestCase
16
+ def test_persist_persist_by_session
17
+ ben = users(:ben)
18
+ set_session_for(ben)
19
+ assert session = UserSession.find
20
+ assert_equal ben, session.record
21
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
22
+ end
23
+
24
+ def test_persist_persist_by_session_with_token_only
25
+ ben = users(:ben)
26
+ set_session_for(ben)
27
+ controller.session["user_credentials_id"] = nil
28
+ assert session = UserSession.find
29
+ assert_equal ben, session.record
30
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
31
+ end
32
+
33
+ def test_after_save_update_session
34
+ ben = users(:ben)
35
+ session = UserSession.new(ben)
36
+ assert controller.session["user_credentials"].blank?
37
+ assert session.save
38
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
39
+ end
40
+
41
+ def test_after_destroy_update_session
42
+ ben = users(:ben)
43
+ set_session_for(ben)
44
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
45
+ assert session = UserSession.find
46
+ assert session.destroy
47
+ assert controller.session["user_credentials"].blank?
48
+ end
49
+
50
+ def test_after_persisting_update_session
51
+ ben = users(:ben)
52
+ set_cookie_for(ben)
53
+ assert controller.session["user_credentials"].blank?
54
+ assert UserSession.find
55
+ assert_equal ben.persistence_token, controller.session["user_credentials"]
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ module TimeoutTest
5
+ class ConfigTest < ActiveSupport::TestCase
6
+ def test_logout_on_timeout
7
+ UserSession.logout_on_timeout = true
8
+ assert UserSession.logout_on_timeout
9
+
10
+ UserSession.logout_on_timeout false
11
+ assert !UserSession.logout_on_timeout
12
+ end
13
+ end
14
+
15
+ class InstanceMethods < ActiveSupport::TestCase
16
+ def test_stale_state
17
+ UserSession.logout_on_timeout = true
18
+ ben = users(:ben)
19
+ ben.last_request_at = 3.years.ago
20
+ ben.save
21
+ set_session_for(ben)
22
+
23
+ session = UserSession.new
24
+ assert session.persisting?
25
+ assert session.stale?
26
+ assert_equal ben, session.stale_record
27
+ assert_nil session.record
28
+ assert_nil controller.session["user_credentials_id"]
29
+
30
+ set_session_for(ben)
31
+
32
+ ben.last_request_at = Time.now
33
+ ben.save
34
+
35
+ assert session.persisting?
36
+ assert !session.stale?
37
+ assert_nil session.stale_record
38
+
39
+ UserSession.logout_on_timeout = false
40
+ end
41
+
42
+ def test_successful_login
43
+ UserSession.logout_on_timeout = true
44
+ ben = users(:ben)
45
+ assert UserSession.create(:login => ben.login, :password => "benrocks")
46
+ assert session = UserSession.find
47
+ assert_equal ben, session.record
48
+ UserSession.logout_on_timeout = false
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ class UnauthorizedRecordTest < ActiveSupport::TestCase
5
+ def test_credentials
6
+ ben = users(:ben)
7
+ session = UserSession.new
8
+ session.credentials = [ben]
9
+ assert_equal ben, session.unauthorized_record
10
+ assert_equal({:unauthorized_record => "<protected>"}, session.credentials)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ module SessionTest
4
+ class ValidationTest < ActiveSupport::TestCase
5
+ def test_errors
6
+ session = UserSession.new
7
+ assert session.errors.is_a?(Authlogic::Session::Validation::Errors)
8
+ end
9
+
10
+ def test_valid
11
+ session = UserSession.new
12
+ assert !session.valid?
13
+ assert_nil session.record
14
+ assert session.errors.count > 0
15
+
16
+ ben = users(:ben)
17
+ session.unauthorized_record = ben
18
+ assert session.valid?
19
+ assert_equal ben, session.attempted_record
20
+ assert session.errors.empty?
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,182 @@
1
+ require "test/unit"
2
+ require "rubygems"
3
+ require "ruby-debug"
4
+ require "active_record"
5
+ require "active_record/fixtures"
6
+
7
+ # A temporary fix to bring active record errors up to speed with rails edge.
8
+ # I need to remove this once the new gem is released. This is only here so my tests pass.
9
+ unless defined?(::ActiveModel)
10
+ class ActiveRecord::Errors
11
+ def [](key)
12
+ value = on(key)
13
+ value.is_a?(Array) ? value : [value].compact
14
+ end
15
+ end
16
+ end
17
+
18
+
19
+ ActiveRecord::Schema.verbose = false
20
+
21
+ begin
22
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
23
+ rescue ArgumentError
24
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:")
25
+ end
26
+
27
+ ActiveRecord::Base.configurations = true
28
+ ActiveRecord::Schema.define(:version => 1) do
29
+ create_table :companies do |t|
30
+ t.datetime :created_at
31
+ t.datetime :updated_at
32
+ t.string :name
33
+ t.boolean :active
34
+ end
35
+
36
+ create_table :projects do |t|
37
+ t.datetime :created_at
38
+ t.datetime :updated_at
39
+ t.string :name
40
+ end
41
+
42
+ create_table :projects_users, :id => false do |t|
43
+ t.integer :project_id
44
+ t.integer :user_id
45
+ end
46
+
47
+ create_table :users do |t|
48
+ t.datetime :created_at
49
+ t.datetime :updated_at
50
+ t.integer :lock_version, :default => 0
51
+ t.integer :company_id
52
+ t.string :login
53
+ t.string :crypted_password
54
+ t.string :password_salt
55
+ t.string :persistence_token
56
+ t.string :single_access_token
57
+ t.string :perishable_token
58
+ t.string :email
59
+ t.string :first_name
60
+ t.string :last_name
61
+ t.integer :login_count, :default => 0, :null => false
62
+ t.integer :failed_login_count, :default => 0, :null => false
63
+ t.datetime :last_request_at
64
+ t.datetime :current_login_at
65
+ t.datetime :last_login_at
66
+ t.string :current_login_ip
67
+ t.string :last_login_ip
68
+ t.boolean :active, :default => true
69
+ t.boolean :approved, :default => true
70
+ t.boolean :confirmed, :default => true
71
+ end
72
+
73
+ create_table :employees do |t|
74
+ t.datetime :created_at
75
+ t.datetime :updated_at
76
+ t.integer :company_id
77
+ t.string :email
78
+ t.string :crypted_password
79
+ t.string :password_salt
80
+ t.string :persistence_token
81
+ t.string :first_name
82
+ t.string :last_name
83
+ t.integer :login_count, :default => 0, :null => false
84
+ t.datetime :last_request_at
85
+ t.datetime :current_login_at
86
+ t.datetime :last_login_at
87
+ t.string :current_login_ip
88
+ t.string :last_login_ip
89
+ end
90
+
91
+ create_table :affiliates do |t|
92
+ t.datetime :created_at
93
+ t.datetime :updated_at
94
+ t.integer :company_id
95
+ t.string :username
96
+ t.string :pw_hash
97
+ t.string :pw_salt
98
+ t.string :persistence_token
99
+ end
100
+
101
+ create_table :ldapers do |t|
102
+ t.datetime :created_at
103
+ t.datetime :updated_at
104
+ t.string :ldap_login
105
+ t.string :persistence_token
106
+ end
107
+ end
108
+
109
+ require File.dirname(__FILE__) + '/../lib/authlogic' unless defined?(Authlogic)
110
+ require File.dirname(__FILE__) + '/../lib/authlogic/test_case'
111
+ require File.dirname(__FILE__) + '/libs/project'
112
+ require File.dirname(__FILE__) + '/libs/affiliate'
113
+ require File.dirname(__FILE__) + '/libs/employee'
114
+ require File.dirname(__FILE__) + '/libs/employee_session'
115
+ require File.dirname(__FILE__) + '/libs/ldaper'
116
+ require File.dirname(__FILE__) + '/libs/user'
117
+ require File.dirname(__FILE__) + '/libs/user_session'
118
+ require File.dirname(__FILE__) + '/libs/company'
119
+
120
+ Authlogic::CryptoProviders::AES256.key = "myafdsfddddddddddddddddddddddddddddddddddddddddddddddd"
121
+
122
+ class ActiveSupport::TestCase
123
+ include ActiveRecord::TestFixtures
124
+ self.fixture_path = File.dirname(__FILE__) + "/fixtures"
125
+ self.use_transactional_fixtures = false
126
+ self.use_instantiated_fixtures = false
127
+ self.pre_loaded_fixtures = false
128
+ fixtures :all
129
+ setup :activate_authlogic
130
+
131
+ private
132
+ def password_for(user)
133
+ case user
134
+ when users(:ben)
135
+ "benrocks"
136
+ when users(:zack)
137
+ "zackrocks"
138
+ end
139
+ end
140
+
141
+ def http_basic_auth_for(user = nil, &block)
142
+ unless user.blank?
143
+ controller.http_user = user.login
144
+ controller.http_password = password_for(user)
145
+ end
146
+ yield
147
+ controller.http_user = controller.http_password = nil
148
+ end
149
+
150
+ def set_cookie_for(user, id = nil)
151
+ controller.cookies["user_credentials"] = {:value => user.persistence_token, :expires => nil}
152
+ end
153
+
154
+ def unset_cookie
155
+ controller.cookies["user_credentials"] = nil
156
+ end
157
+
158
+ def set_params_for(user, id = nil)
159
+ controller.params["user_credentials"] = user.single_access_token
160
+ end
161
+
162
+ def unset_params
163
+ controller.params["user_credentials"] = nil
164
+ end
165
+
166
+ def set_request_content_type(type)
167
+ controller.request_content_type = type
168
+ end
169
+
170
+ def unset_request_content_type
171
+ controller.request_content_type = nil
172
+ end
173
+
174
+ def set_session_for(user, id = nil)
175
+ controller.session["user_credentials"] = user.persistence_token
176
+ controller.session["user_credentials_id"] = user.id
177
+ end
178
+
179
+ def unset_session
180
+ controller.session["user_credentials"] = controller.session["user_credentials_id"] = nil
181
+ end
182
+ end
metadata ADDED
@@ -0,0 +1,325 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: a_b
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Winton Welsh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-19 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: active_wrapper
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.2.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: cucumber
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.4.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: haml
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.2.13
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rack
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.1
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack-flash
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "="
62
+ - !ruby/object:Gem::Version
63
+ version: 0.1.1
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: rack-test
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "="
72
+ - !ruby/object:Gem::Version
73
+ version: 0.5.1
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: rspec
77
+ type: :runtime
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "="
82
+ - !ruby/object:Gem::Version
83
+ version: 1.2.9
84
+ version:
85
+ - !ruby/object:Gem::Dependency
86
+ name: shotgun
87
+ type: :runtime
88
+ version_requirement:
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "="
92
+ - !ruby/object:Gem::Version
93
+ version: "0.4"
94
+ version:
95
+ - !ruby/object:Gem::Dependency
96
+ name: sinatra
97
+ type: :runtime
98
+ version_requirement:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.9.4
104
+ version:
105
+ - !ruby/object:Gem::Dependency
106
+ name: webrat
107
+ type: :runtime
108
+ version_requirement:
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "="
112
+ - !ruby/object:Gem::Version
113
+ version: 0.5.3
114
+ version:
115
+ description:
116
+ email: mail@wintoni.us
117
+ executables: []
118
+
119
+ extensions: []
120
+
121
+ extra_rdoc_files:
122
+ - README.markdown
123
+ files:
124
+ - config/database.example.yml
125
+ - config/externals.yml
126
+ - config/mail.example.yml
127
+ - config.ru
128
+ - db/migrate/001_a_b_tests.rb
129
+ - db/migrate/002_a_b_variants.rb
130
+ - db/migrate/003_a_b_users.rb
131
+ - db/migrate/004_a_b_tokens.rb
132
+ - features/example.feature
133
+ - features/support/env.rb
134
+ - features/support/rspec.rb
135
+ - features/support/webrat.rb
136
+ - gemspec.rb
137
+ - lib/a_b/boot.rb
138
+ - lib/a_b/controller/api.rb
139
+ - lib/a_b/controller/application.rb
140
+ - lib/a_b/controller/index.rb
141
+ - lib/a_b/controller/sessions.rb
142
+ - lib/a_b/controller/tests.rb
143
+ - lib/a_b/controller/variants.rb
144
+ - lib/a_b/helper/api.rb
145
+ - lib/a_b/helper/application.rb
146
+ - lib/a_b/helper/index.rb
147
+ - lib/a_b/model/a_b_test.rb
148
+ - lib/a_b/model/a_b_variant.rb
149
+ - lib/a_b/model/token.rb
150
+ - lib/a_b/model/user.rb
151
+ - lib/a_b/model/user_session.rb
152
+ - lib/a_b/view/index.haml
153
+ - lib/a_b/view/index.sass
154
+ - lib/a_b/view/layout.haml
155
+ - lib/a_b/view/layout.sass
156
+ - lib/a_b/view/log_in.haml
157
+ - lib/a_b/view/log_in.sass
158
+ - lib/a_b.rb
159
+ - MIT-LICENSE
160
+ - public/css/blueprint/ie.css
161
+ - public/css/blueprint/print.css
162
+ - public/css/blueprint/screen.css
163
+ - public/js/index.js
164
+ - public/js/jquery.js
165
+ - public/js/visit.js
166
+ - Rakefile
167
+ - README.markdown
168
+ - script/console
169
+ - script/env.rb
170
+ - spec/spec.opts
171
+ - spec/spec_helper.rb
172
+ - vendor/authlogic/authlogic.gemspec
173
+ - vendor/authlogic/CHANGELOG.rdoc
174
+ - vendor/authlogic/generators/session/session_generator.rb
175
+ - vendor/authlogic/generators/session/templates/session.rb
176
+ - vendor/authlogic/init.rb
177
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/base.rb
178
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/email.rb
179
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/logged_in_status.rb
180
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/login.rb
181
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/magic_columns.rb
182
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/password.rb
183
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/perishable_token.rb
184
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/persistence_token.rb
185
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/restful_authentication.rb
186
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/session_maintenance.rb
187
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/single_access_token.rb
188
+ - vendor/authlogic/lib/authlogic/acts_as_authentic/validations_scope.rb
189
+ - vendor/authlogic/lib/authlogic/authenticates_many/association.rb
190
+ - vendor/authlogic/lib/authlogic/authenticates_many/base.rb
191
+ - vendor/authlogic/lib/authlogic/controller_adapters/abstract_adapter.rb
192
+ - vendor/authlogic/lib/authlogic/controller_adapters/merb_adapter.rb
193
+ - vendor/authlogic/lib/authlogic/controller_adapters/rails_adapter.rb
194
+ - vendor/authlogic/lib/authlogic/controller_adapters/sinatra_adapter.rb
195
+ - vendor/authlogic/lib/authlogic/crypto_providers/aes256.rb
196
+ - vendor/authlogic/lib/authlogic/crypto_providers/bcrypt.rb
197
+ - vendor/authlogic/lib/authlogic/crypto_providers/md5.rb
198
+ - vendor/authlogic/lib/authlogic/crypto_providers/sha1.rb
199
+ - vendor/authlogic/lib/authlogic/crypto_providers/sha256.rb
200
+ - vendor/authlogic/lib/authlogic/crypto_providers/sha512.rb
201
+ - vendor/authlogic/lib/authlogic/crypto_providers/wordpress.rb
202
+ - vendor/authlogic/lib/authlogic/i18n/translator.rb
203
+ - vendor/authlogic/lib/authlogic/i18n.rb
204
+ - vendor/authlogic/lib/authlogic/random.rb
205
+ - vendor/authlogic/lib/authlogic/regex.rb
206
+ - vendor/authlogic/lib/authlogic/session/activation.rb
207
+ - vendor/authlogic/lib/authlogic/session/active_record_trickery.rb
208
+ - vendor/authlogic/lib/authlogic/session/base.rb
209
+ - vendor/authlogic/lib/authlogic/session/brute_force_protection.rb
210
+ - vendor/authlogic/lib/authlogic/session/callbacks.rb
211
+ - vendor/authlogic/lib/authlogic/session/cookies.rb
212
+ - vendor/authlogic/lib/authlogic/session/existence.rb
213
+ - vendor/authlogic/lib/authlogic/session/foundation.rb
214
+ - vendor/authlogic/lib/authlogic/session/http_auth.rb
215
+ - vendor/authlogic/lib/authlogic/session/id.rb
216
+ - vendor/authlogic/lib/authlogic/session/klass.rb
217
+ - vendor/authlogic/lib/authlogic/session/magic_columns.rb
218
+ - vendor/authlogic/lib/authlogic/session/magic_states.rb
219
+ - vendor/authlogic/lib/authlogic/session/params.rb
220
+ - vendor/authlogic/lib/authlogic/session/password.rb
221
+ - vendor/authlogic/lib/authlogic/session/perishable_token.rb
222
+ - vendor/authlogic/lib/authlogic/session/persistence.rb
223
+ - vendor/authlogic/lib/authlogic/session/priority_record.rb
224
+ - vendor/authlogic/lib/authlogic/session/scopes.rb
225
+ - vendor/authlogic/lib/authlogic/session/session.rb
226
+ - vendor/authlogic/lib/authlogic/session/timeout.rb
227
+ - vendor/authlogic/lib/authlogic/session/unauthorized_record.rb
228
+ - vendor/authlogic/lib/authlogic/session/validation.rb
229
+ - vendor/authlogic/lib/authlogic/test_case/mock_controller.rb
230
+ - vendor/authlogic/lib/authlogic/test_case/mock_cookie_jar.rb
231
+ - vendor/authlogic/lib/authlogic/test_case/mock_logger.rb
232
+ - vendor/authlogic/lib/authlogic/test_case/mock_request.rb
233
+ - vendor/authlogic/lib/authlogic/test_case/rails_request_adapter.rb
234
+ - vendor/authlogic/lib/authlogic/test_case.rb
235
+ - vendor/authlogic/lib/authlogic.rb
236
+ - vendor/authlogic/LICENSE
237
+ - vendor/authlogic/rails/init.rb
238
+ - vendor/authlogic/Rakefile
239
+ - vendor/authlogic/README.rdoc
240
+ - vendor/authlogic/shoulda_macros/authlogic.rb
241
+ - vendor/authlogic/test/acts_as_authentic_test/base_test.rb
242
+ - vendor/authlogic/test/acts_as_authentic_test/email_test.rb
243
+ - vendor/authlogic/test/acts_as_authentic_test/logged_in_status_test.rb
244
+ - vendor/authlogic/test/acts_as_authentic_test/login_test.rb
245
+ - vendor/authlogic/test/acts_as_authentic_test/magic_columns_test.rb
246
+ - vendor/authlogic/test/acts_as_authentic_test/password_test.rb
247
+ - vendor/authlogic/test/acts_as_authentic_test/perishable_token_test.rb
248
+ - vendor/authlogic/test/acts_as_authentic_test/persistence_token_test.rb
249
+ - vendor/authlogic/test/acts_as_authentic_test/restful_authentication_test.rb
250
+ - vendor/authlogic/test/acts_as_authentic_test/session_maintenance_test.rb
251
+ - vendor/authlogic/test/acts_as_authentic_test/single_access_test.rb
252
+ - vendor/authlogic/test/authenticates_many_test.rb
253
+ - vendor/authlogic/test/crypto_provider_test/aes256_test.rb
254
+ - vendor/authlogic/test/crypto_provider_test/bcrypt_test.rb
255
+ - vendor/authlogic/test/crypto_provider_test/sha1_test.rb
256
+ - vendor/authlogic/test/crypto_provider_test/sha256_test.rb
257
+ - vendor/authlogic/test/crypto_provider_test/sha512_test.rb
258
+ - vendor/authlogic/test/fixtures/companies.yml
259
+ - vendor/authlogic/test/fixtures/employees.yml
260
+ - vendor/authlogic/test/fixtures/projects.yml
261
+ - vendor/authlogic/test/fixtures/users.yml
262
+ - vendor/authlogic/test/i18n_test.rb
263
+ - vendor/authlogic/test/libs/affiliate.rb
264
+ - vendor/authlogic/test/libs/company.rb
265
+ - vendor/authlogic/test/libs/employee.rb
266
+ - vendor/authlogic/test/libs/employee_session.rb
267
+ - vendor/authlogic/test/libs/ldaper.rb
268
+ - vendor/authlogic/test/libs/ordered_hash.rb
269
+ - vendor/authlogic/test/libs/project.rb
270
+ - vendor/authlogic/test/libs/user.rb
271
+ - vendor/authlogic/test/libs/user_session.rb
272
+ - vendor/authlogic/test/random_test.rb
273
+ - vendor/authlogic/test/session_test/activation_test.rb
274
+ - vendor/authlogic/test/session_test/active_record_trickery_test.rb
275
+ - vendor/authlogic/test/session_test/brute_force_protection_test.rb
276
+ - vendor/authlogic/test/session_test/callbacks_test.rb
277
+ - vendor/authlogic/test/session_test/cookies_test.rb
278
+ - vendor/authlogic/test/session_test/credentials_test.rb
279
+ - vendor/authlogic/test/session_test/existence_test.rb
280
+ - vendor/authlogic/test/session_test/http_auth_test.rb
281
+ - vendor/authlogic/test/session_test/id_test.rb
282
+ - vendor/authlogic/test/session_test/klass_test.rb
283
+ - vendor/authlogic/test/session_test/magic_columns_test.rb
284
+ - vendor/authlogic/test/session_test/magic_states_test.rb
285
+ - vendor/authlogic/test/session_test/params_test.rb
286
+ - vendor/authlogic/test/session_test/password_test.rb
287
+ - vendor/authlogic/test/session_test/perishability_test.rb
288
+ - vendor/authlogic/test/session_test/persistence_test.rb
289
+ - vendor/authlogic/test/session_test/scopes_test.rb
290
+ - vendor/authlogic/test/session_test/session_test.rb
291
+ - vendor/authlogic/test/session_test/timeout_test.rb
292
+ - vendor/authlogic/test/session_test/unauthorized_record_test.rb
293
+ - vendor/authlogic/test/session_test/validation_test.rb
294
+ - vendor/authlogic/test/test_helper.rb
295
+ - vendor/authlogic/VERSION.yml
296
+ has_rdoc: true
297
+ homepage: http://github.com/winton/a_b
298
+ licenses: []
299
+
300
+ post_install_message:
301
+ rdoc_options: []
302
+
303
+ require_paths:
304
+ - lib
305
+ required_ruby_version: !ruby/object:Gem::Requirement
306
+ requirements:
307
+ - - ">="
308
+ - !ruby/object:Gem::Version
309
+ version: "0"
310
+ version:
311
+ required_rubygems_version: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - ">="
314
+ - !ruby/object:Gem::Version
315
+ version: "0"
316
+ version:
317
+ requirements: []
318
+
319
+ rubyforge_project:
320
+ rubygems_version: 1.3.5
321
+ signing_key:
322
+ specification_version: 3
323
+ summary: A/B test data aggregator as a Sinatra web service
324
+ test_files: []
325
+