workos 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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