kubeclient 4.9.1 → 4.9.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of kubeclient might be problematic. Click here for more details.

Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/actions.yml +35 -0
  3. data/CHANGELOG.md +8 -0
  4. data/kubeclient.gemspec +3 -2
  5. data/lib/kubeclient/common.rb +2 -2
  6. data/lib/kubeclient/config.rb +6 -1
  7. data/lib/kubeclient/version.rb +1 -1
  8. metadata +8 -214
  9. data/.travis.yml +0 -29
  10. data/test/cassettes/kubernetes_guestbook.yml +0 -879
  11. data/test/config/allinone.kubeconfig +0 -20
  12. data/test/config/execauth.kubeconfig +0 -62
  13. data/test/config/external-ca.pem +0 -18
  14. data/test/config/external-cert.pem +0 -19
  15. data/test/config/external-key.rsa +0 -27
  16. data/test/config/external.kubeconfig +0 -20
  17. data/test/config/gcpauth.kubeconfig +0 -22
  18. data/test/config/gcpcmdauth.kubeconfig +0 -26
  19. data/test/config/nouser.kubeconfig +0 -16
  20. data/test/config/oidcauth.kubeconfig +0 -25
  21. data/test/config/timestamps.kubeconfig +0 -25
  22. data/test/config/userauth.kubeconfig +0 -28
  23. data/test/json/bindings_list.json +0 -10
  24. data/test/json/component_status.json +0 -17
  25. data/test/json/component_status_list.json +0 -52
  26. data/test/json/config.istio.io_api_resource_list.json +0 -679
  27. data/test/json/config_map_list.json +0 -9
  28. data/test/json/core_api_resource_list.json +0 -181
  29. data/test/json/core_api_resource_list_without_kind.json +0 -129
  30. data/test/json/core_oapi_resource_list_without_kind.json +0 -197
  31. data/test/json/created_endpoint.json +0 -28
  32. data/test/json/created_namespace.json +0 -20
  33. data/test/json/created_secret.json +0 -16
  34. data/test/json/created_security_context_constraint.json +0 -65
  35. data/test/json/created_service.json +0 -31
  36. data/test/json/empty_pod_list.json +0 -9
  37. data/test/json/endpoint_list.json +0 -48
  38. data/test/json/entity_list.json +0 -56
  39. data/test/json/event_list.json +0 -35
  40. data/test/json/extensions_v1beta1_api_resource_list.json +0 -217
  41. data/test/json/limit_range.json +0 -23
  42. data/test/json/limit_range_list.json +0 -31
  43. data/test/json/namespace.json +0 -13
  44. data/test/json/namespace_exception.json +0 -8
  45. data/test/json/namespace_list.json +0 -32
  46. data/test/json/node.json +0 -29
  47. data/test/json/node_list.json +0 -37
  48. data/test/json/node_notice.json +0 -160
  49. data/test/json/persistent_volume.json +0 -37
  50. data/test/json/persistent_volume_claim.json +0 -32
  51. data/test/json/persistent_volume_claim_list.json +0 -40
  52. data/test/json/persistent_volume_claims_nil_items.json +0 -8
  53. data/test/json/persistent_volume_list.json +0 -45
  54. data/test/json/pod.json +0 -92
  55. data/test/json/pod_list.json +0 -79
  56. data/test/json/pod_template_list.json +0 -9
  57. data/test/json/pods_1.json +0 -265
  58. data/test/json/pods_2.json +0 -102
  59. data/test/json/pods_410.json +0 -9
  60. data/test/json/processed_template.json +0 -27
  61. data/test/json/replication_controller.json +0 -57
  62. data/test/json/replication_controller_list.json +0 -66
  63. data/test/json/resource_quota.json +0 -46
  64. data/test/json/resource_quota_list.json +0 -54
  65. data/test/json/secret_list.json +0 -44
  66. data/test/json/security.openshift.io_api_resource_list.json +0 -69
  67. data/test/json/security_context_constraint_list.json +0 -375
  68. data/test/json/service.json +0 -33
  69. data/test/json/service_account.json +0 -25
  70. data/test/json/service_account_list.json +0 -82
  71. data/test/json/service_illegal_json_404.json +0 -1
  72. data/test/json/service_json_patch.json +0 -26
  73. data/test/json/service_list.json +0 -97
  74. data/test/json/service_merge_patch.json +0 -26
  75. data/test/json/service_patch.json +0 -25
  76. data/test/json/service_update.json +0 -22
  77. data/test/json/template.json +0 -27
  78. data/test/json/template.openshift.io_api_resource_list.json +0 -75
  79. data/test/json/template_list.json +0 -35
  80. data/test/json/versions_list.json +0 -6
  81. data/test/json/watch_stream.json +0 -3
  82. data/test/test_common.rb +0 -95
  83. data/test/test_common_url_handling.rb +0 -160
  84. data/test/test_component_status.rb +0 -29
  85. data/test/test_config.rb +0 -222
  86. data/test/test_endpoint.rb +0 -54
  87. data/test/test_exec_credentials.rb +0 -225
  88. data/test/test_gcp_command_credentials.rb +0 -27
  89. data/test/test_google_application_default_credentials.rb +0 -15
  90. data/test/test_guestbook_go.rb +0 -235
  91. data/test/test_helper.rb +0 -18
  92. data/test/test_kubeclient.rb +0 -881
  93. data/test/test_limit_range.rb +0 -25
  94. data/test/test_missing_methods.rb +0 -80
  95. data/test/test_namespace.rb +0 -59
  96. data/test/test_node.rb +0 -70
  97. data/test/test_oidc_auth_provider.rb +0 -103
  98. data/test/test_persistent_volume.rb +0 -29
  99. data/test/test_persistent_volume_claim.rb +0 -28
  100. data/test/test_pod.rb +0 -81
  101. data/test/test_pod_log.rb +0 -157
  102. data/test/test_process_template.rb +0 -80
  103. data/test/test_replication_controller.rb +0 -47
  104. data/test/test_resource_list_without_kind.rb +0 -78
  105. data/test/test_resource_quota.rb +0 -23
  106. data/test/test_secret.rb +0 -62
  107. data/test/test_security_context_constraint.rb +0 -62
  108. data/test/test_service.rb +0 -357
  109. data/test/test_service_account.rb +0 -26
  110. data/test/test_watch.rb +0 -195
  111. data/test/txt/pod_log.txt +0 -6
  112. data/test/valid_token_file +0 -1
@@ -1,160 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # URLHandling tests
4
- class TestCommonUrlHandling < MiniTest::Test
5
- def test_no_path_in_uri
6
- client = Kubeclient::Client.new('http://localhost:8080', 'v1')
7
- rest_client = client.rest_client
8
- assert_equal('v1', client.instance_variable_get(:@api_version))
9
- assert_equal('', client.instance_variable_get(:@api_group))
10
- assert_equal('http://localhost:8080/api/v1', rest_client.url.to_s)
11
- end
12
-
13
- def test_with_api_path_in_uri
14
- client = Kubeclient::Client.new('http://localhost:8080/api', 'v1')
15
- rest_client = client.rest_client
16
- assert_equal('v1', client.instance_variable_get(:@api_version))
17
- assert_equal('', client.instance_variable_get(:@api_group))
18
- assert_equal('http://localhost:8080/api/v1', rest_client.url.to_s)
19
- end
20
-
21
- def test_with_api_path_in_uri_other_version
22
- client = Kubeclient::Client.new('http://localhost:8080/api', 'v2')
23
- rest_client = client.rest_client
24
- assert_equal('v2', client.instance_variable_get(:@api_version))
25
- assert_equal('', client.instance_variable_get(:@api_group))
26
- assert_equal('http://localhost:8080/api/v2', rest_client.url.to_s)
27
- end
28
-
29
- def test_with_api_group_path_in_uri
30
- client = Kubeclient::Client.new('http://localhost:8080/apis/this_is_the_group', 'v1')
31
- rest_client = client.rest_client
32
- assert_equal('v1', client.instance_variable_get(:@api_version))
33
- assert_equal('this_is_the_group/', client.instance_variable_get(:@api_group))
34
- assert_equal('http://localhost:8080/apis/this_is_the_group/v1', rest_client.url.to_s)
35
- end
36
-
37
- def test_with_api_group_path_in_uri_other_version
38
- client = Kubeclient::Client.new('http://localhost:8080/apis/this_is_the_group', 'v2')
39
- rest_client = client.rest_client
40
- assert_equal('v2', client.instance_variable_get(:@api_version))
41
- assert_equal('this_is_the_group/', client.instance_variable_get(:@api_group))
42
- assert_equal('http://localhost:8080/apis/this_is_the_group/v2', rest_client.url.to_s)
43
- end
44
-
45
- def test_with_api_path_in_uri_trailing_slash
46
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
47
- rest_client = client.rest_client
48
- assert_equal('v1', client.instance_variable_get(:@api_version))
49
- assert_equal('', client.instance_variable_get(:@api_group))
50
- assert_equal('http://localhost:8080/api/v1', rest_client.url.to_s)
51
- end
52
-
53
- def test_with_api_path_in_api
54
- client = Kubeclient::Client.new('http://localhost:8080/api/but/I/want/a/hidden/k8s/api', 'v1')
55
- rest_client = client.rest_client
56
- assert_equal('v1', client.instance_variable_get(:@api_version))
57
- assert_equal('', client.instance_variable_get(:@api_group))
58
- assert_equal('http://localhost:8080/api/but/I/want/a/hidden/k8s/api/v1', rest_client.url.to_s)
59
- end
60
-
61
- def test_with_api_group_path_in_api
62
- client = Kubeclient::Client.new(
63
- 'http://localhost:8080/api/but/I/want/a/hidden/k8s/apis/this_is_the_group',
64
- 'v1'
65
- )
66
- rest_client = client.rest_client
67
- assert_equal('v1', client.instance_variable_get(:@api_version))
68
- assert_equal('this_is_the_group/', client.instance_variable_get(:@api_group))
69
- assert_equal(
70
- 'http://localhost:8080/api/but/I/want/a/hidden/k8s/apis/this_is_the_group/v1',
71
- rest_client.url.to_s
72
- )
73
- end
74
-
75
- def test_rancher_with_api_path_in_uri
76
- client = Kubeclient::Client.new('http://localhost:8080/k8s/clusters/c-somerancherID/api', 'v1')
77
- rest_client = client.rest_client
78
- assert_equal('v1', client.instance_variable_get(:@api_version))
79
- assert_equal('', client.instance_variable_get(:@api_group))
80
- assert_equal('http://localhost:8080/k8s/clusters/c-somerancherID/api/v1', rest_client.url.to_s)
81
- end
82
-
83
- def test_rancher_no_api_path_in_uri
84
- client = Kubeclient::Client.new('http://localhost:8080/k8s/clusters/c-somerancherID', 'v1')
85
- rest_client = client.rest_client
86
- assert_equal('v1', client.instance_variable_get(:@api_version))
87
- assert_equal('', client.instance_variable_get(:@api_group))
88
- assert_equal('http://localhost:8080/k8s/clusters/c-somerancherID/api/v1', rest_client.url.to_s)
89
- end
90
-
91
- def test_rancher_no_api_path_in_uri_trailing_slash
92
- client = Kubeclient::Client.new('http://localhost:8080/k8s/clusters/c-somerancherID/', 'v1')
93
- rest_client = client.rest_client
94
- assert_equal('v1', client.instance_variable_get(:@api_version))
95
- assert_equal('', client.instance_variable_get(:@api_group))
96
- assert_equal('http://localhost:8080/k8s/clusters/c-somerancherID/api/v1', rest_client.url.to_s)
97
- end
98
-
99
- def test_rancher_with_api_path_in_uri_trailing_slash
100
- client = Kubeclient::Client.new('http://localhost:8080/k8s/clusters/c-somerancherID/api/', 'v1')
101
- rest_client = client.rest_client
102
- assert_equal('v1', client.instance_variable_get(:@api_version))
103
- assert_equal('', client.instance_variable_get(:@api_group))
104
- assert_equal('http://localhost:8080/k8s/clusters/c-somerancherID/api/v1', rest_client.url.to_s)
105
- end
106
-
107
- def test_rancher_with_api_group_in_uri_trailing_slash
108
- client = Kubeclient::Client.new(
109
- 'http://localhost:8080/k8s/clusters/c-somerancherID/apis/this_is_the_group',
110
- 'v1'
111
- )
112
- rest_client = client.rest_client
113
- assert_equal('v1', client.instance_variable_get(:@api_version))
114
- assert_equal('this_is_the_group/', client.instance_variable_get(:@api_group))
115
- assert_equal(
116
- 'http://localhost:8080/k8s/clusters/c-somerancherID/apis/this_is_the_group/v1',
117
- rest_client.url.to_s
118
- )
119
- end
120
-
121
- def test_with_openshift_api_path_in_uri
122
- client = Kubeclient::Client.new('http://localhost:8080/oapi', 'v1')
123
- rest_client = client.rest_client
124
- assert_equal('v1', client.instance_variable_get(:@api_version))
125
- assert_equal('', client.instance_variable_get(:@api_group))
126
- assert_equal('http://localhost:8080/oapi/v1', rest_client.url.to_s)
127
- end
128
-
129
- def test_arbitrary_path_with_openshift_api_path_in_uri
130
- client = Kubeclient::Client.new('http://localhost:8080/foobarbaz/oapi', 'v1')
131
- rest_client = client.rest_client
132
- assert_equal('v1', client.instance_variable_get(:@api_version))
133
- assert_equal('', client.instance_variable_get(:@api_group))
134
- assert_equal('http://localhost:8080/foobarbaz/oapi/v1', rest_client.url.to_s)
135
- end
136
-
137
- def test_with_openshift_api_path_in_uri_trailing_slash
138
- client = Kubeclient::Client.new('http://localhost:8080/oapi/', 'v1')
139
- rest_client = client.rest_client
140
- assert_equal('v1', client.instance_variable_get(:@api_version))
141
- assert_equal('', client.instance_variable_get(:@api_group))
142
- assert_equal('http://localhost:8080/oapi/v1', rest_client.url.to_s)
143
- end
144
-
145
- def test_with_arbitrary_path_in_uri
146
- client = Kubeclient::Client.new('http://localhost:8080/foobarbaz', 'v1')
147
- rest_client = client.rest_client
148
- assert_equal('v1', client.instance_variable_get(:@api_version))
149
- assert_equal('', client.instance_variable_get(:@api_group))
150
- assert_equal('http://localhost:8080/foobarbaz/api/v1', rest_client.url.to_s)
151
- end
152
-
153
- def test_with_arbitrary_and_api_path_in_uri
154
- client = Kubeclient::Client.new('http://localhost:8080/foobarbaz/api', 'v1')
155
- rest_client = client.rest_client
156
- assert_equal('v1', client.instance_variable_get(:@api_version))
157
- assert_equal('', client.instance_variable_get(:@api_group))
158
- assert_equal('http://localhost:8080/foobarbaz/api/v1', rest_client.url.to_s)
159
- end
160
- end
@@ -1,29 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # ComponentStatus tests
4
- class TestComponentStatus < MiniTest::Test
5
- def test_get_from_json_v3
6
- stub_core_api_list
7
- stub_request(:get, %r{/componentstatuses})
8
- .to_return(body: open_test_file('component_status.json'), status: 200)
9
-
10
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
11
- component_status = client.get_component_status('etcd-0', 'default')
12
-
13
- assert_instance_of(Kubeclient::Resource, component_status)
14
- assert_equal('etcd-0', component_status.metadata.name)
15
- assert_equal('Healthy', component_status.conditions[0].type)
16
- assert_equal('True', component_status.conditions[0].status)
17
-
18
- assert_requested(
19
- :get,
20
- 'http://localhost:8080/api/v1',
21
- times: 1
22
- )
23
- assert_requested(
24
- :get,
25
- 'http://localhost:8080/api/v1/namespaces/default/componentstatuses/etcd-0',
26
- times: 1
27
- )
28
- end
29
- end
data/test/test_config.rb DELETED
@@ -1,222 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'yaml'
3
- require 'open3'
4
-
5
- # Testing Kubernetes client configuration
6
- class KubeclientConfigTest < MiniTest::Test
7
- def test_allinone
8
- config = Kubeclient::Config.read(config_file('allinone.kubeconfig'))
9
- assert_equal(['default/localhost:8443/system:admin'], config.contexts)
10
- check_context(config.context, ssl: true)
11
- end
12
-
13
- def test_external
14
- config = Kubeclient::Config.read(config_file('external.kubeconfig'))
15
- assert_equal(['default/localhost:8443/system:admin'], config.contexts)
16
- check_context(config.context, ssl: true)
17
- end
18
-
19
- def test_allinone_nopath
20
- yaml = File.read(config_file('allinone.kubeconfig'))
21
- # A self-contained config shouldn't depend on kcfg_path.
22
- config = Kubeclient::Config.new(YAML.safe_load(yaml), nil)
23
- assert_equal(['default/localhost:8443/system:admin'], config.contexts)
24
- check_context(config.context, ssl: true)
25
- end
26
-
27
- def test_external_nopath
28
- yaml = File.read(config_file('external.kubeconfig'))
29
- # kcfg_path = nil should prevent file access
30
- config = Kubeclient::Config.new(YAML.safe_load(yaml), nil)
31
- assert_raises(StandardError) do
32
- config.context
33
- end
34
- end
35
-
36
- def test_external_nopath_absolute
37
- yaml = File.read(config_file('external.kubeconfig'))
38
- # kcfg_path = nil should prevent file access, even if absolute path specified
39
- ca_absolute_path = File.absolute_path(config_file('external-'))
40
- yaml = yaml.gsub('external-', ca_absolute_path)
41
- config = Kubeclient::Config.new(YAML.safe_load(yaml), nil)
42
- assert_raises(StandardError) do
43
- config.context
44
- end
45
- end
46
-
47
- def test_nouser
48
- config = Kubeclient::Config.read(config_file('nouser.kubeconfig'))
49
- assert_equal(['default/localhost:8443/nouser'], config.contexts)
50
- check_context(config.context, ssl: false)
51
- end
52
-
53
- def test_user_token
54
- config = Kubeclient::Config.read(config_file('userauth.kubeconfig'))
55
- assert_equal(['localhost/system:admin:token', 'localhost/system:admin:userpass'],
56
- config.contexts)
57
- context = config.context('localhost/system:admin:token')
58
- check_context(context, ssl: false)
59
- assert_equal('0123456789ABCDEF0123456789ABCDEF', context.auth_options[:bearer_token])
60
- end
61
-
62
- def test_user_password
63
- config = Kubeclient::Config.read(config_file('userauth.kubeconfig'))
64
- assert_equal(['localhost/system:admin:token', 'localhost/system:admin:userpass'],
65
- config.contexts)
66
- context = config.context('localhost/system:admin:userpass')
67
- check_context(context, ssl: false)
68
- assert_equal('admin', context.auth_options[:username])
69
- assert_equal('pAssw0rd123', context.auth_options[:password])
70
- end
71
-
72
- def test_timestamps
73
- # Test YAML parsing doesn't crash on YAML timestamp syntax.
74
- Kubeclient::Config.read(config_file('timestamps.kubeconfig'))
75
- end
76
-
77
- def test_user_exec
78
- token = '0123456789ABCDEF0123456789ABCDEF'
79
- creds = {
80
- 'apiVersion': 'client.authentication.k8s.io/v1beta1',
81
- 'status': {
82
- 'token': token
83
- }
84
- }
85
-
86
- config = Kubeclient::Config.read(config_file('execauth.kubeconfig'))
87
- assert_equal(['localhost/system:admin:exec-search-path',
88
- 'localhost/system:admin:exec-relative-path',
89
- 'localhost/system:admin:exec-absolute-path'],
90
- config.contexts)
91
-
92
- # A bare command name in config means search PATH, so it's executed as bare command.
93
- stub_exec(%r{^example-exec-plugin$}, creds) do
94
- context = config.context('localhost/system:admin:exec-search-path')
95
- check_context(context, ssl: false)
96
- assert_equal(token, context.auth_options[:bearer_token])
97
- end
98
-
99
- # A relative path is taken relative to the dir of the kubeconfig.
100
- stub_exec(%r{.*config/dir/example-exec-plugin$}, creds) do
101
- context = config.context('localhost/system:admin:exec-relative-path')
102
- check_context(context, ssl: false)
103
- assert_equal(token, context.auth_options[:bearer_token])
104
- end
105
-
106
- # An absolute path is taken as-is.
107
- stub_exec(%r{^/abs/path/example-exec-plugin$}, creds) do
108
- context = config.context('localhost/system:admin:exec-absolute-path')
109
- check_context(context, ssl: false)
110
- assert_equal(token, context.auth_options[:bearer_token])
111
- end
112
- end
113
-
114
- def test_user_exec_nopath
115
- yaml = File.read(config_file('execauth.kubeconfig'))
116
- config = Kubeclient::Config.new(YAML.safe_load(yaml), nil)
117
- config.contexts.each do |context_name|
118
- Open3.stub(:capture3, proc { flunk 'should not execute command' }) do
119
- assert_raises(StandardError) do
120
- config.context(context_name)
121
- end
122
- end
123
- end
124
- end
125
-
126
- def test_gcp_default_auth
127
- Kubeclient::GoogleApplicationDefaultCredentials.expects(:token).returns('token1').once
128
- parsed = YAML.safe_load(File.read(config_file('gcpauth.kubeconfig')), [Date, Time])
129
- config = Kubeclient::Config.new(parsed, nil)
130
- config.context(config.contexts.first)
131
- end
132
-
133
- # Each call to .context() obtains a new token, calling .auth_options doesn't change anything.
134
- # NOTE: this is not a guarantee, may change, just testing current behavior.
135
- def test_gcp_default_auth_renew
136
- Kubeclient::GoogleApplicationDefaultCredentials.expects(:token).returns('token1').once
137
- parsed = YAML.safe_load(File.read(config_file('gcpauth.kubeconfig')), [Date, Time])
138
- config = Kubeclient::Config.new(parsed, nil)
139
- context = config.context(config.contexts.first)
140
- assert_equal({ bearer_token: 'token1' }, context.auth_options)
141
- assert_equal({ bearer_token: 'token1' }, context.auth_options)
142
-
143
- Kubeclient::GoogleApplicationDefaultCredentials.expects(:token).returns('token2').once
144
- context2 = config.context(config.contexts.first)
145
- assert_equal({ bearer_token: 'token2' }, context2.auth_options)
146
- assert_equal({ bearer_token: 'token1' }, context.auth_options)
147
- end
148
-
149
- def test_gcp_command_auth
150
- Kubeclient::GCPCommandCredentials.expects(:token)
151
- .with('access-token' => '<fake_token>',
152
- 'cmd-args' => 'config config-helper --format=json',
153
- 'cmd-path' => '/path/to/gcloud',
154
- 'expiry' => '2019-04-09 19:26:18 UTC',
155
- 'expiry-key' => '{.credential.token_expiry}',
156
- 'token-key' => '{.credential.access_token}')
157
- .returns('token1')
158
- .once
159
- config = Kubeclient::Config.read(config_file('gcpcmdauth.kubeconfig'))
160
- config.context(config.contexts.first)
161
- end
162
-
163
- def test_oidc_auth_provider
164
- Kubeclient::OIDCAuthProvider.expects(:token)
165
- .with('client-id' => 'fake-client-id',
166
- 'client-secret' => 'fake-client-secret',
167
- 'id-token' => 'fake-id-token',
168
- 'idp-issuer-url' => 'https://accounts.google.com',
169
- 'refresh-token' => 'fake-refresh-token')
170
- .returns('token1')
171
- .once
172
- parsed = YAML.safe_load(File.read(config_file('oidcauth.kubeconfig')))
173
- config = Kubeclient::Config.new(parsed, nil)
174
- config.context(config.contexts.first)
175
- end
176
-
177
- private
178
-
179
- def check_context(context, ssl: true)
180
- assert_equal('https://localhost:8443', context.api_endpoint)
181
- assert_equal('v1', context.api_version)
182
- assert_equal('default', context.namespace)
183
- if ssl
184
- assert_equal(OpenSSL::SSL::VERIFY_PEER, context.ssl_options[:verify_ssl])
185
- assert_kind_of(OpenSSL::X509::Store, context.ssl_options[:cert_store])
186
- assert_kind_of(OpenSSL::X509::Certificate, context.ssl_options[:client_cert])
187
- assert_kind_of(OpenSSL::PKey::RSA, context.ssl_options[:client_key])
188
- # When certificates expire the quickest way to recreate them is using
189
- # an OpenShift tool (100% compatible with kubernetes):
190
- #
191
- # $ oc adm ca create-master-certs --hostnames=localhost
192
- #
193
- # At the time of this writing the files to be updated are:
194
- #
195
- # cp openshift.local.config/master/admin.kubeconfig test/config/allinone.kubeconfig
196
- # cp openshift.local.config/master/ca.crt test/config/external-ca.pem
197
- # cp openshift.local.config/master/admin.crt test/config/external-cert.pem
198
- # cp openshift.local.config/master/admin.key test/config/external-key.rsa
199
- assert(context.ssl_options[:cert_store].verify(context.ssl_options[:client_cert]))
200
- else
201
- assert_equal(OpenSSL::SSL::VERIFY_NONE, context.ssl_options[:verify_ssl])
202
- end
203
- end
204
-
205
- def config_file(name)
206
- File.join(File.dirname(__FILE__), 'config', name)
207
- end
208
-
209
- def stub_exec(command_regexp, creds)
210
- st = Minitest::Mock.new
211
- st.expect(:success?, true)
212
-
213
- capture3_stub = lambda do |_env, command, *_args|
214
- assert_match command_regexp, command
215
- [JSON.dump(creds), nil, st]
216
- end
217
-
218
- Open3.stub(:capture3, capture3_stub) do
219
- yield
220
- end
221
- end
222
- end
@@ -1,54 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # kind: 'Endpoints' entity tests.
4
- # This is one of the unusual `kind`s that are already plural (https://github.com/kubernetes/kubernetes/issues/8115).
5
- # We force singular in method names like 'create_endpoint',
6
- # but `kind` should remain plural as in kubernetes.
7
- class TestEndpoint < MiniTest::Test
8
- def test_create_endpoint
9
- stub_core_api_list
10
- testing_ep = Kubeclient::Resource.new
11
- testing_ep.metadata = {}
12
- testing_ep.metadata.name = 'myendpoint'
13
- testing_ep.metadata.namespace = 'default'
14
- testing_ep.subsets = [
15
- {
16
- 'addresses' => [{ 'ip' => '172.17.0.25' }],
17
- 'ports' => [{ 'name' => 'https', 'port' => 6443, 'protocol' => 'TCP' }]
18
- }
19
- ]
20
-
21
- req_body = '{"metadata":{"name":"myendpoint","namespace":"default"},' \
22
- '"subsets":[{"addresses":[{"ip":"172.17.0.25"}],"ports":[{"name":"https",' \
23
- '"port":6443,"protocol":"TCP"}]}],"kind":"Endpoints","apiVersion":"v1"}'
24
-
25
- stub_request(:post, 'http://localhost:8080/api/v1/namespaces/default/endpoints')
26
- .with(body: req_body)
27
- .to_return(body: open_test_file('created_endpoint.json'), status: 201)
28
-
29
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
30
- created_ep = client.create_endpoint(testing_ep)
31
- assert_equal('Endpoints', created_ep.kind)
32
- assert_equal('v1', created_ep.apiVersion)
33
-
34
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1', as: :parsed_symbolized)
35
- created_ep = client.create_endpoint(testing_ep)
36
- assert_equal('Endpoints', created_ep[:kind])
37
- assert_equal('v1', created_ep[:apiVersion])
38
- end
39
-
40
- def test_get_endpoints
41
- stub_core_api_list
42
- stub_request(:get, %r{/endpoints})
43
- .to_return(body: open_test_file('endpoint_list.json'), status: 200)
44
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
45
-
46
- collection = client.get_endpoints(as: :parsed_symbolized)
47
- assert_equal('EndpointsList', collection[:kind])
48
- assert_equal('v1', collection[:apiVersion])
49
-
50
- # Stripping of 'List' in collection.kind RecursiveOpenStruct mode only is historic.
51
- collection = client.get_endpoints
52
- assert_equal('Endpoints', collection.kind)
53
- end
54
- end