kube_cluster 0.3.7 → 0.3.9

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.
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler/setup"
4
+ require "kube/cluster"
3
5
  require_relative "endpoint"
4
6
  require_relative "chart"
5
7
 
@@ -119,3 +121,197 @@ module Kube
119
121
  end
120
122
  end
121
123
  end
124
+
125
+ test do
126
+ # ── initialization ────────────────────────────────────────────────────
127
+
128
+ it "initializes_with_name_and_url" do
129
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
130
+ repo.name.should == "bitnami"
131
+ end
132
+
133
+ it "raises_on_empty_name" do
134
+ lambda {
135
+ Kube::Helm::Repo.new("", url: "https://charts.example.com")
136
+ }.should.raise ArgumentError
137
+ end
138
+
139
+ it "raises_on_nil_name" do
140
+ lambda {
141
+ Kube::Helm::Repo.new(nil, url: "https://charts.example.com")
142
+ }.should.raise ArgumentError
143
+ end
144
+
145
+ # ── oci? delegation ──────────────────────────────────────────────────
146
+
147
+ it "oci_returns_true_for_oci_url" do
148
+ repo = Kube::Helm::Repo.new("ghcr", url: "oci://ghcr.io/my-org/charts")
149
+ repo.oci?.should.be.true
150
+ end
151
+
152
+ it "oci_returns_false_for_http_url" do
153
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
154
+ repo.oci?.should.be.false
155
+ end
156
+
157
+ # ── add / update / remove ────────────────────────────────────────────
158
+
159
+ it "add_returns_self_for_oci" do
160
+ repo = Kube::Helm::Repo.new("ghcr", url: "oci://ghcr.io/my-org/charts")
161
+ repo.add.should == repo
162
+ end
163
+
164
+ it "update_returns_self_for_oci" do
165
+ repo = Kube::Helm::Repo.new("ghcr", url: "oci://ghcr.io/my-org/charts")
166
+ repo.update.should == repo
167
+ end
168
+
169
+ it "remove_returns_self_for_oci" do
170
+ repo = Kube::Helm::Repo.new("ghcr", url: "oci://ghcr.io/my-org/charts")
171
+ repo.remove.should == repo
172
+ end
173
+
174
+ it "add_runs_helm_repo_add" do
175
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
176
+
177
+ captured_cmd = nil
178
+ original = Kube::Helm.method(:run)
179
+ Kube::Helm.define_singleton_method(:run) { |cmd| captured_cmd = cmd; "" }
180
+ begin
181
+ result = repo.add
182
+ result.should == repo
183
+ ensure
184
+ Kube::Helm.define_singleton_method(:run, original)
185
+ end
186
+ end
187
+
188
+ it "update_runs_helm_repo_update" do
189
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
190
+
191
+ captured_cmd = nil
192
+ original = Kube::Helm.method(:run)
193
+ Kube::Helm.define_singleton_method(:run) { |cmd| captured_cmd = cmd; "" }
194
+ begin
195
+ repo.update
196
+ ensure
197
+ Kube::Helm.define_singleton_method(:run, original)
198
+ end
199
+
200
+ captured_cmd.should.include "update"
201
+ end
202
+
203
+ it "remove_runs_helm_repo_remove" do
204
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
205
+
206
+ captured_cmd = nil
207
+ original = Kube::Helm.method(:run)
208
+ Kube::Helm.define_singleton_method(:run) { |cmd| captured_cmd = cmd; "" }
209
+ begin
210
+ repo.remove
211
+ ensure
212
+ Kube::Helm.define_singleton_method(:run, original)
213
+ end
214
+
215
+ captured_cmd.should.include "remove"
216
+ end
217
+
218
+ # ── fetch ────────────────────────────────────────────────────────────
219
+
220
+ it "fetch_returns_chart_with_metadata" do
221
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
222
+
223
+ stub_chart_yaml = {
224
+ "name" => "nginx",
225
+ "version" => "18.1.0",
226
+ "appVersion" => "1.25.0",
227
+ }.to_yaml
228
+
229
+ captured_cmds = []
230
+ original = Kube::Helm.method(:run)
231
+ Kube::Helm.define_singleton_method(:run) { |cmd|
232
+ captured_cmds << cmd
233
+ cmd.include?("show") ? stub_chart_yaml : ""
234
+ }
235
+ begin
236
+ chart = repo.fetch("nginx", version: "18.1.0")
237
+ chart.name.should == "nginx"
238
+ ensure
239
+ Kube::Helm.define_singleton_method(:run, original)
240
+ end
241
+ end
242
+
243
+ it "fetch_without_version" do
244
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
245
+
246
+ stub_chart_yaml = { "name" => "nginx", "version" => "18.1.0" }.to_yaml
247
+
248
+ captured_cmds = []
249
+ original = Kube::Helm.method(:run)
250
+ Kube::Helm.define_singleton_method(:run) { |cmd|
251
+ captured_cmds << cmd
252
+ cmd.include?("show") ? stub_chart_yaml : ""
253
+ }
254
+ begin
255
+ chart = repo.fetch("nginx")
256
+ chart.should.be.instance_of Kube::Helm::Chart
257
+ ensure
258
+ Kube::Helm.define_singleton_method(:run, original)
259
+ end
260
+ end
261
+
262
+ it "fetch_propagates_cluster" do
263
+ cluster = Kube::Cluster.connect(kubeconfig: "/tmp/test-kubeconfig")
264
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami", cluster: cluster)
265
+
266
+ stub_chart_yaml = { "name" => "nginx", "version" => "18.1.0" }.to_yaml
267
+
268
+ helm = cluster.connection.helm
269
+ original = helm.method(:run)
270
+ helm.define_singleton_method(:run) { |cmd|
271
+ cmd.include?("show") ? stub_chart_yaml : ""
272
+ }
273
+ begin
274
+ chart = repo.fetch("nginx", version: "18.1.0")
275
+ chart.cluster.should == cluster
276
+ ensure
277
+ helm.define_singleton_method(:run, original)
278
+ end
279
+ end
280
+
281
+ # ── cluster scoping ──────────────────────────────────────────────────
282
+
283
+ it "initializes_without_cluster" do
284
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
285
+ repo.cluster.should.be.nil
286
+ end
287
+
288
+ it "initializes_with_cluster" do
289
+ cluster = Kube::Cluster.connect(kubeconfig: "/tmp/test-kubeconfig")
290
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami", cluster: cluster)
291
+ repo.cluster.should == cluster
292
+ end
293
+
294
+ it "add_uses_cluster_helm_instance" do
295
+ cluster = Kube::Cluster.connect(kubeconfig: "/tmp/test-kubeconfig")
296
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami", cluster: cluster)
297
+
298
+ captured_cmd = nil
299
+ helm = cluster.connection.helm
300
+ original = helm.method(:run)
301
+ helm.define_singleton_method(:run) { |cmd| captured_cmd = cmd; "" }
302
+ begin
303
+ repo.add
304
+ ensure
305
+ helm.define_singleton_method(:run, original)
306
+ end
307
+
308
+ captured_cmd.should.include "add"
309
+ end
310
+
311
+ # ── to_s ──────────────────────────────────────────────────────────────
312
+
313
+ it "to_s" do
314
+ repo = Kube::Helm::Repo.new("bitnami", url: "https://charts.bitnami.com/bitnami")
315
+ repo.to_s.should == "bitnami (https://charts.bitnami.com/bitnami)"
316
+ end
317
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kube_cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan K
@@ -10,19 +10,19 @@ cert_chain: []
10
10
  date: 1980-01-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: minitest
13
+ name: scampi
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '5.0'
19
- type: :development
18
+ version: '0.1'
19
+ type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '5.0'
25
+ version: '0.1'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -57,28 +57,28 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 1.3.0
60
+ version: 1.3.7
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 1.3.0
67
+ version: 1.3.7
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: kube_kubectl
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 2.0.0
74
+ version: 2.0.9
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 2.0.0
81
+ version: 2.0.9
82
82
  description: 'OOP abstraction that allows you to deploy and manage kubernetes resources
83
83
  using Ruby.
84
84
 
@@ -98,6 +98,7 @@ files:
98
98
  - Gemfile.lock
99
99
  - LICENSE
100
100
  - README.md
101
+ - Rakefile
101
102
  - bin/console
102
103
  - bin/dev
103
104
  - bin/increment-version