mongo_session_store-rails 7.0.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 (130) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +44 -0
  5. data/.travis.yml +29 -0
  6. data/Gemfile +3 -0
  7. data/README.md +144 -0
  8. data/Rakefile +87 -0
  9. data/gemfiles/rails-4.0-mongo.gemfile +9 -0
  10. data/gemfiles/rails-4.0-mongoid.gemfile +9 -0
  11. data/gemfiles/rails-4.1-mongo.gemfile +9 -0
  12. data/gemfiles/rails-4.1-mongoid.gemfile +9 -0
  13. data/gemfiles/rails-4.2-mongo.gemfile +9 -0
  14. data/gemfiles/rails-4.2-mongoid.gemfile +9 -0
  15. data/lib/mongo_session_store-rails.rb +1 -0
  16. data/lib/mongo_session_store.rb +27 -0
  17. data/lib/mongo_session_store/mongo_store.rb +102 -0
  18. data/lib/mongo_session_store/mongo_store_base.rb +69 -0
  19. data/lib/mongo_session_store/mongoid_store.rb +47 -0
  20. data/lib/mongo_session_store/version.rb +3 -0
  21. data/mongo_session_store.gemspec +22 -0
  22. data/perf/benchmark.rb +99 -0
  23. data/spec/.rubocop.yml +4 -0
  24. data/spec/integrations/devise_spec.rb +109 -0
  25. data/spec/lib/mongo_session_store/mongo_store/session_spec.rb +250 -0
  26. data/spec/lib/mongo_session_store/mongo_store_base_spec.rb +269 -0
  27. data/spec/lib/mongo_session_store/mongo_store_spec.rb +13 -0
  28. data/spec/lib/mongo_session_store/mongoid_store/session_spec.rb +67 -0
  29. data/spec/lib/mongo_session_store/mongoid_store_spec.rb +13 -0
  30. data/spec/lib/mongo_session_store_spec.rb +64 -0
  31. data/spec/rails_helper.rb +19 -0
  32. data/spec/spec_helper.rb +44 -0
  33. data/spec/support/apps/rails_4.0_app/Rakefile +6 -0
  34. data/spec/support/apps/rails_4.0_app/app/controllers/application_controller.rb +5 -0
  35. data/spec/support/apps/rails_4.0_app/app/controllers/home_controller.rb +4 -0
  36. data/spec/support/apps/rails_4.0_app/app/models/user.rb +5 -0
  37. data/spec/support/apps/rails_4.0_app/app/views/home/index.html.erb +10 -0
  38. data/spec/support/apps/rails_4.0_app/app/views/layouts/application.html.erb +17 -0
  39. data/spec/support/apps/rails_4.0_app/bin/bundle +3 -0
  40. data/spec/support/apps/rails_4.0_app/bin/rails +4 -0
  41. data/spec/support/apps/rails_4.0_app/bin/rake +4 -0
  42. data/spec/support/apps/rails_4.0_app/config.ru +4 -0
  43. data/spec/support/apps/rails_4.0_app/config/application.rb +11 -0
  44. data/spec/support/apps/rails_4.0_app/config/boot.rb +4 -0
  45. data/spec/support/apps/rails_4.0_app/config/database.yml +11 -0
  46. data/spec/support/apps/rails_4.0_app/config/environment.rb +5 -0
  47. data/spec/support/apps/rails_4.0_app/config/environments/development.rb +12 -0
  48. data/spec/support/apps/rails_4.0_app/config/environments/test.rb +19 -0
  49. data/spec/support/apps/rails_4.0_app/config/initializers/devise.rb +254 -0
  50. data/spec/support/apps/rails_4.0_app/config/initializers/secret_token.rb +12 -0
  51. data/spec/support/apps/rails_4.0_app/config/initializers/session_store.rb +1 -0
  52. data/spec/support/apps/rails_4.0_app/config/locales/devise.en.yml +59 -0
  53. data/spec/support/apps/rails_4.0_app/config/locales/en.yml +23 -0
  54. data/spec/support/apps/rails_4.0_app/config/mongo.yml +11 -0
  55. data/spec/support/apps/rails_4.0_app/config/mongoid.yml +13 -0
  56. data/spec/support/apps/rails_4.0_app/config/routes.rb +4 -0
  57. data/spec/support/apps/rails_4.0_app/db/migrate/20140301171212_add_devise_users.rb +11 -0
  58. data/spec/support/apps/rails_4.0_app/db/schema.rb +25 -0
  59. data/spec/support/apps/rails_4.0_app/db/seeds.rb +7 -0
  60. data/spec/support/apps/rails_4.0_app/lib/assets/.keep +0 -0
  61. data/spec/support/apps/rails_4.0_app/lib/tasks/.keep +0 -0
  62. data/spec/support/apps/rails_4.0_app/log/.keep +0 -0
  63. data/spec/support/apps/rails_4.0_app/public/404.html +58 -0
  64. data/spec/support/apps/rails_4.0_app/public/422.html +58 -0
  65. data/spec/support/apps/rails_4.0_app/public/500.html +57 -0
  66. data/spec/support/apps/rails_4.0_app/public/favicon.ico +0 -0
  67. data/spec/support/apps/rails_4.0_app/public/robots.txt +5 -0
  68. data/spec/support/apps/rails_4.1_app/Rakefile +3 -0
  69. data/spec/support/apps/rails_4.1_app/app/controllers/application_controller.rb +5 -0
  70. data/spec/support/apps/rails_4.1_app/app/controllers/home_controller.rb +4 -0
  71. data/spec/support/apps/rails_4.1_app/app/models/user.rb +5 -0
  72. data/spec/support/apps/rails_4.1_app/app/views/home/index.html.erb +10 -0
  73. data/spec/support/apps/rails_4.1_app/app/views/layouts/application.html.erb +17 -0
  74. data/spec/support/apps/rails_4.1_app/bin/bundle +3 -0
  75. data/spec/support/apps/rails_4.1_app/bin/rails +4 -0
  76. data/spec/support/apps/rails_4.1_app/bin/rake +4 -0
  77. data/spec/support/apps/rails_4.1_app/config.ru +2 -0
  78. data/spec/support/apps/rails_4.1_app/config/application.rb +11 -0
  79. data/spec/support/apps/rails_4.1_app/config/boot.rb +4 -0
  80. data/spec/support/apps/rails_4.1_app/config/database.yml +11 -0
  81. data/spec/support/apps/rails_4.1_app/config/environment.rb +5 -0
  82. data/spec/support/apps/rails_4.1_app/config/environments/development.rb +12 -0
  83. data/spec/support/apps/rails_4.1_app/config/environments/test.rb +19 -0
  84. data/spec/support/apps/rails_4.1_app/config/initializers/devise.rb +254 -0
  85. data/spec/support/apps/rails_4.1_app/config/initializers/session_store.rb +1 -0
  86. data/spec/support/apps/rails_4.1_app/config/locales/devise.en.yml +59 -0
  87. data/spec/support/apps/rails_4.1_app/config/locales/en.yml +23 -0
  88. data/spec/support/apps/rails_4.1_app/config/mongo.yml +11 -0
  89. data/spec/support/apps/rails_4.1_app/config/mongoid.yml +13 -0
  90. data/spec/support/apps/rails_4.1_app/config/routes.rb +4 -0
  91. data/spec/support/apps/rails_4.1_app/config/secrets.yml +22 -0
  92. data/spec/support/apps/rails_4.1_app/db/migrate/20140301171212_add_devise_users.rb +11 -0
  93. data/spec/support/apps/rails_4.1_app/db/schema.rb +25 -0
  94. data/spec/support/apps/rails_4.1_app/db/seeds.rb +7 -0
  95. data/spec/support/apps/rails_4.1_app/lib/assets/.keep +0 -0
  96. data/spec/support/apps/rails_4.1_app/lib/tasks/.keep +0 -0
  97. data/spec/support/apps/rails_4.1_app/log/.keep +0 -0
  98. data/spec/support/apps/rails_4.1_app/public/404.html +67 -0
  99. data/spec/support/apps/rails_4.1_app/public/422.html +67 -0
  100. data/spec/support/apps/rails_4.1_app/public/500.html +66 -0
  101. data/spec/support/apps/rails_4.1_app/public/favicon.ico +0 -0
  102. data/spec/support/apps/rails_4.1_app/public/robots.txt +5 -0
  103. data/spec/support/apps/rails_4.2_app/Rakefile +2 -0
  104. data/spec/support/apps/rails_4.2_app/app/controllers/application_controller.rb +5 -0
  105. data/spec/support/apps/rails_4.2_app/app/controllers/home_controller.rb +4 -0
  106. data/spec/support/apps/rails_4.2_app/app/models/user.rb +5 -0
  107. data/spec/support/apps/rails_4.2_app/app/views/home/index.html.erb +10 -0
  108. data/spec/support/apps/rails_4.2_app/app/views/layouts/application.html.erb +15 -0
  109. data/spec/support/apps/rails_4.2_app/bin/bundle +3 -0
  110. data/spec/support/apps/rails_4.2_app/bin/rails +8 -0
  111. data/spec/support/apps/rails_4.2_app/bin/rake +4 -0
  112. data/spec/support/apps/rails_4.2_app/config.ru +4 -0
  113. data/spec/support/apps/rails_4.2_app/config/application.rb +11 -0
  114. data/spec/support/apps/rails_4.2_app/config/boot.rb +3 -0
  115. data/spec/support/apps/rails_4.2_app/config/database.yml +11 -0
  116. data/spec/support/apps/rails_4.2_app/config/environment.rb +5 -0
  117. data/spec/support/apps/rails_4.2_app/config/environments/development.rb +12 -0
  118. data/spec/support/apps/rails_4.2_app/config/environments/test.rb +19 -0
  119. data/spec/support/apps/rails_4.2_app/config/initializers/devise.rb +254 -0
  120. data/spec/support/apps/rails_4.2_app/config/initializers/session_store.rb +1 -0
  121. data/spec/support/apps/rails_4.2_app/config/locales/en.yml +23 -0
  122. data/spec/support/apps/rails_4.2_app/config/mongo.yml +11 -0
  123. data/spec/support/apps/rails_4.2_app/config/mongoid.yml +13 -0
  124. data/spec/support/apps/rails_4.2_app/config/routes.rb +4 -0
  125. data/spec/support/apps/rails_4.2_app/config/secrets.yml +22 -0
  126. data/spec/support/apps/rails_4.2_app/db/migrate/20140301171212_add_devise_users.rb +11 -0
  127. data/spec/support/apps/rails_4.2_app/db/schema.rb +25 -0
  128. data/spec/support/apps/rails_4.2_app/db/seeds.rb +7 -0
  129. data/spec/support/helpers/test_database_helper.rb +22 -0
  130. metadata +367 -0
@@ -0,0 +1,269 @@
1
+ require "spec_helper"
2
+ require "ostruct"
3
+
4
+ class TestStore < ActionDispatch::Session::MongoStoreBase
5
+ class Session < OpenStruct
6
+ def self.where(_ = {})
7
+ []
8
+ end
9
+ end
10
+ end
11
+
12
+ describe ActionDispatch::Session::MongoStoreBase do
13
+ describe ".session_class" do
14
+ let(:store_class) { TestStore }
15
+ let(:store) { store_class.new(nil) }
16
+ subject { store_class.session_class }
17
+
18
+ it "returns child session class" do
19
+ expect(subject).to eq(TestStore::Session)
20
+ end
21
+ end
22
+
23
+ describe "#get_session" do
24
+ let(:env) { {} }
25
+ let(:store_class) { TestStore }
26
+ let(:store) { store_class.new(nil) }
27
+ let(:session_class) { store_class::Session }
28
+ let(:session_record) { env[store_class::SESSION_RECORD_KEY] }
29
+
30
+ context "when no session exists" do
31
+ it "creates a new session" do
32
+ sid, session_data = store.send(:get_session, env, nil)
33
+
34
+ expect(sid).to be_kind_of(String)
35
+ expect(session_data).to be_nil
36
+ expect(session_record).to be_kind_of(session_class)
37
+ expect(session_record._id).to eq sid
38
+
39
+ env_record = env[described_class::SESSION_RECORD_KEY]
40
+ expect(env_record).to be_kind_of(session_class)
41
+ expect(env_record._id).to eq sid
42
+ end
43
+ end
44
+
45
+ context "when given session is found" do
46
+ let(:session) { session_class.new(:_id => "foo", :data => nil) }
47
+ before do
48
+ expect(session_class).to receive(:where).and_return([session])
49
+ end
50
+
51
+ it "returns the existing session" do
52
+ sid, session_data = store.send(:get_session, env, session._id)
53
+
54
+ expect(sid).to eq(session._id)
55
+ expect(sid).to be_kind_of(String)
56
+ expect(session_data).to be_nil
57
+ expect(session_record).to be_kind_of(session_class)
58
+ expect(session_record._id).to eq sid
59
+
60
+ env_record = env[described_class::SESSION_RECORD_KEY]
61
+ expect(env_record).to be_kind_of(session_class)
62
+ expect(env_record._id).to eq sid
63
+ end
64
+ end
65
+
66
+ context "when given session is not found" do
67
+ let(:not_existing_session_id) { SecureRandom.hex }
68
+
69
+ it "creates a new session" do
70
+ sid, session_data = store.send(:get_session, env, not_existing_session_id)
71
+
72
+ expect(sid).to_not eq(not_existing_session_id)
73
+ expect(sid).to be_kind_of(String)
74
+ expect(session_data).to be_nil
75
+ expect(session_record).to be_kind_of(session_class)
76
+ expect(session_record._id).to eq sid
77
+
78
+ env_record = env[described_class::SESSION_RECORD_KEY]
79
+ expect(env_record).to be_kind_of(session_class)
80
+ expect(env_record._id).to eq sid
81
+ end
82
+ end
83
+
84
+ context "with custom session class" do
85
+ let(:store_class) { TestStore }
86
+
87
+ it "returns a session record from the custom session class" do
88
+ sid, session_data = store.send(:get_session, env, nil)
89
+
90
+ expect(sid).to be_kind_of(String)
91
+ expect(session_data).to be_nil
92
+ expect(session_record).to be_kind_of(session_class)
93
+ expect(session_record._id.to_s).to eq sid
94
+ end
95
+ end
96
+ end
97
+
98
+ describe "#set_session" do
99
+ let(:store_class) { mongo_orm == "mongoid" ? MongoidStore : MongoStore }
100
+ let(:store) { store_class.new(nil) }
101
+ let(:session_class) { store_class::Session }
102
+ subject { store.send(:set_session, env, BSON::ObjectId.new, {}) }
103
+
104
+ context "with existing session record" do
105
+ let(:id) { BSON::ObjectId.new }
106
+ let!(:session_record) { session_class.new(:_id => id).tap(&:save) }
107
+ let(:env) do
108
+ {
109
+ "rack.session" => double(:id => id),
110
+ Rack::Session::Abstract::ENV_SESSION_OPTIONS_KEY => { :id => id }
111
+ }
112
+ end
113
+ subject { store.send(:set_session, env, id, {}) }
114
+
115
+ it "uses the existing record" do
116
+ expect do
117
+ subject
118
+ end.to_not change { session_class.collection.find(:_id => id).count }
119
+ expect(subject).to eq(id.to_s)
120
+ end
121
+
122
+ it "yields" do
123
+ yielded_variable = :not_called
124
+ block =
125
+ proc do
126
+ yielded_variable = :called
127
+ end
128
+ store.send(:set_session, env, id, {}, &block)
129
+ expect(yielded_variable).to eq(:called)
130
+ end
131
+
132
+ context "with session record in the ENV" do
133
+ let(:env) do
134
+ {
135
+ "rack.session" => double(:id => id),
136
+ Rack::Session::Abstract::ENV_SESSION_OPTIONS_KEY => { :id => id },
137
+ "rack.session.record" => session_record
138
+ }
139
+ end
140
+
141
+ it "uses the record from the ENV" do
142
+ expect do
143
+ expect(session_record).to receive(:data=).and_call_original
144
+ subject
145
+ end.to_not change { session_class.collection.find(:_id => id).count }
146
+ end
147
+ end
148
+ end
149
+
150
+ context "without existing session record" do
151
+ let :env do
152
+ {
153
+ "rack.session" => {},
154
+ Rack::Session::Abstract::ENV_SESSION_OPTIONS_KEY => {}
155
+ }
156
+ end
157
+
158
+ it "creates a session record" do
159
+ expect do
160
+ subject
161
+ end.to change { session_class.collection.find.count }.from(0).to(1)
162
+ expect(subject).to be_kind_of(String)
163
+ end
164
+
165
+ it "sets the session record in the env" do
166
+ sid = subject
167
+ expect(env["rack.session.record"]).to be_kind_of(session_class)
168
+ expect(env["rack.session.record"]._id.to_s).to eq(sid)
169
+ end
170
+
171
+ context "when not saved" do
172
+ before do
173
+ record = double("data=" => nil, :save => false)
174
+ expect(store).to receive(:get_session_record).and_return([1, record])
175
+ end
176
+
177
+ it "returns false" do
178
+ expect(subject).to be false
179
+ end
180
+ end
181
+ end
182
+ end
183
+
184
+ describe "#destroy_session" do
185
+ let(:id) { BSON::ObjectId.new }
186
+ let(:store_class) { mongo_orm == "mongoid" ? MongoidStore : MongoStore }
187
+ let(:store) { store_class.new(nil) }
188
+ let(:session_class) { store_class::Session }
189
+ let(:env) do
190
+ {
191
+ "rack.session" => double(:id => id),
192
+ Rack::Session::Abstract::ENV_SESSION_OPTIONS_KEY => {}
193
+ }
194
+ end
195
+
196
+ context "without existing session" do
197
+ subject { store.send(:destroy_session, env, id, {}) }
198
+
199
+ it "does not remove any record" do
200
+ expect { subject }.to_not change { session_class.collection.count }
201
+ end
202
+
203
+ it "returns new session id" do
204
+ expect(subject).to be_kind_of(String)
205
+ expect(subject).to_not eq(id)
206
+ end
207
+
208
+ context "with option :drop" do
209
+ subject { store.send(:destroy_session, env, id, :drop => true) }
210
+
211
+ it "does not remove any record" do
212
+ expect { subject }.to_not change { session_class.collection.count }
213
+ end
214
+
215
+ it "returns nothing" do
216
+ expect(subject).to be_nil
217
+ end
218
+ end
219
+ end
220
+
221
+ context "with existing session" do
222
+ let!(:session_record) { session_class.new(:_id => id).tap(&:save) }
223
+ subject { store.send(:destroy_session, env, id, {}) }
224
+
225
+ it "removes the session record" do
226
+ expect do
227
+ subject
228
+ end.to change { session_class.collection.find(:_id => id).count }.from(1).to(0)
229
+ end
230
+
231
+ it "returns new session id" do
232
+ expect(subject).to be_kind_of(String)
233
+ expect(subject).to_not eq(session_record._id)
234
+ end
235
+
236
+ context "with session record in the ENV" do
237
+ let(:env) do
238
+ {
239
+ "rack.session" => double(:id => id),
240
+ Rack::Session::Abstract::ENV_SESSION_OPTIONS_KEY => { :id => id },
241
+ "rack.session.record" => session_record
242
+ }
243
+ end
244
+ subject { store.send(:destroy_session, env, id, :drop => true) }
245
+
246
+ it "destroys record in the env" do
247
+ expect do
248
+ expect(session_record).to receive(:destroy).and_call_original
249
+ subject
250
+ end.to change { session_class.collection.find(:_id => id).count }.from(1).to(0)
251
+ end
252
+ end
253
+
254
+ context "with option :drop" do
255
+ subject { store.send(:destroy_session, env, id, :drop => true) }
256
+
257
+ it "removes the session record" do
258
+ expect do
259
+ subject
260
+ end.to change { session_class.collection.find(:_id => id).count }.from(1).to(0)
261
+ end
262
+
263
+ it "returns nothing" do
264
+ expect(subject).to be_nil
265
+ end
266
+ end
267
+ end
268
+ end
269
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ if mongo_orm == "mongo"
4
+ describe MongoStore do
5
+ describe ".session_class" do
6
+ subject { described_class.session_class }
7
+
8
+ it "returns mongo session class" do
9
+ expect(subject).to eq(described_class::Session)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,67 @@
1
+ require "spec_helper"
2
+
3
+ if mongo_orm == "mongoid"
4
+ require "mongo_session_store"
5
+ require "mongo_session_store/mongoid_store"
6
+
7
+ describe MongoidStore::Session do
8
+ before { described_class.collection.drop }
9
+
10
+ it "is a Mongoid model" do
11
+ expect(subject).to be_kind_of(Mongoid::Document)
12
+ end
13
+
14
+ describe "#before_save" do
15
+ let(:session) { described_class.new(attributes) }
16
+ before do
17
+ session.save
18
+ session.reload
19
+ end
20
+
21
+ context "without data" do
22
+ let(:attributes) { {} }
23
+
24
+ it "saves an empty hash" do
25
+ expect(session._data).to be_kind_of(BSON::Binary)
26
+ expect(session.data).to eq({})
27
+ end
28
+ end
29
+
30
+ context "with data" do
31
+ let(:attributes) { { :data => { :foo => "bar" } } }
32
+
33
+ it "saves session data as a BSON Binary" do
34
+ expect(session._data).to be_kind_of(BSON::Binary)
35
+ expect(session.data).to eq(:foo => "bar")
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "#data" do
41
+ let(:session) { described_class.new(:data => { "something" => "dark side" }) }
42
+
43
+ it "returns unpacked session data" do
44
+ expect(session.data).to eq("something" => "dark side")
45
+ end
46
+ end
47
+
48
+ describe "#data=" do
49
+ let(:session) { described_class.new }
50
+ before { session.data = { :bar => :baz } }
51
+
52
+ it "saves data on _data field" do
53
+ expect(session._data).to be_kind_of(BSON::Binary)
54
+ expect(session.data).to eq(:bar => :baz)
55
+ end
56
+ end
57
+
58
+ describe ".collection_name" do
59
+ # Where the name comes from:
60
+ # - "test_database" set in spec_helper
61
+ # - "sessions" is derived from model name
62
+ it "saves in the given collection_name" do
63
+ expect(described_class.collection.namespace).to eq("test_database.sessions")
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ if mongo_orm == "mongoid"
4
+ describe MongoidStore do
5
+ describe ".session_class" do
6
+ subject { described_class.session_class }
7
+
8
+ it "returns mongoid session class" do
9
+ expect(subject).to eq(described_class::Session)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,64 @@
1
+ require "spec_helper"
2
+
3
+ describe MongoSessionStore do
4
+ describe ".collection_name" do
5
+ subject { described_class.collection_name }
6
+
7
+ it "defaults to 'sessions'" do
8
+ expect(subject).to eq("sessions")
9
+ end
10
+
11
+ context "with modified collection name" do
12
+ around do |example|
13
+ collection_name = described_class.send :instance_variable_get, :@collection_name
14
+ described_class.send :remove_instance_variable, :@collection_name
15
+ example.run
16
+ described_class.collection_name = collection_name
17
+ end
18
+
19
+ context "without collection name" do
20
+ it "returns nil" do
21
+ expect(subject).to be_nil
22
+ end
23
+ end
24
+
25
+ context "with collection name" do
26
+ before { described_class.collection_name = "foo" }
27
+
28
+ it "returns the set collection name" do
29
+ expect(subject).to eq("foo")
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ describe ".collection_name=" do
36
+ subject { described_class.collection_name }
37
+ around do |example|
38
+ collection_name = described_class.send :instance_variable_get, :@collection_name
39
+ described_class.send :remove_instance_variable, :@collection_name
40
+ example.run
41
+ described_class.collection_name = collection_name
42
+ end
43
+
44
+ if mongo_orm == "mongoid"
45
+ context "with mongo" do
46
+ before { described_class.collection_name = "foo" }
47
+ subject { MongoidStore::Session.collection.name }
48
+
49
+ it "returns the set collection name" do
50
+ expect(subject).to eq("foo")
51
+ end
52
+ end
53
+ elsif mongo_orm == "mongo"
54
+ context "with mongo" do
55
+ before { described_class.collection_name = "foo" }
56
+ subject { MongoStore::Session.collection.name }
57
+
58
+ it "returns the set collection name" do
59
+ expect(subject).to eq("foo")
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,19 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require "spec_helper"
3
+ require "rails"
4
+ rails_version = Gem.loaded_specs["rails"].version.to_s[/^\d\.\d/]
5
+ require "support/apps/rails_#{rails_version}_app/config/environment"
6
+ require "rspec/rails"
7
+
8
+ RSpec.configure do |config|
9
+ config.infer_spec_type_from_file_location!
10
+
11
+ config.before :suite do
12
+ Rails.logger.level = 4
13
+ load Rails.root.join("db", "schema.rb") unless User.table_exists?
14
+ end
15
+
16
+ config.before :each do
17
+ User.delete_all
18
+ end
19
+ end