workos 1.3.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/Gemfile.lock +3 -3
  4. data/lib/workos/client.rb +3 -6
  5. data/lib/workos/connection.rb +9 -1
  6. data/lib/workos/directory.rb +9 -1
  7. data/lib/workos/directory_user.rb +4 -1
  8. data/lib/workos/errors.rb +4 -0
  9. data/lib/workos/organization.rb +10 -1
  10. data/lib/workos/organizations.rb +18 -4
  11. data/lib/workos/profile.rb +7 -2
  12. data/lib/workos/types/connection_struct.rb +2 -0
  13. data/lib/workos/types/directory_struct.rb +2 -0
  14. data/lib/workos/types/directory_user_struct.rb +1 -0
  15. data/lib/workos/types/organization_struct.rb +3 -0
  16. data/lib/workos/types/profile_struct.rb +1 -0
  17. data/lib/workos/types/provider_enum.rb +1 -0
  18. data/lib/workos/types/webhook_struct.rb +14 -0
  19. data/lib/workos/types.rb +1 -0
  20. data/lib/workos/version.rb +1 -1
  21. data/lib/workos/webhook.rb +47 -0
  22. data/lib/workos/webhooks.rb +168 -0
  23. data/lib/workos.rb +3 -0
  24. data/spec/lib/workos/audit_trail_spec.rb +2 -0
  25. data/spec/lib/workos/directory_sync_spec.rb +21 -19
  26. data/spec/lib/workos/organizations_spec.rb +13 -11
  27. data/spec/lib/workos/passwordless_spec.rb +2 -0
  28. data/spec/lib/workos/portal_spec.rb +2 -0
  29. data/spec/lib/workos/sso_spec.rb +17 -13
  30. data/spec/lib/workos/webhooks_spec.rb +190 -0
  31. data/spec/spec_helper.rb +3 -0
  32. data/spec/support/fixtures/vcr_cassettes/directory_sync/get_user.yml +40 -16
  33. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_after.yml +3 -3
  34. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_before.yml +3 -3
  35. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_domain.yml +1 -1
  36. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_limit.yml +2 -2
  37. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_no_options.yml +3 -3
  38. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_search.yml +1 -1
  39. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_after.yml +128 -28
  40. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_before.yml +31 -18
  41. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_directory.yml +136 -35
  42. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_group.yml +128 -18
  43. data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_limit.yml +131 -17
  44. data/spec/support/fixtures/vcr_cassettes/organization/create.yml +28 -16
  45. data/spec/support/fixtures/vcr_cassettes/organization/get.yml +27 -16
  46. data/spec/support/fixtures/vcr_cassettes/organization/list.yml +29 -14
  47. data/spec/support/fixtures/vcr_cassettes/organization/update.yml +27 -16
  48. data/spec/support/fixtures/vcr_cassettes/sso/get_connection_with_valid_id.yml +28 -16
  49. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_after.yml +25 -15
  50. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_before.yml +28 -15
  51. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_connection_type.yml +31 -14
  52. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_domain.yml +27 -13
  53. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_limit.yml +24 -15
  54. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_no_options.yml +30 -14
  55. data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_organization_id.yml +28 -14
  56. data/spec/support/fixtures/vcr_cassettes/sso/profile.yml +1 -1
  57. data/spec/support/profile.txt +1 -1
  58. data/spec/support/shared_examples/client_spec.rb +16 -0
  59. data/spec/support/webhook_payload.txt +1 -0
  60. metadata +12 -5
  61. data/spec/support/fixtures/vcr_cassettes/organization/update_invalid.yml +0 -73
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ # typed: false
3
+
4
+ RSpec.shared_examples 'client' do
5
+ subject(:client) { described_class.client }
6
+
7
+ it { is_expected.to be_kind_of(Net::HTTP) }
8
+
9
+ it 'assigns use_ssl' do
10
+ expect(client.use_ssl?).to be true
11
+ end
12
+
13
+ it 'returns new instance' do
14
+ expect(described_class.client.object_id).to_not eq described_class.client.object_id
15
+ end
16
+ end
@@ -0,0 +1 @@
1
+ {"id": "wh_123","data":{"id":"directory_user_01FAEAJCR3ZBZ30D8BD1924TVG","state":"active","emails":[{"type":"work","value":"blair@foo-corp.com","primary":true}],"idp_id":"00u1e8mutl6wlH3lL4x7","object":"directory_user","username":"blair@foo-corp.com","last_name":"Lunceford","first_name":"Blair","directory_id":"directory_01F9M7F68PZP8QXP8G7X5QRHS7","raw_attributes":{"name":{"givenName":"Blair","familyName":"Lunceford","middleName":"Elizabeth","honorificPrefix":"Ms."},"title":"Developer Success Engineer","active":true,"emails":[{"type":"work","value":"blair@foo-corp.com","primary":true}],"groups":[],"locale":"en-US","schemas":["urn:ietf:params:scim:schemas:core:2.0:User","urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],"userName":"blair@foo-corp.com","addresses":[{"region":"CO","primary":true,"locality":"Steamboat Springs","postalCode":"80487"}],"externalId":"00u1e8mutl6wlH3lL4x7","displayName":"Blair Lunceford","urn:ietf:params:scim:schemas:extension:enterprise:2.0:User":{"manager":{"value":"2","displayName":"Kathleen Chung"},"division":"Engineering","department":"Customer Success"}}},"event":"dsync.user.created"}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workos
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - WorkOS
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-08 00:00:00.000000000 Z
11
+ date: 2021-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime
@@ -234,7 +234,10 @@ files:
234
234
  - lib/workos/types/passwordless_session_struct.rb
235
235
  - lib/workos/types/profile_struct.rb
236
236
  - lib/workos/types/provider_enum.rb
237
+ - lib/workos/types/webhook_struct.rb
237
238
  - lib/workos/version.rb
239
+ - lib/workos/webhook.rb
240
+ - lib/workos/webhooks.rb
238
241
  - sorbet/config
239
242
  - sorbet/rbi/gems/addressable.rbi
240
243
  - sorbet/rbi/gems/ast.rbi
@@ -276,6 +279,7 @@ files:
276
279
  - spec/lib/workos/passwordless_spec.rb
277
280
  - spec/lib/workos/portal_spec.rb
278
281
  - spec/lib/workos/sso_spec.rb
282
+ - spec/lib/workos/webhooks_spec.rb
279
283
  - spec/spec_helper.rb
280
284
  - spec/support/fixtures/vcr_cassettes/audit_trail/create_event.yml
281
285
  - spec/support/fixtures/vcr_cassettes/audit_trail/create_event_custom_idempotency_key.yml
@@ -315,7 +319,6 @@ files:
315
319
  - spec/support/fixtures/vcr_cassettes/organization/get_invalid.yml
316
320
  - spec/support/fixtures/vcr_cassettes/organization/list.yml
317
321
  - spec/support/fixtures/vcr_cassettes/organization/update.yml
318
- - spec/support/fixtures/vcr_cassettes/organization/update_invalid.yml
319
322
  - spec/support/fixtures/vcr_cassettes/passwordless/create_session.yml
320
323
  - spec/support/fixtures/vcr_cassettes/passwordless/create_session_invalid.yml
321
324
  - spec/support/fixtures/vcr_cassettes/passwordless/send_session.yml
@@ -336,6 +339,8 @@ files:
336
339
  - spec/support/fixtures/vcr_cassettes/sso/list_connections/with_organization_id.yml
337
340
  - spec/support/fixtures/vcr_cassettes/sso/profile.yml
338
341
  - spec/support/profile.txt
342
+ - spec/support/shared_examples/client_spec.rb
343
+ - spec/support/webhook_payload.txt
339
344
  - workos.gemspec
340
345
  homepage: https://github.com/workos-inc/workos-ruby
341
346
  licenses:
@@ -357,7 +362,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
357
362
  - !ruby/object:Gem::Version
358
363
  version: '0'
359
364
  requirements: []
360
- rubygems_version: 3.2.19
365
+ rubygems_version: 3.2.27
361
366
  signing_key:
362
367
  specification_version: 4
363
368
  summary: API client for WorkOS
@@ -369,6 +374,7 @@ test_files:
369
374
  - spec/lib/workos/passwordless_spec.rb
370
375
  - spec/lib/workos/portal_spec.rb
371
376
  - spec/lib/workos/sso_spec.rb
377
+ - spec/lib/workos/webhooks_spec.rb
372
378
  - spec/spec_helper.rb
373
379
  - spec/support/fixtures/vcr_cassettes/audit_trail/create_event.yml
374
380
  - spec/support/fixtures/vcr_cassettes/audit_trail/create_event_custom_idempotency_key.yml
@@ -408,7 +414,6 @@ test_files:
408
414
  - spec/support/fixtures/vcr_cassettes/organization/get_invalid.yml
409
415
  - spec/support/fixtures/vcr_cassettes/organization/list.yml
410
416
  - spec/support/fixtures/vcr_cassettes/organization/update.yml
411
- - spec/support/fixtures/vcr_cassettes/organization/update_invalid.yml
412
417
  - spec/support/fixtures/vcr_cassettes/passwordless/create_session.yml
413
418
  - spec/support/fixtures/vcr_cassettes/passwordless/create_session_invalid.yml
414
419
  - spec/support/fixtures/vcr_cassettes/passwordless/send_session.yml
@@ -429,3 +434,5 @@ test_files:
429
434
  - spec/support/fixtures/vcr_cassettes/sso/list_connections/with_organization_id.yml
430
435
  - spec/support/fixtures/vcr_cassettes/sso/profile.yml
431
436
  - spec/support/profile.txt
437
+ - spec/support/shared_examples/client_spec.rb
438
+ - spec/support/webhook_payload.txt
@@ -1,73 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: put
5
- uri: https://api.workos.com/organizations/org_01F29YJ068E52HGEB8ZQGC9MJG
6
- body:
7
- encoding: UTF-8
8
- string: '{"domains":["example.com"],"name":"Test Organization 2"}'
9
- headers:
10
- Content-Type:
11
- - application/json
12
- Accept-Encoding:
13
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
- Accept:
15
- - "*/*"
16
- User-Agent:
17
- - WorkOS; ruby/3.0.1; x86_64-darwin19; v0.11.1
18
- Authorization:
19
- - Bearer <API_KEY>
20
- response:
21
- status:
22
- code: 200
23
- message: OK
24
- headers:
25
- Server:
26
- - Cowboy
27
- Connection:
28
- - keep-alive
29
- Vary:
30
- - Origin, Accept-Encoding
31
- Access-Control-Allow-Credentials:
32
- - 'true'
33
- Content-Security-Policy:
34
- - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
35
- https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
36
- ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
37
- X-Dns-Prefetch-Control:
38
- - 'off'
39
- Expect-Ct:
40
- - max-age=0
41
- X-Frame-Options:
42
- - SAMEORIGIN
43
- Strict-Transport-Security:
44
- - max-age=15552000; includeSubDomains
45
- X-Download-Options:
46
- - noopen
47
- X-Content-Type-Options:
48
- - nosniff
49
- X-Permitted-Cross-Domain-Policies:
50
- - none
51
- Referrer-Policy:
52
- - no-referrer
53
- X-Xss-Protection:
54
- - '0'
55
- X-Request-Id:
56
- - 6ba2cbf9-76e3-4a6a-8ebe-d25edb366ed0
57
- Content-Type:
58
- - application/json; charset=utf-8
59
- Content-Length:
60
- - '205'
61
- Etag:
62
- - W/"cd-mlRMlyyz/LtzInRhAghs1B+BT4s"
63
- Date:
64
- - Wed, 05 May 2021 22:14:10 GMT
65
- Via:
66
- - 1.1 vegur
67
- body:
68
- encoding: UTF-8
69
- string: '{"object":"organization","id":"org_01F29YJ068E52HGEB8ZQGC9MJG","name":"Test
70
- Organization 2","domains":[{"object":"organization_domain","id":"org_domain_01F4Z9GY3089GV4SENXWZ9RBX1","domain":"example.com"}]}'
71
- http_version:
72
- recorded_at: Wed, 05 May 2021 22:14:10 GMT
73
- recorded_with: VCR 5.0.0