stormpath-sdk 1.3.1 → 1.4.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +3 -3
- data/CHANGES.md +8 -0
- data/lib/stormpath-sdk.rb +8 -0
- data/lib/stormpath-sdk/auth/create_factor.rb +64 -0
- data/lib/stormpath-sdk/data_store.rb +17 -1
- data/lib/stormpath-sdk/oauth/authenticator.rb +2 -1
- data/lib/stormpath-sdk/oauth/challenge_factor_grant.rb +25 -0
- data/lib/stormpath-sdk/oauth/challenge_factor_grant_request.rb +16 -0
- data/lib/stormpath-sdk/resource/account.rb +6 -0
- data/lib/stormpath-sdk/resource/account_link.rb +1 -1
- data/lib/stormpath-sdk/resource/challenge.rb +26 -0
- data/lib/stormpath-sdk/resource/collection.rb +0 -1
- data/lib/stormpath-sdk/resource/directory.rb +1 -0
- data/lib/stormpath-sdk/resource/factor.rb +26 -0
- data/lib/stormpath-sdk/resource/field.rb +20 -0
- data/lib/stormpath-sdk/resource/linked_account.rb +1 -1
- data/lib/stormpath-sdk/resource/phone.rb +21 -0
- data/lib/stormpath-sdk/resource/schema.rb +21 -0
- data/lib/stormpath-sdk/version.rb +2 -2
- data/spec/auth/create_factor_spec.rb +92 -0
- data/spec/auth/http_basic_authentication_spec.rb +3 -3
- data/spec/auth/http_bearer_authentication_spec.rb +3 -3
- data/spec/client_spec.rb +25 -25
- data/spec/oauth/access_token_authentication_result_spec.rb +3 -3
- data/spec/provider/provider_spec.rb +2 -2
- data/spec/resource/account_creation_policy_spec.rb +2 -2
- data/spec/resource/account_link_spec.rb +2 -2
- data/spec/resource/account_spec.rb +196 -12
- data/spec/resource/account_store_mapping_spec.rb +3 -3
- data/spec/resource/account_store_spec.rb +4 -4
- data/spec/resource/api_key_spec.rb +3 -3
- data/spec/resource/application_spec.rb +74 -33
- data/spec/resource/challenge_spec.rb +53 -0
- data/spec/resource/collection_spec.rb +6 -6
- data/spec/resource/custom_data_spec.rb +2 -2
- data/spec/resource/directory_spec.rb +27 -21
- data/spec/resource/email_template_spec.rb +2 -2
- data/spec/resource/factor_spec.rb +124 -0
- data/spec/resource/field_spec.rb +35 -0
- data/spec/resource/group_membership_spec.rb +3 -3
- data/spec/resource/group_spec.rb +3 -3
- data/spec/resource/linked_account_spec.rb +2 -2
- data/spec/resource/organization_spec.rb +6 -6
- data/spec/resource/password_policy_spec.rb +2 -2
- data/spec/resource/password_strength_spec.rb +2 -2
- data/spec/resource/phone_spec.rb +63 -0
- data/spec/resource/schema_spec.rb +39 -0
- data/spec/resource/status_spec.rb +4 -4
- data/spec/spec_helper.rb +6 -3
- data/spec/support/custom_data_storage_behavior.rb +2 -2
- data/spec/support/mocked_provider_accounts.rb +106 -0
- data/spec/support/resource_helpers.rb +20 -16
- metadata +16 -2
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Stormpath::Resource::EmailTemplate, :vcr do
|
4
|
-
let(:application) { test_api_client.applications.create(
|
4
|
+
let(:application) { test_api_client.applications.create(application_attrs) }
|
5
5
|
|
6
6
|
after { application.delete }
|
7
7
|
|
8
8
|
describe 'instances should respond to attribute property methods' do
|
9
|
-
let(:directory) { test_api_client.directories.create(
|
9
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
10
10
|
let(:password_policy) { directory.password_policy }
|
11
11
|
let(:reset_email_template) { password_policy.reset_email_templates.first }
|
12
12
|
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Stormpath::Resource::Factor, :vcr do
|
4
|
+
describe 'instances should respond to attribute property methods' do
|
5
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
6
|
+
let(:account) { directory.accounts.create(account_attrs) }
|
7
|
+
|
8
|
+
after do
|
9
|
+
factor.delete if factor
|
10
|
+
account.delete if account
|
11
|
+
directory.delete if directory
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'type sms' do
|
15
|
+
let(:factor) do
|
16
|
+
account.factors.create(
|
17
|
+
type: 'SMS',
|
18
|
+
phone: {
|
19
|
+
number: '+12025550173',
|
20
|
+
name: 'test phone',
|
21
|
+
description: 'this is a testing phone number'
|
22
|
+
}
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
it do
|
27
|
+
[:type, :status].each do |property_accessor|
|
28
|
+
expect(factor).to respond_to(property_accessor)
|
29
|
+
expect(factor).to respond_to("#{property_accessor}=")
|
30
|
+
expect(factor.send(property_accessor)).to be_a String
|
31
|
+
end
|
32
|
+
|
33
|
+
[:verification_status].each do |property_getter|
|
34
|
+
expect(factor).to respond_to(property_getter)
|
35
|
+
expect(factor.send(property_getter)).to be_a String
|
36
|
+
end
|
37
|
+
|
38
|
+
expect(factor.account).to be_a Stormpath::Resource::Account
|
39
|
+
expect(factor.phone).to be_a Stormpath::Resource::Phone
|
40
|
+
expect(factor.challenges).to be_a Stormpath::Resource::Collection
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'type google_authenticator' do
|
45
|
+
let(:factor) do
|
46
|
+
account.factors.create(
|
47
|
+
type: 'google-authenticator',
|
48
|
+
issuer: 'ACME'
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
it do
|
53
|
+
[:type, :status].each do |property_accessor|
|
54
|
+
expect(factor).to respond_to(property_accessor)
|
55
|
+
expect(factor).to respond_to("#{property_accessor}=")
|
56
|
+
expect(factor.send(property_accessor)).to be_a String
|
57
|
+
end
|
58
|
+
|
59
|
+
[:verification_status, :secret, :key_uri, :base64_q_r_image, :qr_code].each do |property_getter|
|
60
|
+
expect(factor).to respond_to(property_getter)
|
61
|
+
expect(factor.send(property_getter)).to be_a String
|
62
|
+
end
|
63
|
+
|
64
|
+
expect(factor.account).to be_a Stormpath::Resource::Account
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe 'factor associations' do
|
70
|
+
let(:app) { test_api_client.applications.create(application_attrs) }
|
71
|
+
let(:application) { test_api_client.applications.get app.href }
|
72
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
73
|
+
|
74
|
+
before { map_account_store(app, directory, 1, true, true) }
|
75
|
+
let(:account) { directory.accounts.create(account_attrs) }
|
76
|
+
let(:phone_number) { '+12025550173' }
|
77
|
+
|
78
|
+
let(:factor) do
|
79
|
+
account.factors.create(
|
80
|
+
type: 'SMS',
|
81
|
+
phone: {
|
82
|
+
number: phone_number,
|
83
|
+
name: 'test phone',
|
84
|
+
description: 'this is a testing phone number'
|
85
|
+
}
|
86
|
+
)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should belong_to account' do
|
90
|
+
expect(factor.account).to eq(account)
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should have one phone' do
|
94
|
+
expect(factor.phone.number).to eq(phone_number)
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'challenges' do
|
98
|
+
before do
|
99
|
+
stub_request(:post, "#{factor.href}/challenges")
|
100
|
+
.to_return(body: Stormpath::Test.mocked_challenge)
|
101
|
+
stub_request(:get, factor.href)
|
102
|
+
.to_return(body: Stormpath::Test.mocked_factor_response)
|
103
|
+
end
|
104
|
+
let!(:challenge) { factor.challenges.create(message: 'Enter code: ${code}') }
|
105
|
+
|
106
|
+
it 'should have a collection of challenges' do
|
107
|
+
expect(factor.challenges).to be_a Stormpath::Resource::Collection
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should have the most recent challenge' do
|
111
|
+
most_recent_challenge = factor.challenges.create(message: 'Enter new code: ${code}')
|
112
|
+
reloaded_factor = account.factors.get(factor.href)
|
113
|
+
expect(reloaded_factor.most_recent_challenge.href).to eq(most_recent_challenge.href)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
after do
|
118
|
+
application.delete if application
|
119
|
+
account.delete if account
|
120
|
+
directory.delete if directory
|
121
|
+
factor.delete if factor
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Stormpath::Resource::Field, :vcr do
|
4
|
+
let(:application) { test_api_client.applications.create(application_attrs) }
|
5
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
6
|
+
let(:schema) { directory.account_schema }
|
7
|
+
let(:field) { schema.fields.first }
|
8
|
+
|
9
|
+
after do
|
10
|
+
directory.delete
|
11
|
+
application.delete
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'instances should respond to attribute property methods' do
|
15
|
+
it do
|
16
|
+
expect(field).to be_a Stormpath::Resource::Field
|
17
|
+
|
18
|
+
[:name, :created_at, :modified_at].each do |property_getter|
|
19
|
+
expect(field).to respond_to(property_getter)
|
20
|
+
expect(field.send(property_getter)).to be_a String
|
21
|
+
end
|
22
|
+
|
23
|
+
expect(field).to respond_to(:required)
|
24
|
+
expect(field.required).to eq !!field.required
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'field associations' do
|
29
|
+
context '#schema' do
|
30
|
+
it 'should be able to get the account schema' do
|
31
|
+
expect(field.schema).to be_a Stormpath::Resource::Schema
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -7,9 +7,9 @@ describe Stormpath::Resource::GroupMembership, :vcr do
|
|
7
7
|
|
8
8
|
describe '#add_account' do
|
9
9
|
context 'given an account and a group' do
|
10
|
-
let(:directory) { test_api_client.directories.create(
|
11
|
-
let(:group) { directory.groups.create(
|
12
|
-
let(:account) { directory.accounts.create(
|
10
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
11
|
+
let(:group) { directory.groups.create(group_attrs) }
|
12
|
+
let(:account) { directory.accounts.create(account_attrs) }
|
13
13
|
|
14
14
|
before { group.add_account account }
|
15
15
|
|
data/spec/resource/group_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Stormpath::Resource::Group, :vcr do
|
4
|
-
let(:directory) { test_api_client.directories.create(
|
4
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
5
5
|
after { directory.delete }
|
6
6
|
|
7
7
|
describe 'instances should respond to attribute property methods' do
|
@@ -40,8 +40,8 @@ describe Stormpath::Resource::Group, :vcr do
|
|
40
40
|
|
41
41
|
describe '#add_or_remove_account' do
|
42
42
|
context 'given an account' do
|
43
|
-
let(:group) { directory.groups.create(
|
44
|
-
let(:account) { directory.accounts.create(
|
43
|
+
let(:group) { directory.groups.create(group_attrs) }
|
44
|
+
let(:account) { directory.accounts.create(account_attrs) }
|
45
45
|
|
46
46
|
before { group.add_account(account) }
|
47
47
|
|
@@ -7,10 +7,10 @@ describe Stormpath::Resource::LinkedAccount, :vcr do
|
|
7
7
|
let(:directory1) { test_api_client.directories.create(name: 'ruby sdk dir 1') }
|
8
8
|
let(:directory2) { test_api_client.directories.create(name: 'ruby sdk dir 2') }
|
9
9
|
let(:account1) do
|
10
|
-
directory1.accounts.create(
|
10
|
+
directory1.accounts.create(account_attrs(email: 'jekyll', username: 'jekyll'))
|
11
11
|
end
|
12
12
|
let(:account2) do
|
13
|
-
directory2.accounts.create(
|
13
|
+
directory2.accounts.create(account_attrs(email: 'hyde', username: 'hyde'))
|
14
14
|
end
|
15
15
|
|
16
16
|
before do
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Stormpath::Resource::Organization, :vcr do
|
4
4
|
let(:organization) do
|
5
|
-
test_api_client.organizations.create(
|
5
|
+
test_api_client.organizations.create(organization_attrs(name: 'test_ruby_organization',
|
6
6
|
name_key: 'testorganization',
|
7
7
|
description: 'test organization'))
|
8
8
|
end
|
@@ -56,14 +56,14 @@ describe Stormpath::Resource::Organization, :vcr do
|
|
56
56
|
|
57
57
|
it 'should raise Stormpath::Error' do
|
58
58
|
expect do
|
59
|
-
test_api_client.organizations.create(
|
59
|
+
test_api_client.organizations.create(organization_attrs(name_key: 'testorganization'))
|
60
60
|
end.to raise_error(Stormpath::Error)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
describe 'associations' do
|
66
|
-
let(:directory) { test_api_client.directories.create(
|
66
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
67
67
|
after { directory.delete }
|
68
68
|
|
69
69
|
context 'groups' do
|
@@ -77,8 +77,8 @@ describe Stormpath::Resource::Organization, :vcr do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
context 'accounts' do
|
80
|
-
let(:account) { directory.accounts.create(
|
81
|
-
let(:org_account) { directory.accounts.create(
|
80
|
+
let(:account) { directory.accounts.create(account_attrs(email: 'rubysdk')) }
|
81
|
+
let(:org_account) { directory.accounts.create(account_attrs(email: 'rubysdk2')) }
|
82
82
|
|
83
83
|
before { map_organization_store(directory, organization, true) }
|
84
84
|
|
@@ -129,7 +129,7 @@ describe Stormpath::Resource::Organization, :vcr do
|
|
129
129
|
end
|
130
130
|
|
131
131
|
describe 'organization account store mapping' do
|
132
|
-
let(:directory) { test_api_client.directories.create(
|
132
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
133
133
|
after { directory.delete }
|
134
134
|
|
135
135
|
context 'given an account_store is a directory' do
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Stormpath::Resource::PasswordPolicy, :vcr do
|
4
|
-
let(:application) { test_api_client.applications.create(
|
4
|
+
let(:application) { test_api_client.applications.create(application_attrs) }
|
5
5
|
|
6
6
|
after { application.delete }
|
7
7
|
|
8
8
|
describe 'instances should respond to attribute property methods' do
|
9
|
-
let(:directory) { test_api_client.directories.create(
|
9
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
10
10
|
let(:password_policy) { directory.password_policy }
|
11
11
|
|
12
12
|
before do
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Stormpath::Resource::PasswordStrength, :vcr do
|
4
|
-
let(:application) { test_api_client.applications.create(
|
4
|
+
let(:application) { test_api_client.applications.create(application_attrs) }
|
5
5
|
|
6
6
|
after { application.delete }
|
7
7
|
|
8
8
|
describe 'instances should respond to attribute property methods' do
|
9
|
-
let(:directory) { test_api_client.directories.create(
|
9
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
10
10
|
let(:password_policy) { directory.password_policy }
|
11
11
|
let(:password_strength) { password_policy.strength }
|
12
12
|
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Stormpath::Resource::Phone, :vcr do
|
4
|
+
describe 'instances should respond to attribute property methods' do
|
5
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
6
|
+
let(:account) { directory.accounts.create(account_attrs) }
|
7
|
+
let(:phone) do
|
8
|
+
account.phones.create(
|
9
|
+
number: '+12025550173',
|
10
|
+
name: 'test phone',
|
11
|
+
description: 'this is a testing phone number'
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
phone.delete
|
17
|
+
account.delete
|
18
|
+
directory.delete
|
19
|
+
end
|
20
|
+
|
21
|
+
it do
|
22
|
+
[:number, :name, :description].each do |property_accessor|
|
23
|
+
expect(phone).to respond_to(property_accessor)
|
24
|
+
expect(phone).to respond_to("#{property_accessor}=")
|
25
|
+
expect(phone.send(property_accessor)).to be_a String
|
26
|
+
end
|
27
|
+
|
28
|
+
[:verification_status, :status, :created_at, :modified_at].each do |property_getter|
|
29
|
+
expect(phone).to respond_to(property_getter)
|
30
|
+
expect(phone.send(property_getter)).to be_a String
|
31
|
+
end
|
32
|
+
|
33
|
+
expect(phone.account).to be_a Stormpath::Resource::Account
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'phone associations' do
|
38
|
+
let(:app) { test_api_client.applications.create(application_attrs) }
|
39
|
+
let(:application) { test_api_client.applications.get app.href }
|
40
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
41
|
+
|
42
|
+
before { map_account_store(app, directory, 1, true, true) }
|
43
|
+
let(:account) { directory.accounts.create(account_attrs) }
|
44
|
+
let(:phone) do
|
45
|
+
account.phones.create(
|
46
|
+
number: '+12025550173',
|
47
|
+
name: 'test phone',
|
48
|
+
description: 'this is a testing phone number'
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should belong_to account' do
|
53
|
+
expect(phone.account).to eq(account)
|
54
|
+
end
|
55
|
+
|
56
|
+
after do
|
57
|
+
application.delete if application
|
58
|
+
account.delete if account
|
59
|
+
directory.delete if directory
|
60
|
+
phone.delete if phone
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Stormpath::Resource::Schema, :vcr do
|
4
|
+
let(:application) { test_api_client.applications.create(application_attrs) }
|
5
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
6
|
+
let(:schema) { directory.account_schema }
|
7
|
+
|
8
|
+
after do
|
9
|
+
directory.delete
|
10
|
+
application.delete
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'instances should respond to attribute property methods' do
|
14
|
+
it do
|
15
|
+
expect(schema).to be_a Stormpath::Resource::Schema
|
16
|
+
|
17
|
+
[:created_at, :modified_at].each do |property_getter|
|
18
|
+
expect(schema).to respond_to(property_getter)
|
19
|
+
expect(schema.send(property_getter)).to be_a String
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'schema associations' do
|
25
|
+
context '#fields' do
|
26
|
+
let(:field) { directory.fields.first }
|
27
|
+
|
28
|
+
it 'should be able to get a list of fields' do
|
29
|
+
expect(schema.fields).to be_a Stormpath::Resource::Collection
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context '#directory' do
|
34
|
+
it 'should be able to fetch the directory' do
|
35
|
+
expect(schema.directory).to eq directory
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -7,11 +7,11 @@ describe 'StatusOnDirectoryAndAccount', :vcr do
|
|
7
7
|
let(:authenticate_user) do
|
8
8
|
application.authenticate_account(auth_request)
|
9
9
|
end
|
10
|
-
let(:directory) { test_api_client.directories.create(
|
11
|
-
let(:application) { test_api_client.applications.create(
|
12
|
-
let(:group) { directory.groups.create(
|
10
|
+
let(:directory) { test_api_client.directories.create(directory_attrs) }
|
11
|
+
let(:application) { test_api_client.applications.create(application_attrs) }
|
12
|
+
let(:group) { directory.groups.create(group_attrs) }
|
13
13
|
let!(:account) do
|
14
|
-
directory.accounts.create(
|
14
|
+
directory.accounts.create(account_attrs(email: 'rubytest', password: 'P@$$w0rd'))
|
15
15
|
end
|
16
16
|
let(:reloaded_account) { test_api_client.accounts.get account.href }
|
17
17
|
before { map_account_store(application, directory, 0, true, true) }
|
data/spec/spec_helper.rb
CHANGED
@@ -15,15 +15,18 @@ require 'uuidtools'
|
|
15
15
|
|
16
16
|
Dir['./spec/support/*.rb'].each { |file| require file }
|
17
17
|
|
18
|
-
HIJACK_HTTP_REQUESTS_WITH_VCR = ENV['STORMPATH_SDK_TEST_ENVIRONMENT'] != 'CI'
|
19
|
-
|
20
18
|
WebMock.allow_net_connect!
|
21
19
|
|
22
20
|
VCR.configure do |c|
|
23
21
|
c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
|
24
22
|
c.hook_into :webmock
|
25
23
|
c.configure_rspec_metadata!
|
26
|
-
|
24
|
+
|
25
|
+
c.before_record do |i|
|
26
|
+
i.request.headers.delete('Authorization')
|
27
|
+
u = URI.parse(i.request.uri)
|
28
|
+
i.request.uri.sub!(/:\/\/.*#{Regexp.escape(u.host)}/, "://#{u.host}" )
|
29
|
+
end
|
27
30
|
end
|
28
31
|
|
29
32
|
RSpec.configure do |c|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
shared_examples_for 'account_custom_data' do
|
2
2
|
context 'account' do
|
3
|
-
let(:custom_data_storage) { directory.accounts.create(
|
3
|
+
let(:custom_data_storage) { directory.accounts.create(account_attrs) }
|
4
4
|
let(:custom_data_storage_w_nested_custom_data) do
|
5
5
|
directory.accounts.create(
|
6
6
|
username: 'ruby username',
|
@@ -24,7 +24,7 @@ end
|
|
24
24
|
|
25
25
|
shared_examples_for 'group_custom_data' do
|
26
26
|
context 'group' do
|
27
|
-
let(:custom_data_storage) { directory.groups.create(
|
27
|
+
let(:custom_data_storage) { directory.groups.create(group_attrs) }
|
28
28
|
let(:custom_data_storage_w_nested_custom_data) do
|
29
29
|
directory.groups.create(
|
30
30
|
name: 'ruby group',
|