auth0 4.4.0 → 4.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +55 -19
- data/Gemfile +1 -1
- data/README.md +92 -38
- data/lib/auth0/api/authentication_endpoints.rb +169 -133
- data/lib/auth0/api/v2/client_grants.rb +8 -3
- data/lib/auth0/api/v2/clients.rb +9 -6
- data/lib/auth0/api/v2/connections.rb +16 -7
- data/lib/auth0/api/v2/rules.rb +6 -2
- data/lib/auth0/api/v2/users.rb +17 -14
- data/lib/auth0/version.rb +1 -1
- data/spec/integration/lib/auth0/api/api_authentication_spec.rb +28 -45
- data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +18 -15
- data/spec/integration/lib/auth0/api/v2/api_clients_spec.rb +19 -3
- data/spec/integration/lib/auth0/api/v2/api_rules_spec.rb +13 -17
- data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +24 -13
- data/spec/lib/auth0/api/authentication_endpoints_spec.rb +160 -57
- data/spec/lib/auth0/api/v2/client_grants_spec.rb +17 -2
- data/spec/lib/auth0/api/v2/clients_spec.rb +50 -5
- data/spec/lib/auth0/api/v2/connections_spec.rb +45 -1
- data/spec/lib/auth0/api/v2/rules_spec.rb +23 -1
- data/spec/lib/auth0/api/v2/users_spec.rb +19 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/spec_helper_full.rb +1 -2
- metadata +50 -4
@@ -45,6 +45,30 @@ describe Auth0::Api::V2::Users do
|
|
45
45
|
client.users(per_page: 1, fields: [:email].join(','), include_fields: false).first
|
46
46
|
).to include('user_id', 'picture')
|
47
47
|
end
|
48
|
+
|
49
|
+
it 'is expected to find a user with a v2 search engine query' do
|
50
|
+
sleep 1
|
51
|
+
expect(
|
52
|
+
client.users(
|
53
|
+
per_page: 1,
|
54
|
+
fields: 'user_id',
|
55
|
+
q: "updated_at:{2016-01-01 TO *}",
|
56
|
+
search_engine: 'v2'
|
57
|
+
).first
|
58
|
+
).to include('user_id')
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'is expected to find a user with a v3 search engine query' do
|
62
|
+
sleep 1
|
63
|
+
expect(
|
64
|
+
client.users(
|
65
|
+
per_page: 1,
|
66
|
+
fields: 'user_id',
|
67
|
+
q: "updated_at:[2016-01-01 TO *]",
|
68
|
+
search_engine: 'v3'
|
69
|
+
).first
|
70
|
+
).to include('user_id')
|
71
|
+
end
|
48
72
|
end
|
49
73
|
end
|
50
74
|
|
@@ -150,19 +174,6 @@ describe Auth0::Api::V2::Users do
|
|
150
174
|
end
|
151
175
|
|
152
176
|
let(:body_link) { { 'provider' => 'auth0', 'user_id' => link_user['user_id'] } }
|
153
|
-
skip 'Link user account examples are skipped to avoid errors on users deletion' do
|
154
|
-
it do
|
155
|
-
expect(
|
156
|
-
client.link_user_account(primary_user['user_id'], body_link).first
|
157
|
-
).to include('provider' => 'auth0', 'user_id' => primary_user['identities'].first['user_id'])
|
158
|
-
end
|
159
|
-
|
160
|
-
it do
|
161
|
-
expect(
|
162
|
-
client.unlink_users_account(primary_user['user_id'], 'auth0', link_user['user_id']).first
|
163
|
-
).to include('provider' => 'auth0', 'user_id' => primary_user['identities'].first['user_id'])
|
164
|
-
end
|
165
|
-
end
|
166
177
|
end
|
167
178
|
|
168
179
|
end
|
@@ -1,5 +1,8 @@
|
|
1
|
+
# rubocop:disable Metrics/BlockLength
|
1
2
|
require 'spec_helper'
|
2
3
|
describe Auth0::Api::AuthenticationEndpoints do
|
4
|
+
UP_AUTH = 'Username-Password-Authentication'.freeze
|
5
|
+
|
3
6
|
before :all do
|
4
7
|
dummy_instance = DummyClass.new
|
5
8
|
dummy_instance.extend(Auth0::Api::AuthenticationEndpoints)
|
@@ -13,7 +16,7 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
13
16
|
allow(@instance).to receive(:post).with(
|
14
17
|
'/oauth/token', client_id: @instance.client_id, client_secret: nil, grant_type: 'client_credentials'
|
15
18
|
)
|
16
|
-
|
19
|
+
.and_return('access_token' => 'AccessToken')
|
17
20
|
expect(@instance).to receive(:post).with(
|
18
21
|
'/oauth/token', client_id: @instance.client_id, client_secret: nil, grant_type: 'client_credentials'
|
19
22
|
)
|
@@ -28,7 +31,7 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
28
31
|
'/oauth/access_token', client_id: @instance.client_id, access_token: 'access_token', connection: 'facebook',
|
29
32
|
scope: 'openid'
|
30
33
|
)
|
31
|
-
|
34
|
+
.and_return('access_token' => 'AccessToken')
|
32
35
|
expect(@instance).to receive(:post).with(
|
33
36
|
'/oauth/access_token', client_id: @instance.client_id, access_token: 'access_token', connection: 'facebook',
|
34
37
|
scope: 'openid'
|
@@ -44,7 +47,7 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
44
47
|
'/oauth/token', client_id: @instance.client_id, client_secret: nil, grant_type: 'authorization_code',
|
45
48
|
connection: 'facebook', code: 'code', scope: 'openid', redirect_uri: 'uri'
|
46
49
|
)
|
47
|
-
|
50
|
+
.and_return('user_tokens' => 'UserToken')
|
48
51
|
expect(@instance).to receive(:post).with(
|
49
52
|
'/oauth/token', client_id: @instance.client_id, client_secret: nil, grant_type: 'authorization_code',
|
50
53
|
connection: 'facebook', code: 'code', scope: 'openid', redirect_uri: 'uri'
|
@@ -63,64 +66,102 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
63
66
|
client_id: @instance.client_id,
|
64
67
|
username: 'test@test.com',
|
65
68
|
client_secret: @instance.client_secret,
|
66
|
-
password: '
|
69
|
+
password: 'test12345', scope: 'openid', connection: 'Username-Password-Authentication',
|
67
70
|
grant_type: 'password', id_token: nil, device: nil
|
68
71
|
)
|
69
|
-
@instance.login('test@test.com', '
|
72
|
+
@instance.login('test@test.com', 'test12345')
|
70
73
|
end
|
71
74
|
it { expect { @instance.login('', '') }.to raise_error 'Must supply a valid username' }
|
72
75
|
it { expect { @instance.login('username', '') }.to raise_error 'Must supply a valid password' }
|
73
76
|
end
|
74
77
|
|
78
|
+
# Auth0::API::AuthenticationEndpoints.signup
|
75
79
|
context '.signup' do
|
76
80
|
it { expect(@instance).to respond_to(:signup) }
|
77
|
-
|
81
|
+
|
82
|
+
it 'is expected to make a post request to /dbconnections/signup' do
|
78
83
|
expect(@instance).to receive(:post).with(
|
79
84
|
'/dbconnections/signup',
|
80
|
-
client_id: @instance.client_id,
|
81
|
-
|
85
|
+
client_id: @instance.client_id,
|
86
|
+
email: 'test@test.com',
|
87
|
+
password: 'password',
|
88
|
+
connection: 'User'
|
82
89
|
)
|
83
90
|
@instance.signup('test@test.com', 'password', 'User')
|
84
91
|
end
|
85
|
-
|
86
|
-
it
|
92
|
+
|
93
|
+
it 'is expected to raise an error with an empty email' do
|
94
|
+
expect do
|
95
|
+
@instance.signup('', '')
|
96
|
+
end.to raise_error 'Must supply a valid email'
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'is expected to raise an error with an empty password' do
|
100
|
+
expect do
|
101
|
+
@instance.signup('email', '')
|
102
|
+
end.to raise_error 'Must supply a valid password'
|
103
|
+
end
|
87
104
|
end
|
88
105
|
|
106
|
+
# Auth0::API::AuthenticationEndpoints.change_password
|
89
107
|
context '.change_password' do
|
90
108
|
it { expect(@instance).to respond_to(:change_password) }
|
109
|
+
|
91
110
|
it 'is expected to make post to /dbconnections/change_password' do
|
92
111
|
expect(@instance).to receive(:post).with(
|
93
112
|
'/dbconnections/change_password',
|
94
|
-
client_id: @instance.client_id,
|
95
|
-
|
113
|
+
client_id: @instance.client_id,
|
114
|
+
email: 'test@test.com',
|
115
|
+
password: 'password',
|
116
|
+
connection: 'User'
|
96
117
|
)
|
97
118
|
@instance.change_password('test@test.com', 'password', 'User')
|
98
119
|
end
|
99
|
-
|
120
|
+
|
121
|
+
it 'is expected to raise an error with an empty email' do
|
122
|
+
expect do
|
123
|
+
@instance.change_password('', '', '')
|
124
|
+
end.to raise_error 'Must supply a valid email'
|
125
|
+
end
|
100
126
|
end
|
101
127
|
|
128
|
+
# Auth0::API::AuthenticationEndpoints.start_passwordless_email_flow
|
102
129
|
context '.start_passwordless_email_flow' do
|
103
130
|
it { expect(@instance).to respond_to(:start_passwordless_email_flow) }
|
131
|
+
|
104
132
|
it 'is expected to make post to /passwordless/start' do
|
105
133
|
expect(@instance).to receive(:post).with(
|
106
134
|
'/passwordless/start',
|
107
135
|
client_id: @instance.client_id,
|
108
136
|
connection: 'email',
|
109
137
|
email: 'test@test.com',
|
110
|
-
send: '
|
138
|
+
send: 'code',
|
111
139
|
authParams: {
|
112
140
|
scope: 'scope',
|
113
141
|
protocol: 'protocol'
|
114
142
|
}
|
115
143
|
)
|
116
|
-
@instance.start_passwordless_email_flow(
|
144
|
+
@instance.start_passwordless_email_flow(
|
145
|
+
'test@test.com',
|
146
|
+
'code',
|
147
|
+
scope: 'scope',
|
148
|
+
protocol: 'protocol'
|
149
|
+
)
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'is expected to raise an error with an empty email' do
|
153
|
+
expect do
|
154
|
+
@instance.start_passwordless_email_flow('', '', '')
|
155
|
+
end.to raise_error 'Must supply a valid email'
|
117
156
|
end
|
118
|
-
it { expect { @instance.start_passwordless_email_flow('', '', '') }.to raise_error 'Must supply a valid email' }
|
119
157
|
end
|
120
158
|
|
159
|
+
# Auth0::API::AuthenticationEndpoints.start_passwordless_sms_flow
|
121
160
|
context '.start_passwordless_sms_flow' do
|
122
161
|
let(:phone_number) { Faker::PhoneNumber.cell_phone }
|
162
|
+
|
123
163
|
it { expect(@instance).to respond_to(:start_passwordless_sms_flow) }
|
164
|
+
|
124
165
|
it 'is expected to make post to /passwordless/start' do
|
125
166
|
expect(@instance).to receive(:post).with(
|
126
167
|
'/passwordless/start',
|
@@ -130,7 +171,12 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
130
171
|
)
|
131
172
|
@instance.start_passwordless_sms_flow(phone_number)
|
132
173
|
end
|
133
|
-
|
174
|
+
|
175
|
+
it 'is expected to raise an error with an empty phone number' do
|
176
|
+
expect do
|
177
|
+
@instance.start_passwordless_sms_flow('')
|
178
|
+
end.to raise_error 'Must supply a valid phone number'
|
179
|
+
end
|
134
180
|
end
|
135
181
|
|
136
182
|
context '.phone_login' do
|
@@ -150,54 +196,30 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
150
196
|
it { expect { @instance.phone_login('phone', '') }.to raise_error 'Must supply a valid code' }
|
151
197
|
end
|
152
198
|
|
199
|
+
# Auth0::API::AuthenticationEndpoints.saml_metadata
|
153
200
|
context '.saml_metadata' do
|
154
201
|
it { expect(@instance).to respond_to(:saml_metadata) }
|
155
|
-
|
156
|
-
|
202
|
+
|
203
|
+
it 'is expected to make post to SAMLP metadata endpoint' do
|
204
|
+
expect(@instance).to receive(:get).with(
|
205
|
+
"/samlp/metadata/#{@instance.client_id}"
|
206
|
+
)
|
157
207
|
@instance.saml_metadata
|
158
208
|
end
|
159
209
|
end
|
160
210
|
|
211
|
+
# Auth0::API::AuthenticationEndpoints.wsfed_metadata
|
161
212
|
context '.wsfed_metadata' do
|
162
213
|
it { expect(@instance).to respond_to(:wsfed_metadata) }
|
163
|
-
it 'is expected to make post to /wsfed/FederationMetadata/2007-06/FederationMetadata.xml' do
|
164
|
-
expect(@instance).to receive(:get).with('/wsfed/FederationMetadata/2007-06/FederationMetadata.xml')
|
165
|
-
@instance.wsfed_metadata
|
166
|
-
end
|
167
|
-
end
|
168
214
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
it 'is expected to return an authorization url' do
|
173
|
-
expect(@instance.authorization_url(redirect_uri).to_s).to eq(
|
174
|
-
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
175
|
-
"redirect_uri=#{redirect_uri}"
|
176
|
-
)
|
177
|
-
end
|
178
|
-
let(:additional_parameters) { { additional_parameters: { aparam1: 'test1' } } }
|
179
|
-
it 'is expected to return an authorization url with additionalParameters' do
|
180
|
-
expect(@instance.authorization_url(redirect_uri, additional_parameters).to_s).to eq(
|
181
|
-
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
182
|
-
"redirect_uri=#{redirect_uri}&aparam1=test1"
|
183
|
-
)
|
184
|
-
end
|
185
|
-
let(:state) { { state: 'state1' } }
|
186
|
-
it 'is expected to return an authorization url with additionalParameters' do
|
187
|
-
expect(@instance.authorization_url(redirect_uri, state).to_s).to eq(
|
188
|
-
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
189
|
-
"redirect_uri=#{redirect_uri}&state=state1"
|
190
|
-
)
|
191
|
-
end
|
192
|
-
let(:connection) { { connection: 'connection-1' } }
|
193
|
-
it 'is expected to return an authorization url with additionalParameters' do
|
194
|
-
expect(@instance.authorization_url(redirect_uri, connection).to_s).to eq(
|
195
|
-
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
196
|
-
"connection=connection-1&redirect_uri=#{redirect_uri}"
|
215
|
+
it 'is expected to make post to WS-Fed metadata endpoint' do
|
216
|
+
expect(@instance).to receive(:get).with(
|
217
|
+
'/wsfed/FederationMetadata/2007-06/FederationMetadata.xml'
|
197
218
|
)
|
219
|
+
@instance.wsfed_metadata
|
198
220
|
end
|
199
|
-
it { expect { @instance.authorization_url('', '') }.to raise_error 'Must supply a valid redirect_uri' }
|
200
221
|
end
|
222
|
+
|
201
223
|
context '.token_info' do
|
202
224
|
it { expect(@instance).to respond_to(:token_info) }
|
203
225
|
it 'is expected to make post to /tokeinfo' do
|
@@ -308,41 +330,122 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
308
330
|
end
|
309
331
|
end
|
310
332
|
|
333
|
+
context '.authorization_url' do
|
334
|
+
let(:redirect_uri) { 'http://redirect.com' }
|
335
|
+
it { expect(@instance).to respond_to(:authorization_url) }
|
336
|
+
it 'is expected to return an authorization url' do
|
337
|
+
expect(@instance.authorization_url(redirect_uri).to_s).to eq(
|
338
|
+
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
339
|
+
'redirect_uri=http%3A%2F%2Fredirect.com'
|
340
|
+
)
|
341
|
+
end
|
342
|
+
let(:additional_parameters) { { additional_parameters: { aparam1: 'test1' } } }
|
343
|
+
it 'is expected to return an authorization url with additionalParameters' do
|
344
|
+
expect(@instance.authorization_url(redirect_uri, additional_parameters).to_s).to eq(
|
345
|
+
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
346
|
+
'redirect_uri=http%3A%2F%2Fredirect.com&aparam1=test1'
|
347
|
+
)
|
348
|
+
end
|
349
|
+
let(:state) { { state: 'state1' } }
|
350
|
+
it 'is expected to return an authorization url with additionalParameters' do
|
351
|
+
expect(@instance.authorization_url(redirect_uri, state).to_s).to eq(
|
352
|
+
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
353
|
+
'redirect_uri=http%3A%2F%2Fredirect.com&state=state1'
|
354
|
+
)
|
355
|
+
end
|
356
|
+
let(:connection) { { connection: 'connection-1' } }
|
357
|
+
it 'is expected to return an authorization url with additionalParameters' do
|
358
|
+
expect(@instance.authorization_url(redirect_uri, connection).to_s).to eq(
|
359
|
+
"https://#{@instance.domain}/authorize?client_id=#{@instance.client_id}&response_type=code&"\
|
360
|
+
'connection=connection-1&redirect_uri=http%3A%2F%2Fredirect.com'
|
361
|
+
)
|
362
|
+
end
|
363
|
+
it { expect { @instance.authorization_url('', '') }.to raise_error 'Must supply a valid redirect_uri' }
|
364
|
+
end
|
365
|
+
|
366
|
+
# Auth0::API::AuthenticationEndpoints.logout_url
|
311
367
|
context '.logout_url' do
|
312
368
|
let(:return_to) { 'http://returnto.com' }
|
369
|
+
|
313
370
|
it { expect(@instance).to respond_to(:logout_url) }
|
371
|
+
|
314
372
|
it 'is expected to return a logout url' do
|
315
373
|
expect(@instance.logout_url(return_to).to_s).to eq(
|
316
|
-
"https://#{@instance.domain}/logout?
|
374
|
+
"https://#{@instance.domain}/v2/logout?" \
|
375
|
+
'returnTo=http%3A%2F%2Freturnto.com'
|
376
|
+
)
|
377
|
+
end
|
378
|
+
|
379
|
+
it 'is expected to return a logout url with a client ID' do
|
380
|
+
expect(@instance.logout_url(return_to, include_client: true).to_s).to eq(
|
381
|
+
"https://#{@instance.domain}/v2/logout" +
|
382
|
+
"?returnTo=http%3A%2F%2Freturnto.com&client_id=#{@instance.client_id}"
|
383
|
+
)
|
384
|
+
end
|
385
|
+
|
386
|
+
it 'is expected to return a logout url with federated parameter' do
|
387
|
+
expect(@instance.logout_url(return_to, federated: true).to_s).to eq(
|
388
|
+
"https://#{@instance.domain}/v2/logout?" \
|
389
|
+
'returnTo=http%3A%2F%2Freturnto.com&federated=1'
|
317
390
|
)
|
318
391
|
end
|
319
392
|
end
|
320
393
|
|
394
|
+
# Auth0::API::AuthenticationEndpoints.samlp_url
|
321
395
|
context '.samlp_url' do
|
322
396
|
it { expect(@instance).to respond_to(:samlp_url) }
|
397
|
+
|
323
398
|
it 'is expected to get the samlp url' do
|
324
399
|
expect(@instance.samlp_url.to_s).to eq(
|
325
|
-
"https://#{@instance.domain}/samlp/#{@instance.client_id}
|
400
|
+
"https://#{@instance.domain}/samlp/#{@instance.client_id}" \
|
401
|
+
'?connection=Username-Password-Authentication'
|
326
402
|
)
|
327
403
|
end
|
404
|
+
|
328
405
|
it 'is expected to get the samlp url with fb connection' do
|
329
406
|
expect(@instance.samlp_url('facebook').to_s).to eq(
|
330
|
-
"https://#{@instance.domain}/samlp/#{@instance.client_id}
|
407
|
+
"https://#{@instance.domain}/samlp/#{@instance.client_id}" \
|
408
|
+
'?connection=facebook'
|
331
409
|
)
|
332
410
|
end
|
333
411
|
end
|
334
412
|
|
413
|
+
# Auth0::API::AuthenticationEndpoints.wsfed_url
|
335
414
|
context '.wsfed_url' do
|
336
415
|
it { expect(@instance).to respond_to(:wsfed_url) }
|
416
|
+
|
337
417
|
it 'is expected to get the wsfed url' do
|
338
418
|
expect(@instance.wsfed_url.to_s).to eq(
|
339
|
-
"https://#{@instance.domain}/wsfed/#{@instance.client_id}
|
419
|
+
"https://#{@instance.domain}/wsfed/#{@instance.client_id}" \
|
420
|
+
"?whr=#{UP_AUTH}"
|
340
421
|
)
|
341
422
|
end
|
423
|
+
|
342
424
|
it 'is expected to get the wsfed url with fb connection' do
|
343
425
|
expect(@instance.wsfed_url('facebook').to_s).to eq(
|
344
426
|
"https://#{@instance.domain}/wsfed/#{@instance.client_id}?whr=facebook"
|
345
427
|
)
|
346
428
|
end
|
429
|
+
|
430
|
+
it 'is expected to get the wsfed url with wctx' do
|
431
|
+
expect(@instance.wsfed_url(UP_AUTH, {wctx: 'wctx_test'}).to_s).to eq(
|
432
|
+
"https://#{@instance.domain}/wsfed/#{@instance.client_id}" \
|
433
|
+
"?whr=#{UP_AUTH}&wctx=wctx_test"
|
434
|
+
)
|
435
|
+
end
|
436
|
+
|
437
|
+
it 'is expected to get the wsfed url with wtrealm and wreply' do
|
438
|
+
expect(@instance.wsfed_url(
|
439
|
+
UP_AUTH,
|
440
|
+
{
|
441
|
+
wtrealm: 'wtrealm_test',
|
442
|
+
wreply: 'wreply_test'
|
443
|
+
}
|
444
|
+
).to_s).to eq(
|
445
|
+
"https://#{@instance.domain}/wsfed/?whr=#{UP_AUTH}" \
|
446
|
+
'&wtrealm=wtrealm_test&wreply=wreply_test'
|
447
|
+
)
|
448
|
+
end
|
347
449
|
end
|
348
450
|
end
|
451
|
+
# rubocop:enable Metrics/BlockLength
|
@@ -5,13 +5,28 @@ describe Auth0::Api::V2::ClientGrants do
|
|
5
5
|
dummy_instance.extend(Auth0::Api::V2::ClientGrants)
|
6
6
|
@instance = dummy_instance
|
7
7
|
end
|
8
|
+
|
8
9
|
context '.client_grants' do
|
9
10
|
it { expect(@instance).to respond_to(:client_grants) }
|
10
11
|
it { expect(@instance).to respond_to(:get_all_client_grants) }
|
11
|
-
|
12
|
-
|
12
|
+
|
13
|
+
it 'is expected to get /api/v2/client-grants/' do
|
14
|
+
expect(@instance).to receive(:get).with(
|
15
|
+
'/api/v2/client-grants',
|
16
|
+
page: nil,
|
17
|
+
per_page: nil
|
18
|
+
)
|
13
19
|
expect { @instance.client_grants }.not_to raise_error
|
14
20
|
end
|
21
|
+
|
22
|
+
it 'is expected to send get /api/v2/client-grants/ with pagination' do
|
23
|
+
expect(@instance).to receive(:get).with(
|
24
|
+
'/api/v2/client-grants',
|
25
|
+
page: 1,
|
26
|
+
per_page: 2
|
27
|
+
)
|
28
|
+
expect { @instance.client_grants(page: 1, per_page: 2) }.not_to raise_error
|
29
|
+
end
|
15
30
|
end
|
16
31
|
|
17
32
|
context '.create_client_grant' do
|
@@ -5,18 +5,62 @@ describe Auth0::Api::V2::Clients do
|
|
5
5
|
dummy_instance.extend(Auth0::Api::V2::Clients)
|
6
6
|
@instance = dummy_instance
|
7
7
|
end
|
8
|
+
|
8
9
|
context '.clients' do
|
9
10
|
it { expect(@instance).to respond_to(:clients) }
|
10
11
|
it { expect(@instance).to respond_to(:get_clients) }
|
11
|
-
|
12
|
-
|
12
|
+
|
13
|
+
it 'is expected to send get request to the Clients endpoint' do
|
14
|
+
expect(@instance).to receive(:get).with(
|
15
|
+
'/api/v2/clients',
|
16
|
+
fields: nil,
|
17
|
+
include_fields: nil,
|
18
|
+
page: nil,
|
19
|
+
per_page: nil
|
20
|
+
)
|
13
21
|
expect { @instance.clients }.not_to raise_error
|
14
22
|
end
|
15
|
-
|
16
|
-
|
17
|
-
expect
|
23
|
+
|
24
|
+
it 'is expected to send get request to the Clients endpoint with a name parameter' do
|
25
|
+
expect(@instance).to receive(:get).with(
|
26
|
+
'/api/v2/clients',
|
27
|
+
include_fields: true,
|
28
|
+
fields: 'name',
|
29
|
+
page: nil,
|
30
|
+
per_page: nil
|
31
|
+
)
|
32
|
+
expect {
|
33
|
+
@instance.clients(fields: 'name', include_fields: true)
|
34
|
+
}.not_to raise_error
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'is expected to send get request to Clients endpoint using an array of fields' do
|
38
|
+
expect(@instance).to receive(:get).with(
|
39
|
+
'/api/v2/clients',
|
40
|
+
include_fields: true,
|
41
|
+
fields: 'name,app_type',
|
42
|
+
page: nil,
|
43
|
+
per_page: nil
|
44
|
+
)
|
45
|
+
expect {
|
46
|
+
@instance.clients(fields: ['name','app_type'], include_fields: true)
|
47
|
+
}.not_to raise_error
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'is expected to send get request to Clients endpoint with pagination' do
|
51
|
+
expect(@instance).to receive(:get).with(
|
52
|
+
'/api/v2/clients',
|
53
|
+
page: 1,
|
54
|
+
per_page: 10,
|
55
|
+
fields: nil,
|
56
|
+
include_fields: nil
|
57
|
+
)
|
58
|
+
expect {
|
59
|
+
@instance.clients(page: 1, per_page: 10)
|
60
|
+
}.not_to raise_error
|
18
61
|
end
|
19
62
|
end
|
63
|
+
|
20
64
|
context '.client' do
|
21
65
|
it { expect(@instance).to respond_to(:client) }
|
22
66
|
it 'is expected to send get request to /api/v2/clients/1' do
|
@@ -38,6 +82,7 @@ describe Auth0::Api::V2::Clients do
|
|
38
82
|
end
|
39
83
|
it { expect { @instance.create_client('') }.to raise_error 'Must specify a valid client name' }
|
40
84
|
end
|
85
|
+
|
41
86
|
context '.delete_client' do
|
42
87
|
it { expect(@instance).to respond_to(:delete_client) }
|
43
88
|
it 'is expected to send delete to /api/v2/clients/1' do
|