mongo_session_store-rails 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
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