stormpath-sdk 1.0.0.beta.6 → 1.0.0.beta.7

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 (45) hide show
  1. data/.travis.yml +2 -0
  2. data/CHANGES.md +10 -0
  3. data/lib/stormpath-sdk.rb +15 -0
  4. data/lib/stormpath-sdk/data_store.rb +30 -14
  5. data/lib/stormpath-sdk/http/request.rb +5 -25
  6. data/lib/stormpath-sdk/http/response.rb +0 -5
  7. data/lib/stormpath-sdk/provider/account_access.rb +28 -0
  8. data/lib/stormpath-sdk/provider/account_request.rb +30 -0
  9. data/lib/stormpath-sdk/provider/account_resolver.rb +43 -0
  10. data/lib/stormpath-sdk/provider/account_result.rb +27 -0
  11. data/lib/stormpath-sdk/provider/facebook/facebook_provider.rb +18 -0
  12. data/lib/stormpath-sdk/provider/facebook/facebook_provider_data.rb +18 -0
  13. data/lib/stormpath-sdk/provider/google/google_provider.rb +18 -0
  14. data/lib/stormpath-sdk/provider/google/google_provider_data.rb +19 -0
  15. data/lib/stormpath-sdk/provider/provider.rb +18 -0
  16. data/lib/stormpath-sdk/provider/provider_data.rb +18 -0
  17. data/lib/stormpath-sdk/provider/stormpath/stormpath_provider.rb +17 -0
  18. data/lib/stormpath-sdk/provider/stormpath/stormpath_provider_data.rb +17 -0
  19. data/lib/stormpath-sdk/resource/account.rb +15 -0
  20. data/lib/stormpath-sdk/resource/application.rb +5 -2
  21. data/lib/stormpath-sdk/resource/associations.rb +7 -5
  22. data/lib/stormpath-sdk/resource/directory.rb +15 -0
  23. data/lib/stormpath-sdk/version.rb +2 -2
  24. data/spec/auth/basic_authenticator_spec.rb +5 -5
  25. data/spec/cache/cache_entry_spec.rb +3 -3
  26. data/spec/client_spec.rb +27 -20
  27. data/spec/provider/account_resolver_spec.rb +25 -0
  28. data/spec/provider/provider_spec.rb +152 -0
  29. data/spec/resource/account_spec.rb +26 -30
  30. data/spec/resource/account_store_mapping_spec.rb +28 -27
  31. data/spec/resource/account_store_spec.rb +7 -7
  32. data/spec/resource/application_spec.rb +34 -26
  33. data/spec/resource/collection_spec.rb +34 -34
  34. data/spec/resource/custom_data_spec.rb +2 -2
  35. data/spec/resource/directory_spec.rb +25 -23
  36. data/spec/resource/group_membership_spec.rb +3 -3
  37. data/spec/resource/group_spec.rb +16 -17
  38. data/spec/resource/status_spec.rb +16 -16
  39. data/spec/resource/tenant_spec.rb +10 -8
  40. data/spec/spec_helper.rb +37 -18
  41. data/spec/support/custom_data_storage_behavior.rb +19 -19
  42. data/spec/support/mocked_provider_accounts.rb +72 -0
  43. data/stormpath-sdk.gemspec +5 -9
  44. metadata +104 -111
  45. checksums.yaml +0 -7
@@ -1,16 +1,13 @@
1
1
  require 'spec_helper'
2
- require 'pry-debugger'
3
2
 
4
3
  describe Stormpath::Resource::Account, :vcr do
5
4
 
6
- describe "instances" do
7
- let(:directory) { test_api_client.directories.create name: 'testDirectory' }
8
-
5
+ describe "instances should respond to attribute property methods" do
6
+ let(:directory) { test_api_client.directories.create name: random_directory_name }
9
7
  let(:given_name) { 'Ruby SDK' }
10
8
  let(:middle_name) { 'Gruby' }
11
9
  let(:surname) { 'SDK' }
12
-
13
- subject(:account) do
10
+ let(:account) do
14
11
  directory.accounts.create email: 'test@example.com',
15
12
  given_name: given_name,
16
13
  password: 'P@$$w0rd',
@@ -19,36 +16,35 @@ describe Stormpath::Resource::Account, :vcr do
19
16
  username: 'rubysdk'
20
17
  end
21
18
 
22
- [:given_name, :username, :middle_name, :surname, :email, :status].each do |property_accessor|
23
- it { should respond_to property_accessor }
24
- it { should respond_to "#{property_accessor}=" }
25
- its(property_accessor) { should be_instance_of String }
26
- end
27
-
28
- it {should respond_to :full_name}
29
- its(:full_name) { should be_instance_of String}
30
- its(:full_name) { should eq("#{given_name} #{middle_name} #{surname}")}
31
-
32
- it {should respond_to "password="}
33
-
34
- its(:tenant) { should be_instance_of Stormpath::Resource::Tenant }
35
- its(:directory) { should be_instance_of Stormpath::Resource::Directory }
36
- its(:custom_data) { should be_instance_of Stormpath::Resource::CustomData }
37
- its(:email_verification_token) { should be_nil }
38
-
39
- its(:groups) { should be_instance_of Stormpath::Resource::Collection }
40
- its(:group_memberships) { should be_instance_of Stormpath::Resource::Collection }
41
-
42
19
  after do
43
20
  account.delete if account
44
21
  directory.delete if directory
45
22
  end
46
23
 
24
+ it do
25
+ [:given_name, :username, :middle_name, :surname, :email, :status].each do |property_accessor|
26
+ expect(account).to respond_to(property_accessor)
27
+ expect(account).to respond_to("#{property_accessor}=")
28
+ expect(account.send property_accessor).to be_a String
29
+ end
30
+
31
+ expect(account).to respond_to(:full_name)
32
+ expect(account.full_name).to be_a String
33
+ expect(account.full_name).to eq("#{given_name} #{middle_name} #{surname}")
34
+ expect(account).to respond_to("password=")
35
+
36
+ expect(account.tenant).to be_a Stormpath::Resource::Tenant
37
+ expect(account.directory).to be_a Stormpath::Resource::Directory
38
+ expect(account.custom_data).to be_a Stormpath::Resource::CustomData
39
+ expect(account.email_verification_token).to be_nil
40
+ expect(account.groups).to be_a Stormpath::Resource::Collection
41
+ expect(account.group_memberships).to be_a Stormpath::Resource::Collection
42
+ end
47
43
  end
48
44
 
49
45
  describe 'account_associations' do
50
- let(:directory) { test_api_client.directories.create name: 'testDirectory' }
51
-
46
+ let(:directory) { test_api_client.directories.create name: random_directory_name }
47
+
52
48
  let(:account) do
53
49
  directory.accounts.create email: 'test@example.com',
54
50
  givenName: 'Ruby SDK',
@@ -74,7 +70,7 @@ describe Stormpath::Resource::Account, :vcr do
74
70
 
75
71
  describe "#add_or_remove_group" do
76
72
  context "given a group" do
77
- let(:directory) { test_api_client.directories.create name: 'testDirectory' }
73
+ let(:directory) { test_api_client.directories.create name: random_directory_name }
78
74
 
79
75
  let(:group) { directory.groups.create name: 'testGroup' }
80
76
 
@@ -93,7 +89,7 @@ describe Stormpath::Resource::Account, :vcr do
93
89
  end
94
90
 
95
91
  it 'has one group membership resource' do
96
- expect(account.group_memberships).to have(1).item
92
+ expect(account.group_memberships.count).to eq(1)
97
93
  end
98
94
 
99
95
  it 'adds and removes the group from the account' do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Stormpath::Resource::AccountStoreMapping, :vcr do
4
-
4
+
5
5
  def create_account_store_mapping(application, account_store, options={})
6
6
  test_api_client.account_store_mappings.create({
7
7
  application: application,
@@ -12,38 +12,41 @@ describe Stormpath::Resource::AccountStoreMapping, :vcr do
12
12
  })
13
13
  end
14
14
 
15
- let(:directory) { test_api_client.directories.create name: 'testDirectory', description: 'testDirectory for AccountStoreMappings' }
16
-
17
- let(:application) { test_api_client.applications.create name: 'testApplication', description: 'testApplication for AccountStoreMappings' }
18
-
15
+ let(:directory_name) { random_directory_name }
16
+
17
+ let(:directory) { test_api_client.directories.create name: directory_name, description: 'testDirectory for AccountStoreMappings' }
18
+
19
+ let(:application) { test_api_client.applications.create name: random_application_name, description: 'testApplication for AccountStoreMappings' }
20
+
19
21
  after do
20
22
  application.delete if application
21
23
  directory.delete if directory
22
24
  end
23
-
24
- describe "instances" do
25
- subject(:account_store_mapping) {create_account_store_mapping(application,directory, is_default_account_store: true)}
26
-
27
- [:list_index, :is_default_account_store, :is_default_group_store, :default_account_store, :default_group_store ].each do |prop_accessor|
28
- it { should respond_to prop_accessor }
29
- it { should respond_to "#{prop_accessor}=" }
30
- end
31
25
 
32
- [:default_account_store?, :default_group_store?].each do |prop_getter|
33
- it { should respond_to prop_getter }
34
- end
26
+ describe "instances" do
27
+ let(:account_store_mapping) {create_account_store_mapping(application,directory, is_default_account_store: true)}
35
28
 
36
- its(:list_index) { should be_instance_of Fixnum }
29
+ it do
30
+ [:list_index, :is_default_account_store, :is_default_group_store, :default_account_store, :default_group_store ].each do |prop_accessor|
31
+ expect(account_store_mapping).to respond_to(prop_accessor)
32
+ expect(account_store_mapping).to respond_to("#{prop_accessor}=")
33
+ end
37
34
 
38
- [:default_account_store, :default_group_store].each do |default_store_method|
39
- [default_store_method, "is_#{default_store_method}", "#{default_store_method}?"].each do |specific_store_method|
40
- its(specific_store_method) {should satisfy {|attribute| [TrueClass, FalseClass].include? attribute.class }}
35
+ [:default_account_store?, :default_group_store?].each do |prop_getter|
36
+ expect(account_store_mapping).to respond_to(prop_getter)
41
37
  end
42
- end
43
38
 
44
- its(:account_store) { should satisfy {|prop_reader| [Stormpath::Resource::Directory, Stormpath::Resource::Group].include? prop_reader.class }}
39
+ expect(account_store_mapping.list_index).to be_a Fixnum
40
+
41
+ [:default_account_store, :default_group_store].each do |default_store_method|
42
+ [default_store_method, "is_#{default_store_method}", "#{default_store_method}?"].each do |specific_store_method|
43
+ expect(account_store_mapping.send specific_store_method).to be_boolean
44
+ end
45
+ end
45
46
 
46
- its(:application) { should be_instance_of Stormpath::Resource::Application }
47
+ expect(account_store_mapping.account_store).to be_a Stormpath::Resource::Directory
48
+ expect(account_store_mapping.application).to be_a Stormpath::Resource::Application
49
+ end
47
50
  end
48
51
 
49
52
 
@@ -159,7 +162,6 @@ describe Stormpath::Resource::AccountStoreMapping, :vcr do
159
162
  account_store_mapping.save
160
163
  expect(reloaded_mapping.is_default_account_store).to eq(false)
161
164
  end
162
-
163
165
  end
164
166
 
165
167
  describe "given a mapping" do
@@ -171,16 +173,15 @@ describe Stormpath::Resource::AccountStoreMapping, :vcr do
171
173
  account_store_mapping.delete
172
174
  expect(reloaded_application.account_store_mappings.count).to eq(0)
173
175
  end
174
-
176
+
175
177
  it 'should be able to list its attributes' do
176
178
  reloaded_application.account_store_mappings.each do |account_store_mapping|
177
- expect(account_store_mapping.account_store.name).to eq("testDirectory")
179
+ expect(account_store_mapping.account_store.name).to eq(directory_name)
178
180
  expect(account_store_mapping.list_index).to eq(0)
179
181
  expect(account_store_mapping.default_account_store?).to eq(true)
180
182
  expect(account_store_mapping.default_group_store?).to eq(false)
181
183
  end
182
184
  end
183
-
184
185
  end
185
186
 
186
187
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Stormpath::Resource::AccountStore, :vcr do
4
-
4
+
5
5
  def create_account_store_mapping(application, account_store, is_default_group_store=false)
6
6
  test_api_client.account_store_mappings.create({
7
7
  application: application,
@@ -11,13 +11,13 @@ describe Stormpath::Resource::AccountStore, :vcr do
11
11
  is_default_group_store: is_default_group_store
12
12
  })
13
13
  end
14
-
15
- let(:application) { test_api_client.applications.create name: 'testApplication', description: 'testApplication for AccountStoreMappings' }
16
-
17
- let(:directory) { test_api_client.directories.create name: 'testDirectory', description: 'testDirectory for AccountStoreMappings' }
18
-
14
+
15
+ let(:application) { test_api_client.applications.create name: random_application_name, description: 'testApplication for AccountStoreMappings' }
16
+
17
+ let(:directory) { test_api_client.directories.create name: random_directory_name, description: 'testDirectory for AccountStoreMappings' }
18
+
19
19
  let(:group) { directory.groups.create name: 'testGroup', description: 'testGroup for AccountStoreMappings' }
20
-
20
+
21
21
  after do
22
22
  application.delete if application
23
23
  group.delete if group
@@ -1,30 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Stormpath::Resource::Application, :vcr do
4
- let(:application) { test_application }
5
- let(:directory) { test_directory }
4
+ let(:app) { test_api_client.applications.create name: random_application_name, description: 'Dummy desc.' }
5
+ let(:application) { test_api_client.applications.get app.href }
6
+ let(:directory) { test_api_client.directories.create name: random_directory_name }
6
7
 
7
- describe "instances should respond to attribute property methods" do
8
- subject(:application) { test_application }
8
+ before do
9
+ test_api_client.account_store_mappings.create({ application: app, account_store: directory,
10
+ list_index: 1, is_default_account_store: true, is_default_group_store: true })
11
+ end
9
12
 
10
- it { should be_instance_of Stormpath::Resource::Application }
13
+ after do
14
+ application.delete if application
15
+ directory.delete if directory
16
+ end
11
17
 
12
- [:name, :description, :status].each do |property_accessor|
13
- it { should respond_to property_accessor }
14
- it { should respond_to "#{property_accessor}="}
15
- its(property_accessor) { should be_instance_of String }
16
- end
18
+ it "instances should respond to attribute property methods" do
17
19
 
18
- its(:tenant) { should be_instance_of Stormpath::Resource::Tenant }
19
- its(:default_account_store_mapping) { should be_instance_of Stormpath::Resource::AccountStoreMapping }
20
- its(:default_group_store_mapping) { should be_instance_of Stormpath::Resource::AccountStoreMapping }
20
+ expect(application).to be_a Stormpath::Resource::Application
21
21
 
22
- its(:groups) { should be_instance_of Stormpath::Resource::Collection }
23
- its(:accounts) { should be_instance_of Stormpath::Resource::Collection }
24
- its(:password_reset_tokens) { should be_instance_of Stormpath::Resource::Collection }
25
- its(:account_store_mappings) { should be_instance_of Stormpath::Resource::Collection }
22
+ [:name, :description, :status].each do |property_accessor|
23
+ expect(application).to respond_to(property_accessor)
24
+ expect(application).to respond_to("#{property_accessor}=")
25
+ expect(application.send property_accessor).to be_a String
26
+ end
26
27
 
28
+ expect(application.tenant).to be_a Stormpath::Resource::Tenant
29
+ expect(application.default_account_store_mapping).to be_a Stormpath::Resource::AccountStoreMapping
30
+ expect(application.default_group_store_mapping).to be_a Stormpath::Resource::AccountStoreMapping
27
31
 
32
+ expect(application.groups).to be_a Stormpath::Resource::Collection
33
+ expect(application.accounts).to be_a Stormpath::Resource::Collection
34
+ expect(application.password_reset_tokens).to be_a Stormpath::Resource::Collection
35
+ expect(application.account_store_mappings).to be_a Stormpath::Resource::Collection
28
36
  end
29
37
 
30
38
  describe '.load' do
@@ -69,7 +77,7 @@ describe Stormpath::Resource::Application, :vcr do
69
77
  end
70
78
 
71
79
  context '#groups' do
72
- let(:group) { application.groups.create name: "test_group"}
80
+ let(:group) { application.groups.create name: random_group_name }
73
81
 
74
82
  after do
75
83
  group.delete if group
@@ -86,7 +94,7 @@ describe Stormpath::Resource::Application, :vcr do
86
94
  end
87
95
 
88
96
  end
89
-
97
+
90
98
  describe '#authenticate_account' do
91
99
  let(:account) do
92
100
  directory.accounts.create build_account(password: 'P@$$w0rd')
@@ -132,10 +140,10 @@ describe Stormpath::Resource::Application, :vcr do
132
140
  after do
133
141
  account.delete if account
134
142
  end
135
-
136
- context 'given a proper directory' do
143
+
144
+ context 'given a proper directory' do
137
145
  let(:account) { directory.accounts.create build_account(password: 'P@$$w0rd') }
138
-
146
+
139
147
  let(:login_request) do
140
148
  Stormpath::Authentication::UsernamePasswordRequest.new account.username, password, account_store: directory
141
149
  end
@@ -149,7 +157,7 @@ describe Stormpath::Resource::Application, :vcr do
149
157
  end
150
158
 
151
159
  context 'given a wrong directory' do
152
- let(:new_directory) { test_api_client.directories.create name: 'test_account_store'}
160
+ let(:new_directory) { test_api_client.directories.create name: random_directory_name('new') }
153
161
 
154
162
  let(:account) { new_directory.accounts.create build_account(password: 'P@$$w0rd') }
155
163
 
@@ -167,7 +175,7 @@ describe Stormpath::Resource::Application, :vcr do
167
175
  end
168
176
 
169
177
  context 'given a group' do
170
- let(:group) {directory.groups.create name: "test_group"}
178
+ let(:group) {directory.groups.create name: random_group_name }
171
179
 
172
180
  let(:account) { directory.accounts.create build_account(password: 'P@$$w0rd') }
173
181
 
@@ -229,11 +237,11 @@ describe Stormpath::Resource::Application, :vcr do
229
237
  describe '#verify_password_reset_token' do
230
238
  let(:account) do
231
239
  directory.accounts.create({
232
- email: 'test@example.com',
240
+ email: random_email,
233
241
  given_name: 'Ruby SDK',
234
242
  password: 'P@$$w0rd',
235
243
  surname: 'SDK',
236
- username: 'rubysdk'
244
+ username: random_user_name
237
245
  })
238
246
  end
239
247
 
@@ -169,7 +169,7 @@ describe Stormpath::Resource::Collection, :vcr do
169
169
 
170
170
  context 'live examples' do
171
171
  context 'testing limits and offsets' do
172
- let(:directory) {test_api_client.directories.create name: "Directory for pagination testing"}
172
+ let(:directory) {test_api_client.directories.create name: random_directory_name }
173
173
 
174
174
  let(:groups) do
175
175
  ('A'..'Z').map do |letter|
@@ -182,21 +182,21 @@ describe Stormpath::Resource::Collection, :vcr do
182
182
  end
183
183
 
184
184
  it 'should respond as expected with or without limits' do
185
- expect(groups).to have(26).items
185
+ expect(groups.count).to eq(26)
186
186
 
187
- expect(directory.groups.limit(3)).to have(26).items
187
+ expect(directory.groups.limit(3).count).to eq(26)
188
188
 
189
- expect(directory.groups.offset(10).limit(3)).to have(16).items
189
+ expect(directory.groups.offset(10).limit(3).count).to eq(16)
190
190
 
191
- expect(directory.groups.limit(3).offset(10)).to have(16).items
191
+ expect(directory.groups.limit(3).offset(10).count).to eq(16)
192
192
 
193
- expect(directory.groups).to have(26).items
193
+ expect(directory.groups.count).to eq(26)
194
194
 
195
- expect(directory.groups.limit(25)).to have(26).items
195
+ expect(directory.groups.limit(25).count).to eq(26)
196
196
 
197
- expect(directory.groups.limit(26)).to have(26).items
197
+ expect(directory.groups.limit(26).count).to eq(26)
198
198
 
199
- expect(directory.groups.limit(100)).to have(26).items
199
+ expect(directory.groups.limit(100).count).to eq(26)
200
200
 
201
201
  expect(directory.groups.limit(25)).to include(groups.last)
202
202
 
@@ -204,14 +204,14 @@ describe Stormpath::Resource::Collection, :vcr do
204
204
 
205
205
  expect(directory.groups.offset(1).limit(25)).not_to include(groups.first)
206
206
 
207
- expect(directory.groups.offset(25)).to have(1).items
207
+ expect(directory.groups.offset(25).count).to eq(1)
208
208
 
209
- expect(directory.groups.offset(26)).to have(0).items
209
+ expect(directory.groups.offset(26).count).to eq(0)
210
210
  end
211
211
  end
212
212
 
213
213
  context 'testing limits and offsets with name checking' do
214
- let(:directory) {test_api_client.directories.create name: "Directory for pagination testing"}
214
+ let(:directory) {test_api_client.directories.create name: random_directory_name }
215
215
 
216
216
  let!(:groups) do
217
217
  ('1'..'100').map do |number|
@@ -224,25 +224,25 @@ describe Stormpath::Resource::Collection, :vcr do
224
224
  end
225
225
 
226
226
  it 'should paginate properly' do
227
- expect(directory.groups).to have(100).items
227
+ expect(directory.groups.count).to eq(100)
228
228
 
229
229
  expect(directory.groups.map {|group| group.name }).to eq(('1'..'100').to_a.sort)
230
230
 
231
- expect(directory.groups.limit(30)).to have(100).items
231
+ expect(directory.groups.limit(30).count).to eq(100)
232
232
 
233
- expect(directory.groups.limit(30).current_page.items).to have(30).items
233
+ expect(directory.groups.limit(30).current_page.items.count).to eq(30)
234
234
 
235
- expect(directory.groups.limit(30).offset(30)).to have(70).items
235
+ expect(directory.groups.limit(30).offset(30).count).to eq(70)
236
236
 
237
- expect(directory.groups.limit(30).offset(30).current_page.items).to have(30).items
237
+ expect(directory.groups.limit(30).offset(30).current_page.items.count).to eq(30)
238
238
 
239
- expect(directory.groups.limit(30).offset(60)).to have(40).items
239
+ expect(directory.groups.limit(30).offset(60).count).to eq(40)
240
240
 
241
- expect(directory.groups.limit(30).offset(60).current_page.items).to have(30).items
241
+ expect(directory.groups.limit(30).offset(60).current_page.items.count).to eq(30)
242
242
 
243
- expect(directory.groups.limit(30).offset(90)).to have(10).items
243
+ expect(directory.groups.limit(30).offset(90).count).to eq(10)
244
244
 
245
- expect(directory.groups.limit(30).offset(90).current_page.items).to have(10).items
245
+ expect(directory.groups.limit(30).offset(90).current_page.items.count).to eq(10)
246
246
 
247
247
  expect(directory.groups.limit(30).map {|group| group.name }).to eq(('1'..'100').to_a.sort)
248
248
 
@@ -273,7 +273,7 @@ describe Stormpath::Resource::Collection, :vcr do
273
273
  end
274
274
 
275
275
  context '#wild characters search' do
276
- let(:directory) {test_api_client.directories.create name: "Test directory"}
276
+ let(:directory) {test_api_client.directories.create name: random_directory_name }
277
277
 
278
278
  # !@#$%^&*()_-+=?><:]}[{'
279
279
  # 'jlpicard/!@$%^*()_-+&=?><:]}[{'
@@ -292,24 +292,24 @@ describe Stormpath::Resource::Collection, :vcr do
292
292
  end
293
293
 
294
294
  it 'should search accounts by username' do
295
- expect(directory.accounts.search(username: username)).to have(1).items
295
+ expect(directory.accounts.search(username: username).count).to eq(1)
296
296
  end
297
297
 
298
298
  it 'should search accounts by any column (aiming at username)' do
299
- expect(directory.accounts.search(username)).to have(1).items
299
+ expect(directory.accounts.search(username).count).to eq(1)
300
300
  end
301
301
 
302
302
  it 'should search accounts by email' do
303
- expect(directory.accounts.search(email: "capt@enterprise.com")).to have(1).items
303
+ expect(directory.accounts.search(email: "capt@enterprise.com").count).to eq(1)
304
304
  end
305
305
 
306
306
  it 'should search accounts by any column (aiming at email)' do
307
- expect(directory.accounts.search("capt@enterprise.com")).to have(1).items
307
+ expect(directory.accounts.search("capt@enterprise.com").count).to eq(1)
308
308
  end
309
309
  end
310
310
 
311
311
  context '#asterisk search on one attribute' do
312
- let(:directory) {test_api_client.directories.create name: "Test directory"}
312
+ let(:directory) {test_api_client.directories.create name: random_directory_name }
313
313
 
314
314
  let!(:account) do
315
315
  directory.accounts.create username: "jlpicard",
@@ -324,20 +324,20 @@ describe Stormpath::Resource::Collection, :vcr do
324
324
  end
325
325
 
326
326
  it 'should search accounts by username with asterisk at the beginning' do
327
- expect(directory.accounts.search(username: "*card")).to have(1).items
327
+ expect(directory.accounts.search(username: "*card").count).to eq(1)
328
328
  end
329
329
 
330
330
  it 'should search accounts by username with asterisk at the end' do
331
- expect(directory.accounts.search(username: "jl*")).to have(1).items
331
+ expect(directory.accounts.search(username: "jl*").count).to eq(1)
332
332
  end
333
333
 
334
334
  it 'should search accounts by username with asterisk at the beginning and the end' do
335
- expect(directory.accounts.search(username: "*pic*")).to have(1).items
335
+ expect(directory.accounts.search(username: "*pic*").count).to eq(1)
336
336
  end
337
337
  end
338
338
 
339
339
  context '#asterisk search on multiple attribute' do
340
- let(:directory) {test_api_client.directories.create name: "Test directory"}
340
+ let(:directory) {test_api_client.directories.create name: random_directory_name }
341
341
 
342
342
  let!(:account) do
343
343
  directory.accounts.create username: "jlpicard",
@@ -352,15 +352,15 @@ describe Stormpath::Resource::Collection, :vcr do
352
352
  end
353
353
 
354
354
  it 'should search accounts by username with asterisk at the beginning' do
355
- expect(directory.accounts.search(username: "*card", email: "*enterprise.com")).to have(1).items
355
+ expect(directory.accounts.search(username: "*card", email: "*enterprise.com").count).to eq(1)
356
356
  end
357
357
 
358
358
  it 'should search accounts by username with asterisk at the end' do
359
- expect(directory.accounts.search(username: "jl*", email: "capt*")).to have(1).items
359
+ expect(directory.accounts.search(username: "jl*", email: "capt*").count).to eq(1)
360
360
  end
361
361
 
362
362
  it 'should search accounts by username with asterisk at the beginning and the end' do
363
- expect(directory.accounts.search(username: "*pic*", email: "*enterprise*")).to have(1).items
363
+ expect(directory.accounts.search(username: "*pic*", email: "*enterprise*").count).to eq(1)
364
364
  end
365
365
  end
366
366