auth0 5.0.1 → 5.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.
@@ -15,9 +15,11 @@ module Auth0
15
15
  # @param identity [hash] Used to verify secondary, federated, and passwordless-email identities.
16
16
  # * :user_id [string] user_id of the identity.
17
17
  # * :provider [string] provider of the identity.
18
+ # @param client_id [string] client id
19
+ # @param organization_id [string] organization id
18
20
  #
19
21
  # @return [json] Returns the created ticket url.
20
- def post_email_verification(user_id, result_url: nil, ttl_sec: nil, identity: nil)
22
+ def post_email_verification(user_id, result_url: nil, ttl_sec: nil, identity: nil, client_id: nil, organization_id: nil)
21
23
  if user_id.to_s.empty?
22
24
  raise Auth0::InvalidParameter, 'Must supply a valid user id to post an email verification'
23
25
  end
@@ -27,6 +29,8 @@ module Auth0
27
29
  result_url: result_url,
28
30
  ttl_sec: ttl_sec.is_a?(Integer) ? ttl_sec : nil
29
31
  }
32
+ request_params[:client_id] = client_id unless client_id.nil?
33
+ request_params[:organization_id] = organization_id unless organization_id.nil?
30
34
 
31
35
  if identity
32
36
  unless identity.is_a? Hash
@@ -53,6 +57,8 @@ module Auth0
53
57
  # @param includeEmailInRedirect [boolean] Whether or not we include the email as part of the returnUrl
54
58
  # in the reset_email
55
59
  # @param new_password [string] The password to be set for the user once the ticket is used.
60
+ # @param client_id [string] client id
61
+ # @param organization_id [string] organization id
56
62
  #
57
63
  # @return [json] Returns the created ticket url.
58
64
  def post_password_change(
@@ -63,7 +69,10 @@ module Auth0
63
69
  ttl_sec: nil,
64
70
  mark_email_as_verified: nil,
65
71
  includeEmailInRedirect: nil,
66
- new_password: nil)
72
+ new_password: nil,
73
+ client_id: nil,
74
+ organization_id: nil
75
+ )
67
76
 
68
77
  booleans = [true, false]
69
78
  path = "#{tickets_path}/password-change"
@@ -77,6 +86,9 @@ module Auth0
77
86
  includeEmailInRedirect: booleans.include?(includeEmailInRedirect) ? includeEmailInRedirect : nil,
78
87
  new_password: new_password
79
88
  }
89
+ request_params[:client_id] = client_id unless client_id.nil?
90
+ request_params[:organization_id] = organization_id unless organization_id.nil?
91
+
80
92
  post(path, request_params)
81
93
  end
82
94
 
@@ -308,6 +308,18 @@ module Auth0
308
308
  post "#{users_path}/#{user_id}/multifactor/actions/invalidate-remember-browser"
309
309
  end
310
310
 
311
+
312
+ # Get a list of organizations for a user.
313
+ #
314
+ # @param user_id [string] The user_id of the permissions to get.
315
+ #
316
+ # @return [json] Returns organizations for the given user_id.
317
+ def get_user_organizations(user_id)
318
+ raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
319
+
320
+ get "#{users_path}/#{user_id}/organizations"
321
+ end
322
+
311
323
  private
312
324
 
313
325
  # Users API path
@@ -38,6 +38,8 @@ module Auth0
38
38
  class MissingUserId < Auth0::Exception; end
39
39
  # exception for unset client_id
40
40
  class MissingClientId < Auth0::Exception; end
41
+ # exception for unset organization_id
42
+ class MissingOrganizationId < Auth0::Exception; end
41
43
  # exception for an unset parameter
42
44
  class MissingParameter < Auth0::Exception; end
43
45
  # Api v2 access denied
@@ -18,6 +18,7 @@ module Auth0
18
18
  extend Auth0::Api::AuthenticationEndpoints
19
19
  @client_id = options[:client_id]
20
20
  @client_secret = options[:client_secret]
21
+ @organization = options[:organization]
21
22
  initialize_api(options)
22
23
  end
23
24
 
@@ -58,7 +59,8 @@ module Auth0
58
59
  def initialize_v2(options)
59
60
  extend Auth0::Api::V2
60
61
  @token = options[:access_token] || options[:token]
61
- @token = api_token.token if @token.nil? && @client_id && @client_secret
62
+ api_identifier = options[:api_identifier] || "https://#{@domain}/api/v2/"
63
+ @token = api_token(audience: api_identifier).token if @token.nil? && @client_id && @client_secret
62
64
  end
63
65
 
64
66
  def api_v2?(options)
@@ -100,11 +100,13 @@ module Auth0
100
100
  issuer = @context[:issuer]
101
101
  audience = @context[:audience]
102
102
  max_age = @context[:max_age]
103
+ org = @context[:organization]
103
104
 
104
105
  raise Auth0::InvalidParameter, 'Must supply a valid leeway' unless leeway.is_a?(Integer) && leeway >= 0
105
106
  raise Auth0::InvalidParameter, 'Must supply a valid nonce' unless nonce.nil? || !nonce.to_s.empty?
106
107
  raise Auth0::InvalidParameter, 'Must supply a valid issuer' unless issuer.nil? || !issuer.to_s.empty?
107
108
  raise Auth0::InvalidParameter, 'Must supply a valid audience' unless audience.nil? || !audience.to_s.empty?
109
+ raise Auth0::InvalidParameter, 'Must supply a valid organization' unless org.nil? || !org.to_s.empty?
108
110
 
109
111
  unless max_age.nil? || (max_age.is_a?(Integer) && max_age >= 0)
110
112
  raise Auth0::InvalidParameter, 'Must supply a valid max_age'
@@ -118,6 +120,7 @@ module Auth0
118
120
  validate_nonce(claims, nonce) if nonce
119
121
  validate_azp(claims, audience) if claims['aud'].is_a?(Array) && claims['aud'].count > 1
120
122
  validate_auth_time(claims, max_age, leeway) if max_age
123
+ validate_org(claims, org) if org
121
124
  end
122
125
  # rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
123
126
 
@@ -184,6 +187,17 @@ module Auth0
184
187
  end
185
188
  end
186
189
 
190
+ def validate_org(claims, expected)
191
+ unless claims.key?('org_id') && claims['org_id'].is_a?(String)
192
+ raise Auth0::InvalidIdToken, 'Organization Id (org_id) claim must be a string present in the ID token'
193
+ end
194
+
195
+ unless expected == claims['org_id']
196
+ raise Auth0::InvalidIdToken, "Organization Id (org_id) claim value mismatch in the ID token; expected \"#{expected}\","\
197
+ " found \"#{claims['org_id']}\""
198
+ end
199
+ end
200
+
187
201
  def validate_azp(claims, expected)
188
202
  unless claims.key?('azp') && claims['azp'].is_a?(String)
189
203
  raise Auth0::InvalidIdToken, 'Authorized Party (azp) claim must be a string present in the ID token'
data/lib/auth0/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # current version of gem
2
2
  module Auth0
3
- VERSION = '5.0.1'.freeze
3
+ VERSION = '5.1.0'.freeze
4
4
  end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+ describe Auth0::Api::V2::Branding do
3
+ before :all do
4
+ dummy_instance = DummyClass.new
5
+ dummy_instance.extend(Auth0::Api::V2::Branding)
6
+ dummy_instance.extend(Auth0::Mixins::Initializer)
7
+ @instance = dummy_instance
8
+ end
9
+
10
+ context '.branding' do
11
+ it { expect(@instance).to respond_to(:branding) }
12
+
13
+ it 'is expected to call get /api/v2/branding' do
14
+ expect(@instance).to receive(:get).with('/api/v2/branding')
15
+ expect { @instance.branding }.not_to raise_error
16
+ end
17
+
18
+ it 'is expected to respond to a get_branding method' do
19
+ expect(@instance).to respond_to(:get_branding)
20
+ end
21
+ end
22
+
23
+ context '.patch_branding' do
24
+ it { expect(@instance).to respond_to(:patch_branding) }
25
+ it 'is expected to call post /api/v2/branding' do
26
+ expect(@instance).to receive(:patch).with(
27
+ '/api/v2/branding',
28
+ template: 'Test'
29
+ )
30
+ expect { @instance.patch_branding({ template: 'Test' }) }.not_to raise_error
31
+ end
32
+
33
+ it 'is expected to respond to a get_branding method' do
34
+ expect(@instance).to respond_to(:update_branding)
35
+ end
36
+ end
37
+
38
+ context '.branding_templates_for_universal_login' do
39
+ it { expect(@instance).to respond_to(:branding) }
40
+
41
+ it 'is expected to call get /api/v2/branding/templates/universal-login' do
42
+ expect(@instance).to receive(:get).with('/api/v2/branding/templates/universal-login')
43
+ expect { @instance.branding_templates_for_universal_login }.not_to raise_error
44
+ end
45
+
46
+ it 'is expected to respond to a get_branding_templates_for_universal_login method' do
47
+ expect(@instance).to respond_to(:get_branding_templates_for_universal_login)
48
+ end
49
+ end
50
+
51
+ context '.put_branding_templates_for_universal_login' do
52
+ it { expect(@instance).to respond_to(:put_branding_templates_for_universal_login) }
53
+ it 'is expected to call put /api/v2/branding/templates/universal-login' do
54
+ expect(@instance).to receive(:put).with(
55
+ '/api/v2/branding/templates/universal-login', template: 'Template'
56
+ )
57
+ expect do
58
+ @instance.put_branding_templates_for_universal_login(template: 'Template')
59
+ end.not_to raise_error
60
+ end
61
+ end
62
+
63
+ context '.delete_branding_templates_for_universal_login' do
64
+ it { expect(@instance).to respond_to(:delete_branding_templates_for_universal_login) }
65
+ it 'is expected to call delete /api/v2/branding/templates/universal-login' do
66
+ expect(@instance).to receive(:delete).with('/api/v2/branding/templates/universal-login')
67
+ expect { @instance.delete_branding_templates_for_universal_login() }.not_to raise_error
68
+ end
69
+ end
70
+ end
@@ -14,6 +14,7 @@ describe Auth0::Api::V2::Connections do
14
14
  expect(@instance).to receive(:get).with(
15
15
  '/api/v2/connections',
16
16
  strategy: nil,
17
+ name: nil,
17
18
  fields: nil,
18
19
  include_fields: nil,
19
20
  page: nil,
@@ -28,6 +29,7 @@ describe Auth0::Api::V2::Connections do
28
29
  include_fields: true,
29
30
  fields: 'name',
30
31
  strategy: nil,
32
+ name: nil,
31
33
  page: nil,
32
34
  per_page: nil
33
35
  )
@@ -42,6 +44,7 @@ describe Auth0::Api::V2::Connections do
42
44
  include_fields: true,
43
45
  fields: 'name,strategy',
44
46
  strategy: nil,
47
+ name: nil,
45
48
  page: nil,
46
49
  per_page: nil
47
50
  )
@@ -56,6 +59,7 @@ describe Auth0::Api::V2::Connections do
56
59
  page: 1,
57
60
  per_page: 10,
58
61
  strategy: nil,
62
+ name: nil,
59
63
  fields: nil,
60
64
  include_fields: nil
61
65
  )
@@ -119,6 +119,17 @@ describe Auth0::Api::V2::Jobs do
119
119
  )
120
120
  end
121
121
 
122
+ it 'expect client to accept organization_id' do
123
+ expect(@instance).to receive(:post).with('/api/v2/jobs/verification-email',
124
+ user_id: 'user_id',
125
+ organization_id: 'org_id'
126
+ )
127
+
128
+ expect {
129
+ @instance.send_verification_email('user_id', organization_id: 'org_id')
130
+ }.not_to raise_error
131
+ end
132
+
122
133
  it 'should raise an error if the user_id is empty' do
123
134
  expect do
124
135
  @instance.send_verification_email('')
@@ -0,0 +1,588 @@
1
+ require 'spec_helper'
2
+ describe Auth0::Api::V2::Organizations do
3
+ before :all do
4
+ dummy_instance = DummyClass.new
5
+ dummy_instance.extend(Auth0::Api::V2::Organizations)
6
+ @instance = dummy_instance
7
+ end
8
+
9
+ context '.organizations' do
10
+ it 'is expected to respond to a organizations method' do
11
+ expect(@instance).to respond_to(:organizations)
12
+ end
13
+
14
+ it 'is expected to respond to a get_organizations method' do
15
+ expect(@instance).to respond_to(:get_organizations)
16
+ end
17
+
18
+ it 'is expected to get /api/v2/organizations' do
19
+ expect(@instance).to receive(:get).with(
20
+ '/api/v2/organizations',
21
+ per_page: nil,
22
+ page: nil,
23
+ include_totals: nil
24
+ )
25
+ expect { @instance.organizations }.not_to raise_error
26
+ end
27
+
28
+ it 'is expected to get /api/v2/organizations with custom parameters' do
29
+ expect(@instance).to receive(:get).with(
30
+ '/api/v2/organizations',
31
+ per_page: 10,
32
+ page: 1,
33
+ include_totals: true
34
+ )
35
+ expect do
36
+ @instance.organizations(
37
+ per_page: 10,
38
+ page: 1,
39
+ include_totals: true
40
+ )
41
+ end.not_to raise_error
42
+ end
43
+ end
44
+
45
+ context '.organization' do
46
+ it 'is expected to respond to a user method' do
47
+ expect(@instance).to respond_to(:organization)
48
+ end
49
+
50
+ it 'is expected to call get request to /api/v2/users/org_id' do
51
+ expect(@instance).to receive(:get).with(
52
+ '/api/v2/organizations/org_id'
53
+ )
54
+ expect { @instance.organization('org_id') }.not_to raise_error
55
+ end
56
+
57
+ it 'is expected to raise an exception when the organization ID is empty' do
58
+ expect { @instance.organization(nil) }.to raise_exception(Auth0::MissingOrganizationId)
59
+ end
60
+ end
61
+
62
+ context '.create_organization' do
63
+ it 'is expected to respond to a create_organization method' do
64
+ expect(@instance).to respond_to(:create_organization)
65
+ end
66
+
67
+ it 'is expected to post to /api/v2/organizations' do
68
+ expect(@instance).to receive(:post).with(
69
+ '/api/v2/organizations',
70
+ name: 'test_org'
71
+ )
72
+ expect do
73
+ @instance.create_organization(
74
+ name: 'test_org'
75
+ )
76
+ end.not_to raise_error
77
+ end
78
+ end
79
+
80
+ context '.delete_organization' do
81
+ it 'is expected to respond to a delete_organization method' do
82
+ expect(@instance).to respond_to :delete_organization
83
+ end
84
+
85
+ it 'is expected to call delete to /api/v2/organizations/org_id' do
86
+ expect(@instance).to receive(:delete).with('/api/v2/organizations/org_id')
87
+ expect { @instance.delete_organization('org_id') }.not_to raise_error
88
+ end
89
+
90
+ it 'is expected not to delete /api/v2/organizations if organization_id is blank' do
91
+ expect(@instance).not_to receive(:delete)
92
+ expect { @instance.delete_organization(nil) }.to raise_exception(
93
+ Auth0::MissingOrganizationId
94
+ )
95
+ end
96
+ end
97
+
98
+ context '.organization_by_name' do
99
+ it 'is expected to respond to a user method' do
100
+ expect(@instance).to respond_to(:organization_by_name)
101
+ end
102
+
103
+ it 'is expected to call get request to /api/v2/users/org_id' do
104
+ expect(@instance).to receive(:get).with(
105
+ '/api/v2/organizations/name/org_id'
106
+ )
107
+ expect { @instance.organization_by_name('org_id') }.not_to raise_error
108
+ end
109
+
110
+ it 'is expected to raise an exception when the organization ID is empty' do
111
+ expect { @instance.organization_by_name(nil) }.to raise_exception(Auth0::InvalidParameter)
112
+ end
113
+ end
114
+
115
+
116
+ context '.patch_organization' do
117
+ it 'is expected to respond to a patch_organization method' do
118
+ expect(@instance).to respond_to(:patch_organization)
119
+ end
120
+
121
+ it 'is expected to respond to a update_organization method' do
122
+ expect(@instance).to respond_to(:update_organization)
123
+ end
124
+
125
+ it 'is expected to patch /api/v2/organizations/org_id' do
126
+ expect(@instance).to receive(:patch).with(
127
+ '/api/v2/organizations/org_id',
128
+ name: 'name'
129
+ )
130
+ @instance.patch_organization(
131
+ 'org_id',
132
+ name: 'name'
133
+ )
134
+ end
135
+
136
+ it 'is expected to raise an exception when the organization id is empty' do
137
+ expect { @instance.patch_organization(nil, 'BODY') }.to raise_exception(Auth0::MissingOrganizationId)
138
+ end
139
+
140
+ it 'is expected to raise an error when the body is empty' do
141
+ expect { @instance.patch_organization('org_id', nil) }.to raise_error 'Must supply a valid body'
142
+ end
143
+ end
144
+
145
+ context '.get_organizations_enabled_connections' do
146
+ it 'is expected to respond to a get_organizations_enabled_connections method' do
147
+ expect(@instance).to respond_to(:get_organizations_enabled_connections)
148
+ end
149
+
150
+ it 'is expected to raise an exception when the org ID is empty' do
151
+ expect { @instance.get_organizations_enabled_connections(nil) }.to raise_exception(Auth0::MissingOrganizationId)
152
+ end
153
+
154
+ it 'is expected to get enabled_connections for an org' do
155
+ expect(@instance).to receive(:get).with(
156
+ '/api/v2/organizations/org_id/enabled_connections'
157
+ )
158
+ expect { @instance.get_organizations_enabled_connections('org_id') }.not_to raise_error
159
+ end
160
+
161
+ it 'is expected to get enabled_connections for an org' do
162
+ expect(@instance).to receive(:get).with(
163
+ '/api/v2/organizations/org_id/enabled_connections'
164
+ )
165
+ expect do
166
+ @instance.get_organizations_enabled_connections('org_id')
167
+ end.not_to raise_error
168
+ end
169
+ end
170
+
171
+ context '.get_organizations_enabled_connection' do
172
+ it 'is expected to respond to a get_organizations_enabled_connection method' do
173
+ expect(@instance).to respond_to(:get_organizations_enabled_connection)
174
+ end
175
+
176
+ it 'is expected to raise an exception when the org ID is empty' do
177
+ expect { @instance.get_organizations_enabled_connection(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
178
+ end
179
+
180
+ it 'is expected to raise an exception when the org ID is empty' do
181
+ expect { @instance.get_organizations_enabled_connection('org_id', nil) }.to raise_exception(Auth0::InvalidParameter)
182
+ end
183
+
184
+ it 'is expected to get enabled connection for an org' do
185
+ expect(@instance).to receive(:get).with(
186
+ '/api/v2/organizations/org_id/enabled_connections/connection_id'
187
+ )
188
+ expect { @instance.get_organizations_enabled_connection('org_id', 'connection_id') }.not_to raise_error
189
+ end
190
+
191
+ it 'is expected to get enabled connection for an org' do
192
+ expect(@instance).to receive(:get).with(
193
+ '/api/v2/organizations/org_id/enabled_connections/connection_id'
194
+ )
195
+ expect do
196
+ @instance.get_organizations_enabled_connection('org_id', 'connection_id')
197
+ end.not_to raise_error
198
+ end
199
+ end
200
+
201
+ context '.patch_organizations_enabled_connection' do
202
+ it 'is expected to respond to a patch_organizations_enabled_connection method' do
203
+ expect(@instance).to respond_to(:patch_organizations_enabled_connection)
204
+ end
205
+
206
+ it 'is expected to respond to a update_organizations_enabled_connection method' do
207
+ expect(@instance).to respond_to(:update_organizations_enabled_connection)
208
+ end
209
+
210
+ it 'is expected to patch /api/v2/organizations/org_id/enabled_connections/connection_id' do
211
+ expect(@instance).to receive(:patch).with(
212
+ '/api/v2/organizations/org_id/enabled_connections/connection_id',
213
+ {
214
+ assign_membership_on_login: false
215
+ }
216
+ )
217
+ @instance.patch_organizations_enabled_connection(
218
+ 'org_id',
219
+ 'connection_id',
220
+ assign_membership_on_login: false
221
+ )
222
+ end
223
+
224
+ it 'is expected to raise an exception when the organization id is empty' do
225
+ expect { @instance.patch_organizations_enabled_connection(nil, 'BODY') }.to raise_exception(Auth0::MissingOrganizationId)
226
+ end
227
+
228
+ it 'is expected to raise an error when the connection_id is empty' do
229
+ expect { @instance.patch_organizations_enabled_connection('org_id', nil) }.to raise_error 'Must supply a valid connection id'
230
+ end
231
+
232
+ it 'is expected to raise an error when assign_membership_on_login is nil' do
233
+ expect { @instance.patch_organizations_enabled_connection('org_id', 'connection_id') }.to raise_error 'Must supply a valid assign_membership_on_login value'
234
+ end
235
+ end
236
+
237
+ context '.create_organizations_enabled_connection' do
238
+ it 'is expected to respond to a create_organizations_enabled_connection method' do
239
+ expect(@instance).to respond_to(:create_organizations_enabled_connection)
240
+ end
241
+
242
+ it 'is expected to respond to a add_organizations_enabled_connection method' do
243
+ expect(@instance).to respond_to(:add_organizations_enabled_connection)
244
+ end
245
+
246
+ it 'is expected to post /api/v2/organizations/org_id/enabled_connections' do
247
+ expect(@instance).to receive(:post).with(
248
+ '/api/v2/organizations/org_id/enabled_connections',
249
+ {
250
+ assign_membership_on_login: true
251
+ }
252
+ )
253
+ @instance.create_organizations_enabled_connection('org_id', assign_membership_on_login: true)
254
+ end
255
+
256
+ it 'is expected to raise an exception when the organization id is empty' do
257
+ expect { @instance.create_organizations_enabled_connection(nil) }.to raise_exception(Auth0::MissingOrganizationId)
258
+ end
259
+ end
260
+
261
+ context '.delete_organizations_enabled_connection' do
262
+ it 'is expected to respond to a delete_organizations_enabled_connection method' do
263
+ expect(@instance).to respond_to(:delete_organizations_enabled_connection)
264
+ end
265
+
266
+ it 'is expected to respond to a remove_organizations_enabled_connection method' do
267
+ expect(@instance).to respond_to(:remove_organizations_enabled_connection)
268
+ end
269
+
270
+ it 'is expected to delete /api/v2/organizations/org_id/enabled_connections/connection_id' do
271
+ expect(@instance).to receive(:delete).with(
272
+ '/api/v2/organizations/org_id/enabled_connections/connection_id'
273
+ )
274
+ @instance.delete_organizations_enabled_connection('org_id', 'connection_id')
275
+ end
276
+
277
+ it 'is expected to raise an exception when the organization id is empty' do
278
+ expect { @instance.delete_organizations_enabled_connection(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
279
+ end
280
+
281
+ it 'is expected to raise an exception when the connection id is empty' do
282
+ expect { @instance.delete_organizations_enabled_connection('org_id', nil) }.to raise_error 'Must supply a valid connection id'
283
+ end
284
+ end
285
+
286
+ context '.get_organizations_invites' do
287
+ it 'is expected to respond to a get_organizations_invites method' do
288
+ expect(@instance).to respond_to(:get_organizations_invites)
289
+ end
290
+
291
+ it 'is expected to raise an exception when the org ID is empty' do
292
+ expect { @instance.get_organizations_invites(nil) }.to raise_exception(Auth0::MissingOrganizationId)
293
+ end
294
+
295
+ it 'is expected to get invitations for an org' do
296
+ expect(@instance).to receive(:get).with(
297
+ '/api/v2/organizations/org_id/invitations'
298
+ )
299
+ expect { @instance.get_organizations_invites('org_id') }.not_to raise_error
300
+ end
301
+
302
+ it 'is expected to get invitations for an org' do
303
+ expect(@instance).to receive(:get).with(
304
+ '/api/v2/organizations/org_id/invitations'
305
+ )
306
+ expect do
307
+ @instance.get_organizations_invites('org_id')
308
+ end.not_to raise_error
309
+ end
310
+ end
311
+
312
+ context '.get_organizations_invite' do
313
+ it 'is expected to respond to a get_organizations_invite method' do
314
+ expect(@instance).to respond_to(:get_organizations_invite)
315
+ end
316
+
317
+ it 'is expected to raise an exception when the org ID is empty' do
318
+ expect { @instance.get_organizations_invite(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
319
+ end
320
+
321
+ it 'is expected to raise an exception when the org ID is empty' do
322
+ expect { @instance.get_organizations_invite('org_id', nil) }.to raise_exception(Auth0::InvalidParameter)
323
+ end
324
+
325
+ it 'is expected to get enabled connection for an org' do
326
+ expect(@instance).to receive(:get).with(
327
+ '/api/v2/organizations/org_id/invitations/invite_id'
328
+ )
329
+ expect { @instance.get_organizations_invite('org_id', 'invite_id') }.not_to raise_error
330
+ end
331
+
332
+ it 'is expected to get enabled connection for an org' do
333
+ expect(@instance).to receive(:get).with(
334
+ '/api/v2/organizations/org_id/invitations/invite_id'
335
+ )
336
+ expect do
337
+ @instance.get_organizations_invite('org_id', 'invite_id')
338
+ end.not_to raise_error
339
+ end
340
+ end
341
+
342
+ context '.patch_organizations_enabled_connection' do
343
+ it 'is expected to respond to a patch_organizations_enabled_connection method' do
344
+ expect(@instance).to respond_to(:patch_organizations_enabled_connection)
345
+ end
346
+
347
+ it 'is expected to respond to a update_organizations_enabled_connection method' do
348
+ expect(@instance).to respond_to(:update_organizations_enabled_connection)
349
+ end
350
+
351
+ it 'is expected to patch /api/v2/organizations/org_id/enabled_connections/connection_id' do
352
+ expect(@instance).to receive(:patch).with(
353
+ '/api/v2/organizations/org_id/enabled_connections/connection_id',
354
+ {
355
+ assign_membership_on_login: false
356
+ }
357
+ )
358
+ @instance.patch_organizations_enabled_connection(
359
+ 'org_id',
360
+ 'connection_id',
361
+ assign_membership_on_login: false
362
+ )
363
+ end
364
+
365
+ it 'is expected to raise an exception when the organization id is empty' do
366
+ expect { @instance.patch_organizations_enabled_connection(nil, 'BODY') }.to raise_exception(Auth0::MissingOrganizationId)
367
+ end
368
+
369
+ it 'is expected to raise an error when the connection_id is empty' do
370
+ expect { @instance.patch_organizations_enabled_connection('org_id', nil) }.to raise_error 'Must supply a valid connection id'
371
+ end
372
+
373
+ it 'is expected to raise an error when assign_membership_on_login is nil' do
374
+ expect { @instance.patch_organizations_enabled_connection('org_id', 'connection_id') }.to raise_error 'Must supply a valid assign_membership_on_login value'
375
+ end
376
+ end
377
+
378
+ context '.create_organizations_invite' do
379
+ it 'is expected to respond to a create_organizations_invite method' do
380
+ expect(@instance).to respond_to(:create_organizations_invite)
381
+ end
382
+
383
+ it 'is expected to respond to a add_organizations_invite method' do
384
+ expect(@instance).to respond_to(:add_organizations_invite)
385
+ end
386
+
387
+ it 'is expected to post /api/v2/organizations/org_id/invitations' do
388
+ expect(@instance).to receive(:post).with(
389
+ '/api/v2/organizations/org_id/invitations',
390
+ {
391
+ ttl_sec: 60000
392
+ }
393
+ )
394
+ @instance.create_organizations_invite('org_id', ttl_sec: 60000)
395
+ end
396
+
397
+ it 'is expected to raise an exception when the organization id is empty' do
398
+ expect { @instance.create_organizations_invite(nil) }.to raise_exception(Auth0::MissingOrganizationId)
399
+ end
400
+ end
401
+
402
+ context '.delete_organizations_invite' do
403
+ it 'is expected to respond to a delete_organizations_invite method' do
404
+ expect(@instance).to respond_to(:delete_organizations_invite)
405
+ end
406
+
407
+ it 'is expected to respond to a remove_organizations_invite method' do
408
+ expect(@instance).to respond_to(:remove_organizations_invite)
409
+ end
410
+
411
+ it 'is expected to delete /api/v2/organizations/org_id/invitations/invite_id' do
412
+ expect(@instance).to receive(:delete).with(
413
+ '/api/v2/organizations/org_id/invitations/invite_id'
414
+ )
415
+ @instance.delete_organizations_invite('org_id', 'invite_id')
416
+ end
417
+
418
+ it 'is expected to raise an exception when the organization id is empty' do
419
+ expect { @instance.delete_organizations_invite(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
420
+ end
421
+
422
+ it 'is expected to raise an exception when the invitation id is empty' do
423
+ expect { @instance.delete_organizations_invite('org_id', nil) }.to raise_error 'Must supply a valid invitation id'
424
+ end
425
+ end
426
+
427
+ context '.get_organizations_members' do
428
+ it 'is expected to respond to a get_organizations_members method' do
429
+ expect(@instance).to respond_to(:get_organizations_members)
430
+ end
431
+
432
+ it 'is expected to raise an exception when the org ID is empty' do
433
+ expect { @instance.get_organizations_members(nil) }.to raise_exception(Auth0::MissingOrganizationId)
434
+ end
435
+
436
+ it 'is expected to get invitations for an org' do
437
+ expect(@instance).to receive(:get).with(
438
+ '/api/v2/organizations/org_id/members'
439
+ )
440
+ expect { @instance.get_organizations_members('org_id') }.not_to raise_error
441
+ end
442
+
443
+ it 'is expected to get members for an org' do
444
+ expect(@instance).to receive(:get).with(
445
+ '/api/v2/organizations/org_id/members'
446
+ )
447
+ expect do
448
+ @instance.get_organizations_members('org_id')
449
+ end.not_to raise_error
450
+ end
451
+ end
452
+
453
+ context '.create_organizations_members' do
454
+ it 'is expected to respond to a create_organizations_members method' do
455
+ expect(@instance).to respond_to(:create_organizations_members)
456
+ end
457
+
458
+ it 'is expected to respond to a add_organizations_members method' do
459
+ expect(@instance).to respond_to(:add_organizations_members)
460
+ end
461
+
462
+ it 'is expected to post /api/v2/organizations/org_id/members' do
463
+ expect(@instance).to receive(:post).with(
464
+ '/api/v2/organizations/org_id/members',
465
+ {
466
+ members: ['123', '456']
467
+ }
468
+ )
469
+ @instance.create_organizations_members('org_id', ['123', '456'])
470
+ end
471
+
472
+ it 'is expected to raise an exception when the organization id is empty' do
473
+ expect { @instance.create_organizations_members(nil) }.to raise_exception(Auth0::MissingOrganizationId)
474
+ end
475
+ end
476
+
477
+ context '.delete_organizations_members' do
478
+ it 'is expected to respond to a delete_organizations_members method' do
479
+ expect(@instance).to respond_to(:delete_organizations_members)
480
+ end
481
+
482
+ it 'is expected to respond to a remove_organizations_members method' do
483
+ expect(@instance).to respond_to(:remove_organizations_members)
484
+ end
485
+
486
+ it 'is expected to delete /api/v2/organizations/org_id/members' do
487
+ expect(@instance).to receive(:delete).with(
488
+ '/api/v2/organizations/org_id/members', {
489
+ members: ['123', '456']
490
+ }
491
+ )
492
+ @instance.delete_organizations_members('org_id', ['123', '456'])
493
+ end
494
+
495
+ it 'is expected to raise an exception when the organization id is empty' do
496
+ expect { @instance.delete_organizations_members(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
497
+ end
498
+
499
+ it 'is expected to raise an exception when the invitation id is empty' do
500
+ expect { @instance.delete_organizations_members('org_id', []) }.to raise_error 'Must supply an array of member ids'
501
+ end
502
+ end
503
+
504
+ context '.get_organizations_member_roles' do
505
+ it 'is expected to respond to a get_organizations_member_roles method' do
506
+ expect(@instance).to respond_to(:get_organizations_member_roles)
507
+ end
508
+
509
+ it 'is expected to raise an exception when the org ID is empty' do
510
+ expect { @instance.get_organizations_member_roles(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
511
+ end
512
+
513
+ it 'is expected to raise an exception when the org ID is empty' do
514
+ expect { @instance.get_organizations_member_roles('org_id', nil) }.to raise_exception(Auth0::InvalidParameter)
515
+ end
516
+
517
+ it 'is expected to get roles for a member in an org' do
518
+ expect(@instance).to receive(:get).with(
519
+ '/api/v2/organizations/org_id/members/user_id/roles'
520
+ )
521
+ expect { @instance.get_organizations_member_roles('org_id', 'user_id') }.not_to raise_error
522
+ end
523
+
524
+ it 'is expected to get members for an org' do
525
+ expect(@instance).to receive(:get).with(
526
+ '/api/v2/organizations/org_id/members/user_id/roles'
527
+ )
528
+ expect do
529
+ @instance.get_organizations_member_roles('org_id', 'user_id')
530
+ end.not_to raise_error
531
+ end
532
+ end
533
+
534
+ context '.create_organizations_member_roles' do
535
+ it 'is expected to respond to a create_organizations_member_roles method' do
536
+ expect(@instance).to respond_to(:create_organizations_member_roles)
537
+ end
538
+
539
+ it 'is expected to respond to a add_organizations_member_roles method' do
540
+ expect(@instance).to respond_to(:add_organizations_member_roles)
541
+ end
542
+
543
+ it 'is expected to post /api/v2/organizations/org_id/members/user_id/roles' do
544
+ expect(@instance).to receive(:post).with(
545
+ '/api/v2/organizations/org_id/members/user_id/roles',
546
+ {
547
+ roles: ['123', '456']
548
+ }
549
+ )
550
+ @instance.create_organizations_member_roles('org_id', 'user_id', ['123', '456'])
551
+ end
552
+
553
+ it 'is expected to raise an exception when the organization id is empty' do
554
+ expect { @instance.create_organizations_member_roles(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
555
+ end
556
+ end
557
+
558
+ context '.delete_organizations_member_roles' do
559
+ it 'is expected to respond to a delete_organizations_member_roles method' do
560
+ expect(@instance).to respond_to(:delete_organizations_member_roles)
561
+ end
562
+
563
+ it 'is expected to respond to a remove_organizations_member_roles method' do
564
+ expect(@instance).to respond_to(:remove_organizations_member_roles)
565
+ end
566
+
567
+ it 'is expected to delete /api/v2/organizations/org_id/members/user_id/roles' do
568
+ expect(@instance).to receive(:delete).with(
569
+ '/api/v2/organizations/org_id/members/user_id/roles', {
570
+ roles: ['123', '456']
571
+ }
572
+ )
573
+ @instance.delete_organizations_member_roles('org_id', 'user_id', ['123', '456'])
574
+ end
575
+
576
+ it 'is expected to raise an exception when the organization id is empty' do
577
+ expect { @instance.delete_organizations_member_roles(nil, nil) }.to raise_exception(Auth0::MissingOrganizationId)
578
+ end
579
+
580
+ it 'is expected to raise an exception when the invitation id is empty' do
581
+ expect { @instance.delete_organizations_member_roles('org_id', nil, nil) }.to raise_error 'Must supply a valid user id'
582
+ end
583
+
584
+ it 'is expected to raise an exception when the invitation id is empty' do
585
+ expect { @instance.delete_organizations_member_roles('org_id', 'user_id') }.to raise_error 'Must supply an array of role ids'
586
+ end
587
+ end
588
+ end