workos 0.0.1

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 (83) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +49 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +10 -0
  5. data/.ruby-version +1 -0
  6. data/.semaphore/rubygems.yml +19 -0
  7. data/.semaphore/semaphore.yml +63 -0
  8. data/CODEOWNERS +1 -0
  9. data/Gemfile +5 -0
  10. data/Gemfile.lock +84 -0
  11. data/LICENSE +21 -0
  12. data/README.md +21 -0
  13. data/bin/build +3 -0
  14. data/bin/console +3 -0
  15. data/bin/docs +5 -0
  16. data/bin/publish +3 -0
  17. data/codecov.yml +11 -0
  18. data/docs/WorkOS.html +328 -0
  19. data/docs/WorkOS/Base.html +281 -0
  20. data/docs/WorkOS/Profile.html +725 -0
  21. data/docs/WorkOS/RequestError.html +135 -0
  22. data/docs/WorkOS/SSO.html +511 -0
  23. data/docs/WorkOS/Types.html +129 -0
  24. data/docs/WorkOS/Types/ProfileStruct.html +135 -0
  25. data/docs/class_list.html +51 -0
  26. data/docs/css/common.css +1 -0
  27. data/docs/css/full_list.css +58 -0
  28. data/docs/css/style.css +496 -0
  29. data/docs/file.README.html +92 -0
  30. data/docs/file_list.html +56 -0
  31. data/docs/frames.html +17 -0
  32. data/docs/index.html +189 -0
  33. data/docs/js/app.js +303 -0
  34. data/docs/js/full_list.js +216 -0
  35. data/docs/js/jquery.js +4 -0
  36. data/docs/method_list.html +171 -0
  37. data/docs/top-level-namespace.html +110 -0
  38. data/lib/workos.rb +36 -0
  39. data/lib/workos/base.rb +18 -0
  40. data/lib/workos/profile.rb +53 -0
  41. data/lib/workos/request_error.rb +5 -0
  42. data/lib/workos/sso.rb +142 -0
  43. data/lib/workos/types.rb +11 -0
  44. data/lib/workos/types/profile_struct.rb +18 -0
  45. data/lib/workos/version.rb +7 -0
  46. data/sorbet/config +2 -0
  47. data/sorbet/rbi/gems/addressable.rbi +198 -0
  48. data/sorbet/rbi/gems/ast.rbi +47 -0
  49. data/sorbet/rbi/gems/codecov.rbi +19 -0
  50. data/sorbet/rbi/gems/crack.rbi +47 -0
  51. data/sorbet/rbi/gems/docile.rbi +31 -0
  52. data/sorbet/rbi/gems/hashdiff.rbi +65 -0
  53. data/sorbet/rbi/gems/jaro_winkler.rbi +14 -0
  54. data/sorbet/rbi/gems/parallel.rbi +81 -0
  55. data/sorbet/rbi/gems/parser.rbi +856 -0
  56. data/sorbet/rbi/gems/public_suffix.rbi +102 -0
  57. data/sorbet/rbi/gems/rack.rbi +103 -0
  58. data/sorbet/rbi/gems/rainbow.rbi +117 -0
  59. data/sorbet/rbi/gems/rake.rbi +632 -0
  60. data/sorbet/rbi/gems/rspec-core.rbi +1661 -0
  61. data/sorbet/rbi/gems/rspec-expectations.rbi +388 -0
  62. data/sorbet/rbi/gems/rspec-mocks.rbi +823 -0
  63. data/sorbet/rbi/gems/rspec-support.rbi +266 -0
  64. data/sorbet/rbi/gems/rspec.rbi +14 -0
  65. data/sorbet/rbi/gems/rubocop.rbi +7083 -0
  66. data/sorbet/rbi/gems/ruby-progressbar.rbi +304 -0
  67. data/sorbet/rbi/gems/simplecov-html.rbi +30 -0
  68. data/sorbet/rbi/gems/simplecov.rbi +225 -0
  69. data/sorbet/rbi/gems/unicode-display_width.rbi +16 -0
  70. data/sorbet/rbi/gems/webmock.rbi +526 -0
  71. data/sorbet/rbi/hidden-definitions/errors.txt +6061 -0
  72. data/sorbet/rbi/hidden-definitions/hidden.rbi +10087 -0
  73. data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +8684 -0
  74. data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +254 -0
  75. data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +4222 -0
  76. data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +111 -0
  77. data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +543 -0
  78. data/sorbet/rbi/todo.rbi +7 -0
  79. data/spec/lib/workos/sso_spec.rb +95 -0
  80. data/spec/spec_helper.rb +32 -0
  81. data/spec/support/profile.txt +1 -0
  82. data/workos.gemspec +32 -0
  83. metadata +261 -0
@@ -0,0 +1,7 @@
1
+ # This file is autogenerated. Do not edit it by hand. Regenerate it with:
2
+ # srb rbi todo
3
+
4
+ # typed: strong
5
+ module T::Private::Methods::MethodHooks; end
6
+ module T::Private::Methods::SingletonMethodHooks; end
7
+ module T::Private::Methods::SingletonMethodHooks; end
@@ -0,0 +1,95 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ require 'securerandom'
5
+
6
+ describe WorkOS::SSO do
7
+ describe '.authorization_url' do
8
+ let(:args) do
9
+ {
10
+ domain: 'foo.com',
11
+ project_id: 'workos-proj-123',
12
+ redirect_uri: 'foo.com/auth/callback',
13
+ state: {
14
+ next_page: '/dashboard/edit'
15
+ }
16
+ }
17
+ end
18
+
19
+ it 'returns a valid URL' do
20
+ authorization_url = described_class.authorization_url(**args)
21
+
22
+ expect(URI.parse(authorization_url)).to be_a URI
23
+ end
24
+
25
+ it 'returns the expected hostname' do
26
+ authorization_url = described_class.authorization_url(**args)
27
+
28
+ expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
29
+ end
30
+
31
+ it 'returns the expected query string' do
32
+ authorization_url = described_class.authorization_url(**args)
33
+
34
+ expect(URI.parse(authorization_url).query).to eq(
35
+ 'domain=foo.com&client_id=workos-proj-123&redirect_uri=' \
36
+ 'foo.com%2Fauth%2Fcallback&response_type=code&' \
37
+ 'state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2Fedit%22%7D',
38
+ )
39
+ end
40
+ end
41
+
42
+ describe '.profile' do
43
+ before do
44
+ WorkOS.key = 'api-key'
45
+ end
46
+
47
+ let(:args) do
48
+ {
49
+ code: SecureRandom.hex(10),
50
+ project_id: 'workos-proj-123',
51
+ redirect_uri: 'foo.com/auth/callback'
52
+ }
53
+ end
54
+
55
+ let(:query) do
56
+ {
57
+ client_id: args[:project_id],
58
+ client_secret: WorkOS.key,
59
+ code: args[:code],
60
+ grant_type: 'authorization_code',
61
+ redirect_uri: args[:redirect_uri]
62
+ }
63
+ end
64
+
65
+ context 'with a successful response' do
66
+ let(:body) { File.read("#{SPEC_ROOT}/support/profile.txt") }
67
+
68
+ before do
69
+ stub_request(:post, 'https://api.workos.com/sso/token').
70
+ with(query: query).
71
+ to_return(status: 200, body: body)
72
+ end
73
+
74
+ it 'returns a WorkOS::Profile' do
75
+ profile = described_class.profile(**args)
76
+
77
+ expect(profile).to be_a(WorkOS::Profile)
78
+ end
79
+ end
80
+
81
+ context 'with an unprocessable request' do
82
+ before do
83
+ stub_request(:post, 'https://api.workos.com/sso/token').
84
+ with(query: query).
85
+ to_return(status: 422, body: '{"message": "some error message"}')
86
+ end
87
+
88
+ it 'rasies an exception?' do
89
+ expect do
90
+ described_class.profile(**args)
91
+ end.to raise_error(WorkOS::RequestError, 'some error message')
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ # typed: false
3
+
4
+ require 'simplecov'
5
+ SimpleCov.start
6
+
7
+ if ENV['CI'] == 'true'
8
+ require 'codecov'
9
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
10
+ end
11
+
12
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
13
+ $LOAD_PATH << File.join(File.dirname(__FILE__))
14
+
15
+ require 'rubygems'
16
+ require 'rspec'
17
+ require 'webmock/rspec'
18
+ require 'workos'
19
+
20
+ SPEC_ROOT = File.dirname __FILE__
21
+
22
+ RSpec.configure do |config|
23
+ config.expect_with :rspec do |expectations|
24
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
25
+ end
26
+
27
+ config.mock_with :rspec do |mocks|
28
+ mocks.verify_partial_doubles = true
29
+ end
30
+
31
+ config.shared_context_metadata_behavior = :apply_to_host_groups
32
+ end
@@ -0,0 +1 @@
1
+ {"profile":{"object":"profile","id":"prof_01DRA1XNSJDZ19A31F183ECQW5","email":"demo@workos-okta.com","first_name":"WorkOS","connection_type":"OktaSAML","last_name":"Demo","idp_id":"00u1klkowm8EGah2H357"},"access_token":"01DVX6QBS3EG6FHY2ESAA5Q65X"}
data/workos.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'workos/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'workos'
9
+ spec.version = WorkOS::VERSION
10
+ spec.authors = ['WorkOS', 'Sam Bauch', 'Mark Tran']
11
+ spec.email = ['team@workos.com', 'sam@workos.com', 'mark@workos.com']
12
+ spec.description = 'API client for WorkOS'
13
+ spec.summary = 'API client for WorkOS'
14
+ spec.homepage = 'https://github.com/workos/workos-ruby'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_dependency 'rack', '~> 1.6.4'
23
+ spec.add_dependency 'sorbet-runtime'
24
+
25
+ spec.add_development_dependency 'bundler', '~> 2.0.1'
26
+ spec.add_development_dependency 'codecov', '~> 0.1.16'
27
+ spec.add_development_dependency 'rake'
28
+ spec.add_development_dependency 'rspec', '~> 3.9.0'
29
+ spec.add_development_dependency 'rubocop', '~> 0.77'
30
+ spec.add_development_dependency 'sorbet'
31
+ spec.add_development_dependency 'webmock'
32
+ end
metadata ADDED
@@ -0,0 +1,261 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: workos
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - WorkOS
8
+ - Sam Bauch
9
+ - Mark Tran
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2019-12-12 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: 1.6.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: 1.6.4
29
+ - !ruby/object:Gem::Dependency
30
+ name: sorbet-runtime
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: bundler
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 2.0.1
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: 2.0.1
57
+ - !ruby/object:Gem::Dependency
58
+ name: codecov
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: 0.1.16
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 0.1.16
71
+ - !ruby/object:Gem::Dependency
72
+ name: rake
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: rspec
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: 3.9.0
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: 3.9.0
99
+ - !ruby/object:Gem::Dependency
100
+ name: rubocop
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '0.77'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '0.77'
113
+ - !ruby/object:Gem::Dependency
114
+ name: sorbet
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: webmock
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ description: API client for WorkOS
142
+ email:
143
+ - team@workos.com
144
+ - sam@workos.com
145
+ - mark@workos.com
146
+ executables:
147
+ - build
148
+ - console
149
+ - docs
150
+ - publish
151
+ extensions: []
152
+ extra_rdoc_files: []
153
+ files:
154
+ - ".gitignore"
155
+ - ".rspec"
156
+ - ".rubocop.yml"
157
+ - ".ruby-version"
158
+ - ".semaphore/rubygems.yml"
159
+ - ".semaphore/semaphore.yml"
160
+ - CODEOWNERS
161
+ - Gemfile
162
+ - Gemfile.lock
163
+ - LICENSE
164
+ - README.md
165
+ - bin/build
166
+ - bin/console
167
+ - bin/docs
168
+ - bin/publish
169
+ - codecov.yml
170
+ - docs/WorkOS.html
171
+ - docs/WorkOS/Base.html
172
+ - docs/WorkOS/Profile.html
173
+ - docs/WorkOS/RequestError.html
174
+ - docs/WorkOS/SSO.html
175
+ - docs/WorkOS/Types.html
176
+ - docs/WorkOS/Types/ProfileStruct.html
177
+ - docs/class_list.html
178
+ - docs/css/common.css
179
+ - docs/css/full_list.css
180
+ - docs/css/style.css
181
+ - docs/file.README.html
182
+ - docs/file_list.html
183
+ - docs/frames.html
184
+ - docs/index.html
185
+ - docs/js/app.js
186
+ - docs/js/full_list.js
187
+ - docs/js/jquery.js
188
+ - docs/method_list.html
189
+ - docs/top-level-namespace.html
190
+ - lib/workos.rb
191
+ - lib/workos/base.rb
192
+ - lib/workos/profile.rb
193
+ - lib/workos/request_error.rb
194
+ - lib/workos/sso.rb
195
+ - lib/workos/types.rb
196
+ - lib/workos/types/profile_struct.rb
197
+ - lib/workos/version.rb
198
+ - sorbet/config
199
+ - sorbet/rbi/gems/addressable.rbi
200
+ - sorbet/rbi/gems/ast.rbi
201
+ - sorbet/rbi/gems/codecov.rbi
202
+ - sorbet/rbi/gems/crack.rbi
203
+ - sorbet/rbi/gems/docile.rbi
204
+ - sorbet/rbi/gems/hashdiff.rbi
205
+ - sorbet/rbi/gems/jaro_winkler.rbi
206
+ - sorbet/rbi/gems/parallel.rbi
207
+ - sorbet/rbi/gems/parser.rbi
208
+ - sorbet/rbi/gems/public_suffix.rbi
209
+ - sorbet/rbi/gems/rack.rbi
210
+ - sorbet/rbi/gems/rainbow.rbi
211
+ - sorbet/rbi/gems/rake.rbi
212
+ - sorbet/rbi/gems/rspec-core.rbi
213
+ - sorbet/rbi/gems/rspec-expectations.rbi
214
+ - sorbet/rbi/gems/rspec-mocks.rbi
215
+ - sorbet/rbi/gems/rspec-support.rbi
216
+ - sorbet/rbi/gems/rspec.rbi
217
+ - sorbet/rbi/gems/rubocop.rbi
218
+ - sorbet/rbi/gems/ruby-progressbar.rbi
219
+ - sorbet/rbi/gems/simplecov-html.rbi
220
+ - sorbet/rbi/gems/simplecov.rbi
221
+ - sorbet/rbi/gems/unicode-display_width.rbi
222
+ - sorbet/rbi/gems/webmock.rbi
223
+ - sorbet/rbi/hidden-definitions/errors.txt
224
+ - sorbet/rbi/hidden-definitions/hidden.rbi
225
+ - sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi
226
+ - sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi
227
+ - sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi
228
+ - sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi
229
+ - sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi
230
+ - sorbet/rbi/todo.rbi
231
+ - spec/lib/workos/sso_spec.rb
232
+ - spec/spec_helper.rb
233
+ - spec/support/profile.txt
234
+ - workos.gemspec
235
+ homepage: https://github.com/workos/workos-ruby
236
+ licenses:
237
+ - MIT
238
+ metadata: {}
239
+ post_install_message:
240
+ rdoc_options: []
241
+ require_paths:
242
+ - lib
243
+ required_ruby_version: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
248
+ required_rubygems_version: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ requirements: []
254
+ rubygems_version: 3.0.6
255
+ signing_key:
256
+ specification_version: 4
257
+ summary: API client for WorkOS
258
+ test_files:
259
+ - spec/lib/workos/sso_spec.rb
260
+ - spec/spec_helper.rb
261
+ - spec/support/profile.txt