ruby-gems-publish-test 0.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.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +233 -0
  3. data/lib/ruby_gems_publish_test/async/services/pet.rb +64 -0
  4. data/lib/ruby_gems_publish_test/async/services/store.rb +44 -0
  5. data/lib/ruby_gems_publish_test/async/services/user.rb +59 -0
  6. data/lib/ruby_gems_publish_test/async_client.rb +54 -0
  7. data/lib/ruby_gems_publish_test/client.rb +63 -0
  8. data/lib/ruby_gems_publish_test/config.rb +54 -0
  9. data/lib/ruby_gems_publish_test/environment.rb +7 -0
  10. data/lib/ruby_gems_publish_test/error.rb +32 -0
  11. data/lib/ruby_gems_publish_test/http/auth.rb +19 -0
  12. data/lib/ruby_gems_publish_test/http/connection.rb +321 -0
  13. data/lib/ruby_gems_publish_test/http/hooks.rb +17 -0
  14. data/lib/ruby_gems_publish_test/http/response.rb +35 -0
  15. data/lib/ruby_gems_publish_test/models/api_response.rb +70 -0
  16. data/lib/ruby_gems_publish_test/models/category.rb +60 -0
  17. data/lib/ruby_gems_publish_test/models/find_pets_by_status_status.rb +12 -0
  18. data/lib/ruby_gems_publish_test/models/open_model.rb +30 -0
  19. data/lib/ruby_gems_publish_test/models/order.rb +104 -0
  20. data/lib/ruby_gems_publish_test/models/order_status.rb +12 -0
  21. data/lib/ruby_gems_publish_test/models/pet.rb +107 -0
  22. data/lib/ruby_gems_publish_test/models/pet_status.rb +12 -0
  23. data/lib/ruby_gems_publish_test/models/serializable.rb +63 -0
  24. data/lib/ruby_gems_publish_test/models/tag.rb +60 -0
  25. data/lib/ruby_gems_publish_test/models/union_type.rb +12 -0
  26. data/lib/ruby_gems_publish_test/models/user.rb +121 -0
  27. data/lib/ruby_gems_publish_test/serializers/form_serializer.rb +41 -0
  28. data/lib/ruby_gems_publish_test/serializers/json_serializer.rb +41 -0
  29. data/lib/ruby_gems_publish_test/serializers/xml_serializer.rb +56 -0
  30. data/lib/ruby_gems_publish_test/services/pet.rb +151 -0
  31. data/lib/ruby_gems_publish_test/services/store.rb +79 -0
  32. data/lib/ruby_gems_publish_test/services/user.rb +114 -0
  33. data/lib/ruby_gems_publish_test/validator.rb +42 -0
  34. data/lib/ruby_gems_publish_test/version.rb +5 -0
  35. data/lib/ruby_gems_publish_test.rb +37 -0
  36. metadata +196 -0
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyGemsPublishTest
4
+ class Store
5
+ NO_OVERRIDE = Object.new.freeze
6
+ private_constant :NO_OVERRIDE
7
+
8
+ def initialize(connection, config = nil)
9
+ @connection = connection
10
+ @config = config
11
+ end
12
+
13
+ # Returns pet inventories by status.
14
+ def get_inventory(config: NO_OVERRIDE)
15
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
16
+ conn = resolve_connection(config)
17
+ response = conn.get('/store/inventory', {}, headers)
18
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
19
+ response.body
20
+ end
21
+
22
+ # Place an order for a pet.
23
+ def place_order(body: nil, config: NO_OVERRIDE)
24
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
25
+ body.validate! if body.respond_to?(:validate!)
26
+ conn = resolve_connection(config)
27
+ response = conn.post('/store/order', body, headers: headers)
28
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
29
+ result = ::RubyGemsPublishTest::Models::Order.from_hash(response.body)
30
+ result&.validate! if resolve_config(config)&.enable_response_validation
31
+ result
32
+ end
33
+
34
+ # Find purchase order by ID.
35
+ def get_order_by_id(order_id:, config: NO_OVERRIDE)
36
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
37
+ conn = resolve_connection(config)
38
+ response = conn.get("/store/order/#{order_id}", {}, headers)
39
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
40
+ result = ::RubyGemsPublishTest::Models::Order.from_hash(response.body)
41
+ result&.validate! if resolve_config(config)&.enable_response_validation
42
+ result
43
+ end
44
+
45
+ # Delete purchase order by identifier.
46
+ def delete_order(order_id:, config: NO_OVERRIDE)
47
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
48
+ conn = resolve_connection(config)
49
+ response = conn.delete("/store/order/#{order_id}", headers)
50
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
51
+ response.body
52
+ end
53
+
54
+ private
55
+
56
+ def config_headers(override_config)
57
+ cfg = override_config.equal?(NO_OVERRIDE) ? @config : override_config
58
+ return {} unless cfg
59
+
60
+ HTTP::Auth.new(token: cfg.token, api_key: cfg.api_key).headers
61
+ end
62
+
63
+ def resolve_connection(override_config)
64
+ cfg = override_config.equal?(NO_OVERRIDE) ? @config : override_config
65
+ return @connection unless cfg&.base_url || cfg&.timeout || cfg&.retry_config
66
+
67
+ HTTP::Connection.new(
68
+ cfg.base_url || @connection.base_url,
69
+ @connection.default_headers,
70
+ timeout: cfg.timeout || @connection.timeout,
71
+ retry_config: cfg.retry_config || @connection.retry_config,
72
+ )
73
+ end
74
+
75
+ def resolve_config(override_config)
76
+ override_config.equal?(NO_OVERRIDE) ? @config : override_config
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyGemsPublishTest
4
+ class User
5
+ NO_OVERRIDE = Object.new.freeze
6
+ private_constant :NO_OVERRIDE
7
+
8
+ def initialize(connection, config = nil)
9
+ @connection = connection
10
+ @config = config
11
+ end
12
+
13
+ # Create user.
14
+ def create_user(body: nil, config: NO_OVERRIDE)
15
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
16
+ body.validate! if body.respond_to?(:validate!)
17
+ conn = resolve_connection(config)
18
+ response = conn.post('/user', body, headers: headers)
19
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
20
+ result = ::RubyGemsPublishTest::Models::User.from_hash(response.body)
21
+ result&.validate! if resolve_config(config)&.enable_response_validation
22
+ result
23
+ end
24
+
25
+ # Creates list of users with given input array.
26
+ def create_users_with_list_input(body: nil, config: NO_OVERRIDE)
27
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
28
+ conn = resolve_connection(config)
29
+ response = conn.post('/user/createWithList', body, headers: headers)
30
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
31
+ result = ::RubyGemsPublishTest::Models::User.from_hash(response.body)
32
+ result&.validate! if resolve_config(config)&.enable_response_validation
33
+ result
34
+ end
35
+
36
+ # Logs user into the system.
37
+ def login_user(username: nil, password: nil, config: NO_OVERRIDE)
38
+ query_params = {
39
+ 'username' => username,
40
+ 'password' => password,
41
+ }.compact
42
+ query_params = query_params.merge(resolve_config(config)&.additional_query_parameters || {})
43
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
44
+ conn = resolve_connection(config)
45
+ response = conn.get('/user/login', query_params, headers)
46
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
47
+ response.body
48
+ end
49
+
50
+ # Logs out current logged in user session.
51
+ def logout_user(config: NO_OVERRIDE)
52
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
53
+ conn = resolve_connection(config)
54
+ response = conn.get('/user/logout', {}, headers)
55
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
56
+ response.body
57
+ end
58
+
59
+ # Get user by user name.
60
+ def get_user_by_name(username:, config: NO_OVERRIDE)
61
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
62
+ conn = resolve_connection(config)
63
+ response = conn.get("/user/#{username}", {}, headers)
64
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
65
+ result = ::RubyGemsPublishTest::Models::User.from_hash(response.body)
66
+ result&.validate! if resolve_config(config)&.enable_response_validation
67
+ result
68
+ end
69
+
70
+ # Update user resource.
71
+ def update_user(username:, body: nil, config: NO_OVERRIDE)
72
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
73
+ body.validate! if body.respond_to?(:validate!)
74
+ conn = resolve_connection(config)
75
+ response = conn.put("/user/#{username}", body, headers: headers)
76
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
77
+ response.body
78
+ end
79
+
80
+ # Delete user resource.
81
+ def delete_user(username:, config: NO_OVERRIDE)
82
+ headers = config_headers(config).merge(resolve_config(config)&.additional_headers || {})
83
+ conn = resolve_connection(config)
84
+ response = conn.delete("/user/#{username}", headers)
85
+ return response if !config.equal?(NO_OVERRIDE) && config&.return_raw
86
+ response.body
87
+ end
88
+
89
+ private
90
+
91
+ def config_headers(override_config)
92
+ cfg = override_config.equal?(NO_OVERRIDE) ? @config : override_config
93
+ return {} unless cfg
94
+
95
+ HTTP::Auth.new(token: cfg.token, api_key: cfg.api_key).headers
96
+ end
97
+
98
+ def resolve_connection(override_config)
99
+ cfg = override_config.equal?(NO_OVERRIDE) ? @config : override_config
100
+ return @connection unless cfg&.base_url || cfg&.timeout || cfg&.retry_config
101
+
102
+ HTTP::Connection.new(
103
+ cfg.base_url || @connection.base_url,
104
+ @connection.default_headers,
105
+ timeout: cfg.timeout || @connection.timeout,
106
+ retry_config: cfg.retry_config || @connection.retry_config,
107
+ )
108
+ end
109
+
110
+ def resolve_config(override_config)
111
+ override_config.equal?(NO_OVERRIDE) ? @config : override_config
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyGemsPublishTest
4
+ module Validator
5
+ class << self
6
+ def validate_string!(value, field, min_length: nil, max_length: nil, pattern: nil)
7
+ return if value.nil?
8
+
9
+ raise ValidationError.new(field, "must be at least #{min_length} characters long") if min_length && value.to_s.length < min_length
10
+ raise ValidationError.new(field, "must be at most #{max_length} characters long") if max_length && value.to_s.length > max_length
11
+ return unless pattern && !value.to_s.match?(pattern)
12
+
13
+ raise ValidationError.new(field, "must match pattern #{pattern.source}")
14
+ end
15
+
16
+ def validate_number!(value, field, min: nil, min_exclusive: nil, max: nil, max_exclusive: nil,
17
+ multiple_of: nil)
18
+ return if value.nil?
19
+
20
+ raise ValidationError.new(field, "must be >= #{min}") if min && value < min
21
+ raise ValidationError.new(field, "must be > #{min_exclusive}") if min_exclusive && value <= min_exclusive
22
+ raise ValidationError.new(field, "must be <= #{max}") if max && value > max
23
+ raise ValidationError.new(field, "must be < #{max_exclusive}") if max_exclusive && value >= max_exclusive
24
+ return unless multiple_of && (value % multiple_of).abs > Float::EPSILON * multiple_of.abs
25
+
26
+ raise ValidationError.new(field, "must be a multiple of #{multiple_of}")
27
+ end
28
+
29
+ alias validate_integer! validate_number!
30
+
31
+ def validate_array!(value, field, min_items: nil, max_items: nil, unique_items: false)
32
+ return if value.nil?
33
+
34
+ raise ValidationError.new(field, "must have at least #{min_items} items") if min_items && value.length < min_items
35
+ raise ValidationError.new(field, "must have at most #{max_items} items") if max_items && value.length > max_items
36
+ return unless unique_items && value.length != value.uniq.length
37
+
38
+ raise ValidationError.new(field, 'must contain unique items')
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyGemsPublishTest
4
+ VERSION = '0.1.0'
5
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'ruby_gems_publish_test/version'
4
+ require_relative 'ruby_gems_publish_test/error'
5
+ require_relative 'ruby_gems_publish_test/models/serializable'
6
+ require_relative 'ruby_gems_publish_test/models/union_type'
7
+ require_relative 'ruby_gems_publish_test/models/open_model'
8
+ require_relative 'ruby_gems_publish_test/serializers/json_serializer'
9
+ require_relative 'ruby_gems_publish_test/serializers/xml_serializer'
10
+ require_relative 'ruby_gems_publish_test/serializers/form_serializer'
11
+ require_relative 'ruby_gems_publish_test/http/hooks'
12
+ require_relative 'ruby_gems_publish_test/http/connection'
13
+ require_relative 'ruby_gems_publish_test/http/response'
14
+ require_relative 'ruby_gems_publish_test/http/auth'
15
+ require_relative 'ruby_gems_publish_test/environment'
16
+ require_relative 'ruby_gems_publish_test/config'
17
+ require_relative 'ruby_gems_publish_test/validator'
18
+ require_relative 'ruby_gems_publish_test/models/pet'
19
+ require_relative 'ruby_gems_publish_test/models/category'
20
+ require_relative 'ruby_gems_publish_test/models/tag'
21
+ require_relative 'ruby_gems_publish_test/models/pet_status'
22
+ require_relative 'ruby_gems_publish_test/models/find_pets_by_status_status'
23
+ require_relative 'ruby_gems_publish_test/models/api_response'
24
+ require_relative 'ruby_gems_publish_test/models/order'
25
+ require_relative 'ruby_gems_publish_test/models/order_status'
26
+ require_relative 'ruby_gems_publish_test/models/user'
27
+ require_relative 'ruby_gems_publish_test/services/pet'
28
+ require_relative 'ruby_gems_publish_test/services/store'
29
+ require_relative 'ruby_gems_publish_test/services/user'
30
+ require_relative 'ruby_gems_publish_test/client'
31
+ require_relative 'ruby_gems_publish_test/async/services/pet'
32
+ require_relative 'ruby_gems_publish_test/async/services/store'
33
+ require_relative 'ruby_gems_publish_test/async/services/user'
34
+ require_relative 'ruby_gems_publish_test/async_client'
35
+
36
+ module RubyGemsPublishTest
37
+ end
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-gems-publish-test
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Postman SDK Generator
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-09-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rexml
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.16'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.16'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '13.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.85.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.85.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-ast
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.49.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.49.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-minitest
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.39.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.39.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-performance
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.26.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.26.1
125
+ description:
126
+ email:
127
+ - apiteam@swagger.io
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - README.md
133
+ - lib/ruby_gems_publish_test.rb
134
+ - lib/ruby_gems_publish_test/async/services/pet.rb
135
+ - lib/ruby_gems_publish_test/async/services/store.rb
136
+ - lib/ruby_gems_publish_test/async/services/user.rb
137
+ - lib/ruby_gems_publish_test/async_client.rb
138
+ - lib/ruby_gems_publish_test/client.rb
139
+ - lib/ruby_gems_publish_test/config.rb
140
+ - lib/ruby_gems_publish_test/environment.rb
141
+ - lib/ruby_gems_publish_test/error.rb
142
+ - lib/ruby_gems_publish_test/http/auth.rb
143
+ - lib/ruby_gems_publish_test/http/connection.rb
144
+ - lib/ruby_gems_publish_test/http/hooks.rb
145
+ - lib/ruby_gems_publish_test/http/response.rb
146
+ - lib/ruby_gems_publish_test/models/api_response.rb
147
+ - lib/ruby_gems_publish_test/models/category.rb
148
+ - lib/ruby_gems_publish_test/models/find_pets_by_status_status.rb
149
+ - lib/ruby_gems_publish_test/models/open_model.rb
150
+ - lib/ruby_gems_publish_test/models/order.rb
151
+ - lib/ruby_gems_publish_test/models/order_status.rb
152
+ - lib/ruby_gems_publish_test/models/pet.rb
153
+ - lib/ruby_gems_publish_test/models/pet_status.rb
154
+ - lib/ruby_gems_publish_test/models/serializable.rb
155
+ - lib/ruby_gems_publish_test/models/tag.rb
156
+ - lib/ruby_gems_publish_test/models/union_type.rb
157
+ - lib/ruby_gems_publish_test/models/user.rb
158
+ - lib/ruby_gems_publish_test/serializers/form_serializer.rb
159
+ - lib/ruby_gems_publish_test/serializers/json_serializer.rb
160
+ - lib/ruby_gems_publish_test/serializers/xml_serializer.rb
161
+ - lib/ruby_gems_publish_test/services/pet.rb
162
+ - lib/ruby_gems_publish_test/services/store.rb
163
+ - lib/ruby_gems_publish_test/services/user.rb
164
+ - lib/ruby_gems_publish_test/validator.rb
165
+ - lib/ruby_gems_publish_test/version.rb
166
+ homepage: https://github.com/postmanlabs/ruby_gems_publish_test
167
+ licenses:
168
+ - Apache 2.0
169
+ metadata:
170
+ rubygems_mfa_required: 'true'
171
+ post_install_message:
172
+ rdoc_options: []
173
+ require_paths:
174
+ - lib
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '3.3'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubygems_version: 3.5.22
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: 'This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You
190
+ can find out more about Swagger at [https://swagger.io](https://swagger.io). In
191
+ the third iteration of the pet store, we''ve switched to the design first approach!
192
+ You can now help us improve the API whether it''s by making changes to the definition
193
+ itself or to the code. That way, with time, we can improve the API in general, and
194
+ expose some of the new features in OAS3. Some useful links: - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)
195
+ - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)'
196
+ test_files: []