ngrok-api 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +21 -0
  3. data/.gitignore +13 -0
  4. data/.rubocop.yml +28 -0
  5. data/.rubocop_airbnb.yml +2 -0
  6. data/.simplecov +1 -0
  7. data/Gemfile +33 -0
  8. data/Guardfile +16 -0
  9. data/README.md +61 -0
  10. data/Rakefile +7 -0
  11. data/doc/NgrokAPI/Client.html +542 -0
  12. data/doc/NgrokAPI/Error.html +305 -0
  13. data/doc/NgrokAPI/Errors/NotFoundError.html +309 -0
  14. data/doc/NgrokAPI/Errors.html +115 -0
  15. data/doc/NgrokAPI/HttpClient.html +1104 -0
  16. data/doc/NgrokAPI/Models/ApiKey.html +1138 -0
  17. data/doc/NgrokAPI/Models/EndpointConfiguration.html +1366 -0
  18. data/doc/NgrokAPI/Models/Listable.html +934 -0
  19. data/doc/NgrokAPI/Models/ReservedDomain.html +2498 -0
  20. data/doc/NgrokAPI/Models/TlsCertificate.html +1064 -0
  21. data/doc/NgrokAPI/Models.html +117 -0
  22. data/doc/NgrokAPI/PagedIterator.html +631 -0
  23. data/doc/NgrokAPI/Services/ApiKeysClient.html +1333 -0
  24. data/doc/NgrokAPI/Services/EndpointConfigurationsClient.html +2201 -0
  25. data/doc/NgrokAPI/Services/ReservedDomainsClient.html +2541 -0
  26. data/doc/NgrokAPI/Services/TlsCertificatesClient.html +1417 -0
  27. data/doc/NgrokAPI/Services.html +117 -0
  28. data/doc/NgrokAPI.html +157 -0
  29. data/doc/_index.html +309 -0
  30. data/doc/class_list.html +51 -0
  31. data/doc/css/common.css +1 -0
  32. data/doc/css/full_list.css +58 -0
  33. data/doc/css/style.css +497 -0
  34. data/doc/file.README.html +126 -0
  35. data/doc/file_list.html +56 -0
  36. data/doc/frames.html +17 -0
  37. data/doc/index.html +126 -0
  38. data/doc/js/app.js +314 -0
  39. data/doc/js/full_list.js +216 -0
  40. data/doc/js/jquery.js +4 -0
  41. data/doc/method_list.html +1227 -0
  42. data/doc/top-level-namespace.html +110 -0
  43. data/docs/NgrokAPI/Client.html +542 -0
  44. data/docs/NgrokAPI/Error.html +305 -0
  45. data/docs/NgrokAPI/Errors/NotFoundError.html +309 -0
  46. data/docs/NgrokAPI/Errors.html +115 -0
  47. data/docs/NgrokAPI/HttpClient.html +1104 -0
  48. data/docs/NgrokAPI/Models/ApiKey.html +1138 -0
  49. data/docs/NgrokAPI/Models/EndpointConfiguration.html +1366 -0
  50. data/docs/NgrokAPI/Models/Listable.html +934 -0
  51. data/docs/NgrokAPI/Models/ReservedDomain.html +2498 -0
  52. data/docs/NgrokAPI/Models/TlsCertificate.html +1064 -0
  53. data/docs/NgrokAPI/Models.html +117 -0
  54. data/docs/NgrokAPI/PagedIterator.html +631 -0
  55. data/docs/NgrokAPI/Services/ApiKeysClient.html +1333 -0
  56. data/docs/NgrokAPI/Services/EndpointConfigurationsClient.html +2201 -0
  57. data/docs/NgrokAPI/Services/ReservedDomainsClient.html +2541 -0
  58. data/docs/NgrokAPI/Services/TlsCertificatesClient.html +1417 -0
  59. data/docs/NgrokAPI/Services.html +117 -0
  60. data/docs/NgrokAPI.html +157 -0
  61. data/docs/_index.html +309 -0
  62. data/docs/class_list.html +51 -0
  63. data/docs/css/common.css +1 -0
  64. data/docs/css/full_list.css +58 -0
  65. data/docs/css/style.css +497 -0
  66. data/docs/file.README.html +126 -0
  67. data/docs/file_list.html +56 -0
  68. data/docs/frames.html +17 -0
  69. data/docs/index.html +126 -0
  70. data/docs/js/app.js +314 -0
  71. data/docs/js/full_list.js +216 -0
  72. data/docs/js/jquery.js +4 -0
  73. data/docs/method_list.html +1227 -0
  74. data/docs/top-level-namespace.html +110 -0
  75. data/lib/ngrokapi/client.rb +49 -0
  76. data/lib/ngrokapi/error.rb +14 -0
  77. data/lib/ngrokapi/errors/not_found_error.rb +16 -0
  78. data/lib/ngrokapi/http_client.rb +132 -0
  79. data/lib/ngrokapi/models/api_key.rb +64 -0
  80. data/lib/ngrokapi/models/endpoint_configuration.rb +119 -0
  81. data/lib/ngrokapi/models/listable.rb +42 -0
  82. data/lib/ngrokapi/models/reserved_domain.rb +211 -0
  83. data/lib/ngrokapi/models/tls_certificate.rb +62 -0
  84. data/lib/ngrokapi/paged_iterator.rb +40 -0
  85. data/lib/ngrokapi/services/api_keys_client.rb +144 -0
  86. data/lib/ngrokapi/services/endpoint_configurations_client.rb +313 -0
  87. data/lib/ngrokapi/services/reserved_domains_client.rb +313 -0
  88. data/lib/ngrokapi/services/tls_certificates_client.rb +161 -0
  89. data/lib/ngrokapi/version.rb +7 -0
  90. data/lib/ngrokapi.rb +13 -0
  91. data/ngrok-api.gemspec +27 -0
  92. data/spec/ngrokapi/client_spec.rb +33 -0
  93. data/spec/ngrokapi/http_client_spec.rb +75 -0
  94. data/spec/ngrokapi/models/api_key_spec.rb +43 -0
  95. data/spec/ngrokapi/models/listable_spec.rb +43 -0
  96. data/spec/ngrokapi/models/reserved_domain_spec.rb +100 -0
  97. data/spec/ngrokapi/paged_iterator_spec.rb +84 -0
  98. data/spec/ngrokapi/services/api_keys_client_spec.rb +127 -0
  99. data/spec/spec_helper.rb +80 -0
  100. metadata +144 -0
@@ -0,0 +1,161 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NgrokAPI
4
+ module Services
5
+ ##
6
+ # A client for interacting with the tls_certificates API
7
+ #
8
+ # https://ngrok.com/docs/api#api-tls-certificates
9
+ class TlsCertificatesClient
10
+ # The List Property from the resulting API for list calls
11
+ LIST_PROPERTY = 'tls_certificates'
12
+ # The API path for tls certificates
13
+ PATH = '/tls_certificates'
14
+
15
+ attr_reader :client
16
+
17
+ def initialize(client:)
18
+ @client = client
19
+ end
20
+
21
+ # rubocop:disable LineLength
22
+
23
+ ##
24
+ # Upload a new TLS certificate.
25
+ #
26
+ # @param [string] description human-readable description of this TLS certificate. optional, max 255 bytes.
27
+ # @param [string] metadata arbitrary user-defined machine-readable data of this TLS certificate. optional, max 4096 bytes.
28
+ # @param [string] certificate_pem chain of PEM-encoded certificates, leaf first. See `Certificate Bundles` <https://ngrok.com/docs/api#tls-certificates-pem>`_.
29
+ # @param [string] private_key_pem private key for the TLS certificate, PEM-encoded. See `Private Keys` <https://ngrok.com/docs/ngrok-link#tls-certificates-key>`_.
30
+ # @return [NgrokAPI::Models::TlsCertificate] result from create request
31
+ #
32
+ # https://ngrok.com/docs/api#api-tls-certificates-create
33
+ def create(
34
+ certificate_pem: '',
35
+ description: '',
36
+ metadata: '',
37
+ private_key_pem: ''
38
+ )
39
+ data = {
40
+ certificate_pem: certificate_pem,
41
+ description: description,
42
+ metadata: metadata,
43
+ private_key_pem: private_key_pem,
44
+ }
45
+ result = @client.post(PATH, data: data)
46
+ NgrokAPI::Models::TlsCertificate.new(client: self, result: result)
47
+ end
48
+ # rubocop:enable LineLength
49
+
50
+ ##
51
+ # Delete a TLS certificate by ID.
52
+ #
53
+ # @param [string] id a resource identifier
54
+ # @return [nil] result from delete request
55
+ #
56
+ # https://ngrok.com/docs/api#api-tls-certificates-delete
57
+ def delete(id: nil)
58
+ @client.delete("#{PATH}/#{id}")
59
+ end
60
+
61
+ ##
62
+ # Delete a TLS certificate by ID. Throw an exception if 404.
63
+ #
64
+ # @param [string] id a resource identifier
65
+ # @return [nil] result from delete request
66
+ #
67
+ # https://ngrok.com/docs/api#api-tls-certificates-delete
68
+ def delete!(id: nil)
69
+ @client.delete("#{PATH}/#{id}", danger: true)
70
+ end
71
+
72
+ ##
73
+ # Get detailed information about a TLS certificate by ID.
74
+ #
75
+ # @param [string] id a resource identifier
76
+ # @return [NgrokAPI::Models::TlsCertificate] result from get request
77
+ #
78
+ # https://ngrok.com/docs/api#api-tls-certificates-get
79
+ def get(id: nil)
80
+ result = @client.get("#{PATH}/#{id}")
81
+ NgrokAPI::Models::TlsCertificate.new(client: self, result: result)
82
+ end
83
+
84
+ ##
85
+ # Get detailed information about a TLS certificate by ID. Throw an exception if 404.
86
+ #
87
+ # @param [string] id a resource identifier
88
+ # @return [NgrokAPI::Models::TlsCertificate] result from get request
89
+ #
90
+ # https://ngrok.com/docs/api#api-tls-certificates-get
91
+ def get!(id: nil)
92
+ result = @client.get("#{PATH}/#{id}", danger: true)
93
+ NgrokAPI::Models::TlsCertificate.new(client: self, result: result)
94
+ end
95
+
96
+ ##
97
+ # List all TLS certificates on this account.
98
+ #
99
+ # @param [string] before_id
100
+ # @param [integer] limit
101
+ # @param [string] url optional and mutually exclusive from before_id and limit
102
+ # @return [NgrokAPI::Models::Listable] the result listable
103
+ #
104
+ # https://ngrok.com/docs/api#api-tls-certificates-list
105
+ def list(before_id: nil, limit: nil, url: nil)
106
+ result = @client.list(before_id: before_id, limit: limit, url: url, path: PATH)
107
+ NgrokAPI::Models::Listable.new(
108
+ client: self,
109
+ result: result,
110
+ list_property: LIST_PROPERTY,
111
+ klass: NgrokAPI::Models::TlsCertificate
112
+ )
113
+ end
114
+
115
+ # rubocop:disable LineLength
116
+
117
+ ##
118
+ # Update attributes of a TLS Certificate by ID.
119
+ #
120
+ # @param [string] id
121
+ # @param [string] description human-readable description of this TLS certificate. optional, max 255 bytes.
122
+ # @param [string] metadata arbitrary user-defined machine-readable data of this TLS certificate. optional, max 4096 bytes.
123
+ # @return [NgrokAPI::Models::TlsCertificate] result from update request
124
+ #
125
+ # https://ngrok.com/docs/api#api-tls-certificates-update
126
+ def update(
127
+ id: nil,
128
+ description: nil,
129
+ metadata: nil
130
+ )
131
+ data = {}
132
+ data[:description] = description if description
133
+ data[:metadata] = metadata if metadata
134
+ result = @client.patch("#{PATH}/#{id}", data: data)
135
+ NgrokAPI::Models::TlsCertificate.new(client: self, result: result)
136
+ end
137
+
138
+ ##
139
+ # Update attributes of a TLS Certificate by ID. Throw an exception if 404.
140
+ #
141
+ # @param [string] id
142
+ # @param [string] description human-readable description of this TLS certificate. optional, max 255 bytes.
143
+ # @param [string] metadata arbitrary user-defined machine-readable data of this TLS certificate. optional, max 4096 bytes.
144
+ # @return [NgrokAPI::Models::TlsCertificate] result from update request
145
+ #
146
+ # https://ngrok.com/docs/api#api-tls-certificates-update
147
+ def update!(
148
+ id: nil,
149
+ description: nil,
150
+ metadata: nil
151
+ )
152
+ data = {}
153
+ data[:description] = description if description
154
+ data[:metadata] = metadata if metadata
155
+ result = @client.patch("#{PATH}/#{id}", danger: true, data: data)
156
+ NgrokAPI::Models::TlsCertificate.new(client: self, result: result)
157
+ end
158
+ # rubocop:enable LineLength
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,7 @@
1
+ module NgrokAPI
2
+ # rubocop:disable Layout/SpaceAroundOperators
3
+
4
+ # The current version of the gem
5
+ VERSION="0.9.0".freeze
6
+ # rubocop:enable Layout/SpaceAroundOperators
7
+ end
data/lib/ngrokapi.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'net/http'
5
+
6
+ Dir[File.join('.', 'lib', '**/*.rb')].each do |f|
7
+ require f
8
+ end
9
+
10
+ ##
11
+ # The Module which contains the Ngrok API gem
12
+ module NgrokAPI
13
+ end
data/ngrok-api.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
4
+ require 'ngrokapi/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'ngrok-api'
8
+ s.version = NgrokAPI::VERSION
9
+ s.platform = Gem::Platform::RUBY
10
+ s.licenses = ['MIT']
11
+ s.authors = ['']
12
+ s.email = ['']
13
+ s.homepage = 'https://github.com/ngrok/ngrok-api-ruby'
14
+ s.summary = 'This library wraps the [ngrok HTTP API](https://ngrok.com/docs/api) to make
15
+ it easier to consume in Ruby.'
16
+ s.description = 'This library wraps the [ngrok HTTP API](https://ngrok.com/docs/api) to make
17
+ it easier to consume in Ruby.'
18
+
19
+ s.required_ruby_version = '>= 3.0.0'
20
+
21
+ all_files = `git ls-files`.split("\n")
22
+ test_files = `git ls-files -- {test,spec,features}/*`.split('\n')
23
+
24
+ s.files = all_files - test_files
25
+ s.executables = `git ls-files -- bin/*`.split('\n').map { |f| File.basename(f) }
26
+ s.require_paths = ['lib']
27
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NgrokAPI::Client do
4
+ before(:each) do
5
+ @client = NgrokAPI::Client.new(api_key: 'abc')
6
+ end
7
+
8
+ describe "#api_keys" do
9
+ it "returns an instance of the api_keys_client" do
10
+ expect(@client.api_keys.class).to eq(NgrokAPI::Services::ApiKeysClient)
11
+ end
12
+ end
13
+
14
+ describe "#endpoint_configurations" do
15
+ it "returns an instance of the endpoint_configurations_client" do
16
+ expect(@client.endpoint_configurations.class).to eq(
17
+ NgrokAPI::Services::EndpointConfigurationsClient
18
+ )
19
+ end
20
+ end
21
+
22
+ describe "#reserved_domains" do
23
+ it "returns an instance of the reserved_domains_client" do
24
+ expect(@client.reserved_domains.class).to eq(NgrokAPI::Services::ReservedDomainsClient)
25
+ end
26
+ end
27
+
28
+ describe "#tls_certificates" do
29
+ it "returns an instance of the tls_certificates_client" do
30
+ expect(@client.tls_certificates.class).to eq(NgrokAPI::Services::TlsCertificatesClient)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NgrokAPI::HttpClient do
4
+ let(:base_url) { 'https://api.ngrok.com' }
5
+ let(:path) { '/api_keys' }
6
+
7
+ before(:each) do
8
+ api_key = 'abc'
9
+ @client = NgrokAPI::HttpClient.new(api_key: api_key)
10
+ end
11
+
12
+ describe "#delete" do
13
+ it "will delete and return an empty body" do
14
+ url = "#{base_url}#{path}/#{api_key_result["id"]}"
15
+ stub_request(:delete, url).to_return(body: nil)
16
+ expect(@client.delete(url)).to eq(nil)
17
+ end
18
+ end
19
+
20
+ describe "#get" do
21
+ it "will get the returned resource json" do
22
+ url = "#{base_url}#{path}/#{api_key_result["id"]}"
23
+ stub_request(:get, url).to_return(body: api_key_result.to_json)
24
+ expect(@client.get(url)).to eq(api_key_result)
25
+ end
26
+
27
+ it "will raise a NotFoundError if 404" do
28
+ url = "#{base_url}#{path}/#{api_key_result["id"]}"
29
+ stub_request(:get, url).to_return(body: nil, status: 404)
30
+ expect do
31
+ @client.get(url, danger: true)
32
+ end.to raise_error(NgrokAPI::Errors::NotFoundError)
33
+ end
34
+
35
+ it "will raise a NgrokAPI::Error if >= 400" do
36
+ url = "#{base_url}#{path}/#{api_key_result["id"]}"
37
+ stub_request(:get, url).to_return(body: nil, status: 400)
38
+ expect do
39
+ @client.get(url, danger: true)
40
+ end.to raise_error(NgrokAPI::Error)
41
+ end
42
+ end
43
+
44
+ describe "#list" do
45
+ it "with a url will return based on the absolute URL" do
46
+ url = "#{base_url}#{path}?before_id=#{api_key_result["id"]}&limit=1"
47
+ stub_request(:get, url).to_return(body: api_key_results.to_json)
48
+ expect(@client.list(url: url)).to eq(api_key_results)
49
+ end
50
+
51
+ it "without a url will return based on the path, before_id, and limit" do
52
+ url = "#{base_url}#{path}?before_id=#{api_key_result["id"]}&limit=1"
53
+ stub_request(:get, url).to_return(body: api_key_results.to_json)
54
+ expect(@client.list(before_id: api_key_result["id"], limit: 1, path: path)).to eq(api_key_results)
55
+ end
56
+ end
57
+
58
+ describe "#patch" do
59
+ it "updates an existing resource" do
60
+ merged = api_key_result
61
+ merged['metadata'] = 'updated'
62
+ url = "#{base_url}#{path}/#{api_key_result["id"]}"
63
+ stub_request(:patch, url).to_return(body: merged.to_json)
64
+ expect(@client.patch(url)).to eq(merged)
65
+ end
66
+ end
67
+
68
+ describe "#post" do
69
+ it "creates a new resource" do
70
+ url = "#{base_url}#{path}/#{api_key_result["id"]}"
71
+ stub_request(:post, url).to_return(body: api_key_result.to_json)
72
+ expect(@client.post(url)).to eq(api_key_result)
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NgrokAPI::Models::ApiKey do
4
+ before(:each) do
5
+ @client = class_double("ApiKeysClient")
6
+ @api_key = NgrokAPI::Models::ApiKey.new(client: @client, result: api_key_result)
7
+ end
8
+
9
+ describe "#==" do
10
+ it "is equal if the results are the same" do
11
+ key2 = NgrokAPI::Models::ApiKey.new(client: @client, result: api_key_result)
12
+ expect(@api_key == key2).to eq true
13
+ end
14
+ end
15
+
16
+ describe "#to_s" do
17
+ it "stringifies as result.to_s" do
18
+ expect(@api_key.to_s).to eq api_key_result.to_s
19
+ end
20
+ end
21
+
22
+ describe "#delete" do
23
+ it "calls delete on the client" do
24
+ expect(@api_key.client).to receive(:delete)
25
+ @api_key.delete
26
+ end
27
+ end
28
+
29
+ describe "#update" do
30
+ it "updates instance's description and metadata and call update on the client" do
31
+ new_description = 'new description'
32
+ new_metadata = 'new metadata'
33
+ expect(@api_key.client).to receive(:update)
34
+
35
+ @api_key.update(
36
+ description: new_description,
37
+ metadata: new_metadata,
38
+ )
39
+ expect(@api_key.description).to eq new_description
40
+ expect(@api_key.metadata).to eq new_metadata
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NgrokAPI::Models::Listable do
4
+ before(:each) do
5
+ @client = class_double("ApiKeysClient")
6
+ @listable = NgrokAPI::Models::Listable.new(
7
+ client: @client,
8
+ result: api_key_results,
9
+ list_property: 'keys',
10
+ klass: NgrokAPI::Models::ApiKey
11
+ )
12
+ end
13
+
14
+ describe "#==" do
15
+ it "is equal if the results are the same" do
16
+ listable2 = NgrokAPI::Models::Listable.new(
17
+ client: @client,
18
+ result: api_key_results,
19
+ list_property: 'keys',
20
+ klass: NgrokAPI::Models::ApiKey
21
+ )
22
+ expect(@listable == listable2).to eq true
23
+ end
24
+ end
25
+
26
+ describe "#to_s" do
27
+ it "stringifies as result.to_s" do
28
+ expect(@listable.to_s).to eq api_key_results.to_s
29
+ end
30
+ end
31
+
32
+ describe "keys" do
33
+ it "consistent of ApiKeys" do
34
+ expect(@listable.items.size).to eq api_key_results['keys'].size
35
+ end
36
+ end
37
+
38
+ describe "iter" do
39
+ it "is a PagedIterator" do
40
+ expect(@listable.iter.class).to eq NgrokAPI::PagedIterator
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,100 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NgrokAPI::Models::ReservedDomain do
4
+ let(:result) do
5
+ {
6
+ "id" => "rd_1xxLksFRG6o5MoAKX8UrtPnXbmz",
7
+ "uri" => "https://api.ngrok.com/reserved_domains/rd_1xxLksFRG6o5MoAKX8UrtPnXbmz",
8
+ "created_at" => "2021-09-10T16:38:58Z",
9
+ "description" => "",
10
+ "metadata" => "",
11
+ "domain" => "tahouetnaoh.ngrok.io",
12
+ "region" => "us",
13
+ "cname_target" => nil,
14
+ "http_endpoint_configuration" => {
15
+ "id" => "ec_1xv9oZpu0g1sbaZvxuqKQJVCLW5",
16
+ "uri" => "https://api.ngrok.com/endpoint_configurations/ec_1xv9oZpu0g1sbaZvxuqKQJVCLW5",
17
+ },
18
+ "https_endpoint_configuration" => nil,
19
+ "certificate" => nil,
20
+ "certificate_management_policy" => nil,
21
+ "certificate_management_status" => nil,
22
+ }
23
+ end
24
+
25
+ before(:each) do
26
+ @client = class_double("ReservedDomainsClient")
27
+ @domain = NgrokAPI::Models::ReservedDomain.new(client: @client, result: result)
28
+ end
29
+
30
+ describe "#==" do
31
+ it "is equal if the results are the same" do
32
+ domain2 = NgrokAPI::Models::ReservedDomain.new(client: @client, result: result)
33
+ expect(@domain == domain2).to eq true
34
+ end
35
+ end
36
+
37
+ describe "#to_s" do
38
+ it "stringifies as result.to_s" do
39
+ expect(@domain.to_s).to eq result.to_s
40
+ end
41
+ end
42
+
43
+ describe "#delete" do
44
+ it "calls delete on the client" do
45
+ expect(@domain.client).to receive(:delete)
46
+ @domain.delete
47
+ end
48
+ end
49
+
50
+ describe "#update" do
51
+ it "updates the instance's description and metadata and call update on the client" do
52
+ # new_certificate_id = 'new certificate_id'
53
+ # new_http_endpoint_configuration_id = 'new http_endpoint_configuration_id'
54
+ # new_https_endpoint_configuration_id = 'new https_endpoint_configuration_id'
55
+ new_certificate_management_policy = 'new certificate_management_policy'
56
+ new_description = 'new description'
57
+ new_metadata = 'new metadata'
58
+ expect(@domain.client).to receive(:update)
59
+
60
+ # certificate_id: new_certificate_id,
61
+ # http_endpoint_configuration_id: new_http_endpoint_configuration_id,
62
+ # https_endpoint_configuration_id: new_https_endpoint_configuration_id
63
+ @domain.update(
64
+ description: new_description,
65
+ metadata: new_metadata,
66
+ certificate_management_policy: new_certificate_management_policy
67
+ )
68
+ expect(@domain.description).to eq new_description
69
+ expect(@domain.metadata).to eq new_metadata
70
+ expect(@domain.certificate_management_policy).to eq new_certificate_management_policy
71
+ # expect(@domain.certificate_id).to eq new_certificate_id
72
+ # expect(@domain.http_endpoint_configuration_id).to eq new_http_endpoint_configuration_id
73
+ # expect(@domain.https_endpoint_configuration_id).to eq new_https_endpoint_configuration_id
74
+ end
75
+ end
76
+
77
+ describe "#delete_certificate" do
78
+ end
79
+
80
+ describe "#delete_certificate_management_policy" do
81
+ end
82
+
83
+ describe "#delete_http_endpoint_config" do
84
+ end
85
+
86
+ describe "#delete_https_endpoint_config" do
87
+ end
88
+
89
+ describe "#restore_certificate" do
90
+ end
91
+
92
+ describe "#restore_certificate_management_policy" do
93
+ end
94
+
95
+ describe "#restore_http_endpoint_config" do
96
+ end
97
+
98
+ describe "#restore_https_endpoint_config" do
99
+ end
100
+ end
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NgrokAPI::PagedIterator do
4
+ let(:client) { class_double("ApiKeysClient") }
5
+ let(:uri) { "https://api.ngrok.com/api_keys" }
6
+ let(:next_page_uri) { "#{uri}?before_id=ak_1xuyYBCA83z5zo2MkBJ0JjvxPIs&limit=1" }
7
+ let(:results) do
8
+ { "keys" => [api_key_result], "uri" => uri, "next_page_uri" => next_page_uri }
9
+ end
10
+ let(:empty_results) do
11
+ { "keys" => [], "uri" => uri, "next_page_uri" => next_page_uri }
12
+ end
13
+ let(:empty_last_results) do
14
+ { "keys" => [], "uri" => uri, "next_page_uri" => nil }
15
+ end
16
+ let(:item) { NgrokAPI::Models::ApiKey.new(client: client, result: api_key_result) }
17
+ let(:page) do
18
+ NgrokAPI::Models::Listable.new(
19
+ client: client,
20
+ result: results,
21
+ list_property: 'keys',
22
+ klass: NgrokAPI::Models::ApiKey
23
+ )
24
+ end
25
+ let(:empty_page) do
26
+ NgrokAPI::Models::Listable.new(
27
+ client: client,
28
+ result: empty_results,
29
+ list_property: 'keys',
30
+ klass: NgrokAPI::Models::ApiKey
31
+ )
32
+ end
33
+ let(:empty_last_page) do
34
+ NgrokAPI::Models::Listable.new(
35
+ client: client,
36
+ result: empty_last_results,
37
+ list_property: 'keys',
38
+ klass: NgrokAPI::Models::ApiKey
39
+ )
40
+ end
41
+
42
+ describe "#get_next" do
43
+ it "gets the next result from cache" do
44
+ paged_iterator = NgrokAPI::PagedIterator.new(
45
+ client: client,
46
+ page: page,
47
+ list_property: 'keys'
48
+ )
49
+ expect(page).not_to receive(:next_page_uri)
50
+ expect(paged_iterator.get_next).to eq(api_key_result)
51
+ end
52
+
53
+ it "gets the next result based on next_page_uri if not in cache" do
54
+ paged_iterator = NgrokAPI::PagedIterator.new(
55
+ client: client,
56
+ page: empty_page,
57
+ list_property: 'keys'
58
+ )
59
+ expect(empty_page).to receive(:result).and_return(item)
60
+ expect(empty_page).to receive(:next_page_uri)
61
+ expect(paged_iterator.get_next).to eq(nil)
62
+ end
63
+
64
+ it "gets the next result based on next_page_uri if not in cache (with data)" do
65
+ paged_iterator = NgrokAPI::PagedIterator.new(
66
+ client: client,
67
+ page: empty_page,
68
+ list_property: 'keys'
69
+ )
70
+ expect(client).to receive(:list).with({ url: next_page_uri }).and_return(page)
71
+ expect(paged_iterator.get_next).to eq(api_key_result)
72
+ end
73
+
74
+ it "gets the next result based on next_page_uri if not in cache (without data)" do
75
+ paged_iterator = NgrokAPI::PagedIterator.new(
76
+ client: client,
77
+ page: empty_page,
78
+ list_property: 'keys'
79
+ )
80
+ expect(client).to receive(:list).with({ url: next_page_uri }).and_return(empty_last_page)
81
+ expect(paged_iterator.get_next).to eq(nil)
82
+ end
83
+ end
84
+ end