kubeclient 4.9.0 → 4.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/actions.yml +42 -0
  3. data/CHANGELOG.md +54 -0
  4. data/README.md +7 -0
  5. data/kubeclient.gemspec +4 -2
  6. data/lib/kubeclient/common.rb +18 -6
  7. data/lib/kubeclient/config.rb +22 -10
  8. data/lib/kubeclient/version.rb +1 -1
  9. metadata +22 -212
  10. data/.travis.yml +0 -29
  11. data/test/cassettes/kubernetes_guestbook.yml +0 -879
  12. data/test/config/allinone.kubeconfig +0 -20
  13. data/test/config/execauth.kubeconfig +0 -62
  14. data/test/config/external-ca.pem +0 -18
  15. data/test/config/external-cert.pem +0 -19
  16. data/test/config/external-key.rsa +0 -27
  17. data/test/config/external.kubeconfig +0 -20
  18. data/test/config/gcpauth.kubeconfig +0 -22
  19. data/test/config/gcpcmdauth.kubeconfig +0 -26
  20. data/test/config/nouser.kubeconfig +0 -16
  21. data/test/config/oidcauth.kubeconfig +0 -25
  22. data/test/config/timestamps.kubeconfig +0 -25
  23. data/test/config/userauth.kubeconfig +0 -28
  24. data/test/json/bindings_list.json +0 -10
  25. data/test/json/component_status.json +0 -17
  26. data/test/json/component_status_list.json +0 -52
  27. data/test/json/config.istio.io_api_resource_list.json +0 -679
  28. data/test/json/config_map_list.json +0 -9
  29. data/test/json/core_api_resource_list.json +0 -181
  30. data/test/json/core_api_resource_list_without_kind.json +0 -129
  31. data/test/json/core_oapi_resource_list_without_kind.json +0 -197
  32. data/test/json/created_endpoint.json +0 -28
  33. data/test/json/created_namespace.json +0 -20
  34. data/test/json/created_secret.json +0 -16
  35. data/test/json/created_security_context_constraint.json +0 -65
  36. data/test/json/created_service.json +0 -31
  37. data/test/json/empty_pod_list.json +0 -9
  38. data/test/json/endpoint_list.json +0 -48
  39. data/test/json/entity_list.json +0 -56
  40. data/test/json/event_list.json +0 -35
  41. data/test/json/extensions_v1beta1_api_resource_list.json +0 -217
  42. data/test/json/limit_range.json +0 -23
  43. data/test/json/limit_range_list.json +0 -31
  44. data/test/json/namespace.json +0 -13
  45. data/test/json/namespace_exception.json +0 -8
  46. data/test/json/namespace_list.json +0 -32
  47. data/test/json/node.json +0 -29
  48. data/test/json/node_list.json +0 -37
  49. data/test/json/node_notice.json +0 -160
  50. data/test/json/persistent_volume.json +0 -37
  51. data/test/json/persistent_volume_claim.json +0 -32
  52. data/test/json/persistent_volume_claim_list.json +0 -40
  53. data/test/json/persistent_volume_claims_nil_items.json +0 -8
  54. data/test/json/persistent_volume_list.json +0 -45
  55. data/test/json/pod.json +0 -92
  56. data/test/json/pod_list.json +0 -79
  57. data/test/json/pod_template_list.json +0 -9
  58. data/test/json/pods_1.json +0 -265
  59. data/test/json/pods_2.json +0 -102
  60. data/test/json/pods_410.json +0 -9
  61. data/test/json/processed_template.json +0 -27
  62. data/test/json/replication_controller.json +0 -57
  63. data/test/json/replication_controller_list.json +0 -66
  64. data/test/json/resource_quota.json +0 -46
  65. data/test/json/resource_quota_list.json +0 -54
  66. data/test/json/secret_list.json +0 -44
  67. data/test/json/security.openshift.io_api_resource_list.json +0 -69
  68. data/test/json/security_context_constraint_list.json +0 -375
  69. data/test/json/service.json +0 -33
  70. data/test/json/service_account.json +0 -25
  71. data/test/json/service_account_list.json +0 -82
  72. data/test/json/service_illegal_json_404.json +0 -1
  73. data/test/json/service_json_patch.json +0 -26
  74. data/test/json/service_list.json +0 -97
  75. data/test/json/service_merge_patch.json +0 -26
  76. data/test/json/service_patch.json +0 -25
  77. data/test/json/service_update.json +0 -22
  78. data/test/json/template.json +0 -27
  79. data/test/json/template.openshift.io_api_resource_list.json +0 -75
  80. data/test/json/template_list.json +0 -35
  81. data/test/json/versions_list.json +0 -6
  82. data/test/json/watch_stream.json +0 -3
  83. data/test/test_common.rb +0 -95
  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,25 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # LimitRange tests
4
- class TestLimitRange < MiniTest::Test
5
- def test_get_from_json_v1
6
- stub_core_api_list
7
- stub_request(:get, %r{/limitranges})
8
- .to_return(body: open_test_file('limit_range.json'), status: 200)
9
-
10
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
11
- limit_range = client.get_limit_range('limits', 'quota-example')
12
-
13
- assert_instance_of(Kubeclient::Resource, limit_range)
14
- assert_equal('limits', limit_range.metadata.name)
15
- assert_equal('Container', limit_range.spec.limits[0].type)
16
- assert_equal('100m', limit_range.spec.limits[0].default.cpu)
17
- assert_equal('512Mi', limit_range.spec.limits[0].default.memory)
18
-
19
- assert_requested(
20
- :get,
21
- 'http://localhost:8080/api/v1/namespaces/quota-example/limitranges/limits',
22
- times: 1
23
- )
24
- end
25
- end
@@ -1,80 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Test method_missing, respond_to? and respond_to_missing behaviour
4
- class TestMissingMethods < MiniTest::Test
5
- def test_missing
6
- stub_core_api_list
7
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
8
- assert_equal(true, client.respond_to?(:get_pod))
9
- assert_equal(true, client.respond_to?(:get_pods))
10
- assert_equal(false, client.respond_to?(:get_pie))
11
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1') # Reset discovery
12
- assert_equal(false, client.respond_to?(:get_pie))
13
- assert_equal(true, client.respond_to?(:get_pods))
14
- assert_equal(true, client.respond_to?(:get_pod))
15
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1') # Reset discovery
16
- assert_instance_of(Method, client.method(:get_pods))
17
- assert_raises(NameError) do
18
- client.method(:get_pies)
19
- end
20
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1') # Reset discovery
21
- assert_raises(NameError) do
22
- client.method(:get_pies)
23
- end
24
- assert_instance_of(Method, client.method(:get_pods))
25
-
26
- stub_request(:get, %r{/api/v1$}).to_return(
27
- body: '',
28
- status: 404
29
- ) # If discovery fails we expect the below raise an exception
30
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
31
- assert_raises(Kubeclient::HttpError) do
32
- client.discover
33
- end
34
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
35
- assert_raises(Kubeclient::HttpError) do
36
- client.method(:get_pods)
37
- end
38
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
39
- assert_raises(Kubeclient::HttpError) do
40
- client.respond_to?(:get_pods)
41
- end
42
- end
43
-
44
- def test_nonsuffix_plurals
45
- stub_request(:get, %r{/apis/extensions/v1beta1$}).to_return(
46
- body: open_test_file('extensions_v1beta1_api_resource_list.json'),
47
- status: 200
48
- )
49
- client = Kubeclient::Client.new('http://localhost:8080/apis/extensions', 'v1beta1')
50
- assert_equal(true, client.respond_to?(:get_network_policy))
51
- assert_equal(true, client.respond_to?(:get_network_policies))
52
- assert_equal(true, client.respond_to?(:get_pod_security_policy))
53
- assert_equal(true, client.respond_to?(:get_pod_security_policies))
54
- end
55
-
56
- def test_irregular_names
57
- stub_core_api_list
58
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
59
- assert_equal(true, client.respond_to?(:get_endpoint))
60
- assert_equal(true, client.respond_to?(:get_endpoints))
61
-
62
- stub_request(:get, %r{/apis/security.openshift.io/v1$}).to_return(
63
- body: open_test_file('security.openshift.io_api_resource_list.json'),
64
- status: 200
65
- )
66
- client = Kubeclient::Client.new('http://localhost:8080/apis/security.openshift.io', 'v1')
67
- assert_equal(true, client.respond_to?(:get_security_context_constraint))
68
- assert_equal(true, client.respond_to?(:get_security_context_constraints))
69
- end
70
-
71
- def test_lowercase_kind
72
- stub_request(:get, %r{/apis/config.istio.io/v1alpha2$}).to_return(
73
- body: open_test_file('config.istio.io_api_resource_list.json'),
74
- status: 200
75
- )
76
- client = Kubeclient::Client.new('http://localhost:8080/apis/config.istio.io', 'v1alpha2')
77
- assert_equal(true, client.respond_to?(:get_servicecontrolreport))
78
- assert_equal(true, client.respond_to?(:get_servicecontrolreports))
79
- end
80
- end
@@ -1,59 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Namespace entity tests
4
- class TestNamespace < MiniTest::Test
5
- def test_get_namespace_v1
6
- stub_core_api_list
7
- stub_request(:get, %r{/namespaces})
8
- .to_return(body: open_test_file('namespace.json'), status: 200)
9
-
10
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
11
- namespace = client.get_namespace('staging')
12
-
13
- assert_instance_of(Kubeclient::Resource, namespace)
14
- assert_equal('e388bc10-c021-11e4-a514-3c970e4a436a', namespace.metadata.uid)
15
- assert_equal('staging', namespace.metadata.name)
16
- assert_equal('1168', namespace.metadata.resourceVersion)
17
- assert_equal('v1', namespace.apiVersion)
18
-
19
- assert_requested(
20
- :get,
21
- 'http://localhost:8080/api/v1/namespaces/staging',
22
- times: 1
23
- )
24
- end
25
-
26
- def test_delete_namespace_v1
27
- our_namespace = Kubeclient::Resource.new
28
- our_namespace.metadata = {}
29
- our_namespace.metadata.name = 'staging'
30
-
31
- stub_core_api_list
32
- stub_request(:delete, %r{/namespaces})
33
- .to_return(body: open_test_file('namespace.json'), status: 200)
34
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
35
- our_namespace = client.delete_namespace(our_namespace.metadata.name)
36
- assert_kind_of(RecursiveOpenStruct, our_namespace)
37
-
38
- assert_requested(
39
- :delete,
40
- 'http://localhost:8080/api/v1/namespaces/staging',
41
- times: 1
42
- )
43
- end
44
-
45
- def test_create_namespace
46
- stub_core_api_list
47
- stub_request(:post, %r{/namespaces})
48
- .to_return(body: open_test_file('created_namespace.json'), status: 201)
49
-
50
- namespace = Kubeclient::Resource.new
51
- namespace.metadata = {}
52
- namespace.metadata.name = 'development'
53
-
54
- client = Kubeclient::Client.new('http://localhost:8080/api/')
55
- created_namespace = client.create_namespace(namespace)
56
- assert_instance_of(Kubeclient::Resource, created_namespace)
57
- assert_equal(namespace.metadata.name, created_namespace.metadata.name)
58
- end
59
- end
data/test/test_node.rb DELETED
@@ -1,70 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Node entity tests
4
- class TestNode < MiniTest::Test
5
- def test_get_from_json_v1
6
- stub_core_api_list
7
- stub_request(:get, %r{/nodes})
8
- .to_return(body: open_test_file('node.json'), status: 200)
9
-
10
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
11
- node = client.get_node('127.0.0.1')
12
-
13
- assert_instance_of(Kubeclient::Resource, node)
14
-
15
- assert_equal('041143c5-ce39-11e4-ac24-3c970e4a436a', node.metadata.uid)
16
- assert_equal('127.0.0.1', node.metadata.name)
17
- assert_equal('1724', node.metadata.resourceVersion)
18
- assert_equal('v1', node.apiVersion)
19
- assert_equal('2015-03-19T15:08:20+02:00', node.metadata.creationTimestamp)
20
-
21
- assert_requested(
22
- :get,
23
- 'http://localhost:8080/api/v1',
24
- times: 1
25
- )
26
- assert_requested(
27
- :get,
28
- 'http://localhost:8080/api/v1/nodes/127.0.0.1',
29
- times: 1
30
- )
31
- end
32
-
33
- def test_get_from_json_v1_raw
34
- stub_core_api_list
35
- stub_request(:get, %r{/nodes})
36
- .to_return(body: open_test_file('node.json'), status: 200)
37
-
38
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
39
- response = client.get_node('127.0.0.1', nil, as: :raw)
40
-
41
- assert_equal(open_test_file('node.json').read, response)
42
-
43
- assert_requested(
44
- :get,
45
- 'http://localhost:8080/api/v1',
46
- times: 1
47
- )
48
- assert_requested(
49
- :get,
50
- 'http://localhost:8080/api/v1/nodes/127.0.0.1',
51
- times: 1
52
- )
53
- end
54
-
55
- def test_get_from_json_v1_raw_error
56
- stub_request(:get, %r{/nodes})
57
- .to_return(body: open_test_file('node.json'), status: 200)
58
- stub_request(:get, %r{/api/v1$})
59
- .to_return(body: open_test_file('core_api_resource_list.json'), status: 500)
60
-
61
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
62
-
63
- exception = assert_raises(Kubeclient::HttpError) do
64
- client.get_node('127.0.0.1', nil, as: :raw)
65
- end
66
-
67
- assert_instance_of(Kubeclient::HttpError, exception)
68
- assert_equal('500 Internal Server Error', exception.message)
69
- end
70
- end
@@ -1,103 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'openid_connect'
3
-
4
- class OIDCAuthProviderTest < MiniTest::Test
5
- def setup
6
- @client_id = 'client_id'
7
- @client_secret = 'client_secret'
8
- @idp_issuer_url = 'idp_issuer_url'
9
- @refresh_token = 'refresh_token'
10
- @id_token = 'id_token'
11
- @new_id_token = 'new_id_token'
12
- end
13
-
14
- def test_expired_token
15
- OpenIDConnect::Discovery::Provider::Config.stub(:discover!, discovery_mock) do
16
- OpenIDConnect::ResponseObject::IdToken.stub(:decode, id_token_mock(Time.now.to_i - 7200)) do
17
- OpenIDConnect::Client.stub(:new, openid_client_mock) do
18
- retrieved_id_token = Kubeclient::OIDCAuthProvider.token(
19
- 'client-id' => @client_id,
20
- 'client-secret' => @client_secret,
21
- 'id-token' => @id_token,
22
- 'idp-issuer-url' => @idp_issuer_url,
23
- 'refresh-token' => @refresh_token
24
- )
25
- assert_equal(@new_id_token, retrieved_id_token)
26
- end
27
- end
28
- end
29
- end
30
-
31
- def test_valid_token
32
- OpenIDConnect::Discovery::Provider::Config.stub(:discover!, discovery_mock) do
33
- OpenIDConnect::ResponseObject::IdToken.stub(:decode, id_token_mock(Time.now.to_i + 7200)) do
34
- retrieved_id_token = Kubeclient::OIDCAuthProvider.token(
35
- 'client-id' => @client_id,
36
- 'client-secret' => @client_secret,
37
- 'id-token' => @id_token,
38
- 'idp-issuer-url' => @idp_issuer_url,
39
- 'refresh-token' => @refresh_token
40
- )
41
- assert_equal(@id_token, retrieved_id_token)
42
- end
43
- end
44
- end
45
-
46
- def test_missing_id_token
47
- OpenIDConnect::Discovery::Provider::Config.stub(:discover!, discovery_mock) do
48
- OpenIDConnect::Client.stub(:new, openid_client_mock) do
49
- retrieved_id_token = Kubeclient::OIDCAuthProvider.token(
50
- 'client-id' => @client_id,
51
- 'client-secret' => @client_secret,
52
- 'idp-issuer-url' => @idp_issuer_url,
53
- 'refresh-token' => @refresh_token
54
- )
55
- assert_equal(@new_id_token, retrieved_id_token)
56
- end
57
- end
58
- end
59
-
60
- def test_token_with_unknown_kid
61
- OpenIDConnect::Discovery::Provider::Config.stub(:discover!, discovery_mock) do
62
- OpenIDConnect::ResponseObject::IdToken.stub(
63
- :decode, ->(_token, _jwks) { raise JSON::JWK::Set::KidNotFound }
64
- ) do
65
- OpenIDConnect::Client.stub(:new, openid_client_mock) do
66
- retrieved_id_token = Kubeclient::OIDCAuthProvider.token(
67
- 'client-id' => @client_id,
68
- 'client-secret' => @client_secret,
69
- 'id-token' => @id_token,
70
- 'idp-issuer-url' => @idp_issuer_url,
71
- 'refresh-token' => @refresh_token
72
- )
73
- assert_equal(@new_id_token, retrieved_id_token)
74
- end
75
- end
76
- end
77
- end
78
-
79
- private
80
-
81
- def openid_client_mock
82
- access_token = Minitest::Mock.new
83
- access_token.expect(@id_token, @new_id_token)
84
-
85
- openid_client = Minitest::Mock.new
86
- openid_client.expect(:refresh_token=, nil, [@refresh_token])
87
- openid_client.expect(:access_token!, access_token)
88
- end
89
-
90
- def id_token_mock(expiry)
91
- id_token_mock = Minitest::Mock.new
92
- id_token_mock.expect(:exp, expiry)
93
- end
94
-
95
- def discovery_mock
96
- discovery = Minitest::Mock.new
97
- discovery.expect(:jwks, 'jwks')
98
- discovery.expect(:authorization_endpoint, 'authz_endpoint')
99
- discovery.expect(:token_endpoint, 'token_endpoint')
100
- discovery.expect(:userinfo_endpoint, 'userinfo_endpoint')
101
- discovery
102
- end
103
- end
@@ -1,29 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # PersistentVolume tests
4
- class TestPersistentVolume < MiniTest::Test
5
- def test_get_from_json_v1
6
- stub_core_api_list
7
- stub_request(:get, %r{/persistentvolumes})
8
- .to_return(body: open_test_file('persistent_volume.json'), status: 200)
9
-
10
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
11
- volume = client.get_persistent_volume('pv0001')
12
-
13
- assert_instance_of(Kubeclient::Resource, volume)
14
- assert_equal('pv0001', volume.metadata.name)
15
- assert_equal('10Gi', volume.spec.capacity.storage)
16
- assert_equal('/tmp/data01', volume.spec.hostPath.path)
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/persistentvolumes/pv0001',
26
- times: 1
27
- )
28
- end
29
- end
@@ -1,28 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # PersistentVolumeClaim tests
4
- class TestPersistentVolumeClaim < MiniTest::Test
5
- def test_get_from_json_v1
6
- stub_core_api_list
7
- stub_request(:get, %r{/persistentvolumeclaims})
8
- .to_return(body: open_test_file('persistent_volume_claim.json'), status: 200)
9
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
10
- claim = client.get_persistent_volume_claim('myclaim-1', 'default')
11
-
12
- assert_instance_of(Kubeclient::Resource, claim)
13
- assert_equal('myclaim-1', claim.metadata.name)
14
- assert_equal('3Gi', claim.spec.resources.requests.storage)
15
- assert_equal('pv0001', claim.spec.volumeName)
16
-
17
- assert_requested(
18
- :get,
19
- 'http://localhost:8080/api/v1',
20
- times: 1
21
- )
22
- assert_requested(
23
- :get,
24
- 'http://localhost:8080/api/v1/namespaces/default/persistentvolumeclaims/myclaim-1',
25
- times: 1
26
- )
27
- end
28
- end
data/test/test_pod.rb DELETED
@@ -1,81 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Pod entity tests
4
- class TestPod < MiniTest::Test
5
- def test_get_from_json_v1
6
- stub_core_api_list
7
- stub_request(:get, %r{/pods})
8
- .to_return(body: open_test_file('pod.json'), status: 200)
9
-
10
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
11
- pod = client.get_pod('redis-master-pod', 'default')
12
-
13
- assert_instance_of(Kubeclient::Resource, pod)
14
- assert_equal('redis-master3', pod.metadata.name)
15
- assert_equal('dockerfile/redis', pod.spec.containers[0]['image'])
16
-
17
- assert_requested(
18
- :get,
19
- 'http://localhost:8080/api/v1',
20
- times: 1
21
- )
22
- assert_requested(
23
- :get,
24
- 'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod',
25
- times: 1
26
- )
27
- end
28
-
29
- def test_get_chunks
30
- stub_core_api_list
31
- stub_request(:get, %r{/pods})
32
- .to_return(body: open_test_file('pods_1.json'), status: 200)
33
-
34
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
35
- pods = client.get_pods(limit: 2)
36
-
37
- assert_equal(2, pods.count)
38
- assert_equal('eyJ2IjoibWV0YS5rOHMua', pods.continue)
39
-
40
- continue = pods.continue
41
-
42
- stub_request(:get, %r{/pods})
43
- .to_return(body: open_test_file('pods_2.json'), status: 200)
44
-
45
- pods = client.get_pods(limit: 2, continue: continue)
46
- assert_equal(2, pods.count)
47
- assert_nil(pods.continue)
48
-
49
- assert_requested(
50
- :get,
51
- 'http://localhost:8080/api/v1',
52
- times: 1
53
- )
54
- assert_requested(
55
- :get,
56
- 'http://localhost:8080/api/v1/pods?limit=2',
57
- times: 1
58
- )
59
- assert_requested(
60
- :get,
61
- "http://localhost:8080/api/v1/pods?continue=#{continue}&limit=2",
62
- times: 1
63
- )
64
- end
65
-
66
- def test_get_chunks_410_gone
67
- stub_core_api_list
68
- stub_request(:get, %r{/pods})
69
- .to_return(body: open_test_file('pods_410.json'), status: 410)
70
-
71
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
72
-
73
- err = assert_raises Kubeclient::HttpError do
74
- client.get_pods(limit: 2, continue: 'eyJ2IjoibWV0YS5')
75
- end
76
-
77
- assert_equal(err.message,
78
- "The provided from parameter is too old to display a consistent list result. \
79
- You must start a new list without the from.")
80
- end
81
- end
data/test/test_pod_log.rb DELETED
@@ -1,157 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- # Pod log tests
4
- class TestPodLog < MiniTest::Test
5
- def test_get_pod_log
6
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
7
- .to_return(body: open_test_file('pod_log.txt'),
8
- status: 200)
9
-
10
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
11
- retrieved_log = client.get_pod_log('redis-master-pod', 'default')
12
-
13
- assert_equal(open_test_file('pod_log.txt').read, retrieved_log)
14
-
15
- assert_requested(:get,
16
- 'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log',
17
- times: 1)
18
- end
19
-
20
- def test_get_pod_log_container
21
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
22
- .to_return(body: open_test_file('pod_log.txt'),
23
- status: 200)
24
-
25
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
26
- retrieved_log = client.get_pod_log('redis-master-pod', 'default', container: 'ruby')
27
-
28
- assert_equal(open_test_file('pod_log.txt').read, retrieved_log)
29
-
30
- assert_requested(:get,
31
- 'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?container=ruby',
32
- times: 1)
33
- end
34
-
35
- def test_get_pod_log_since_time
36
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
37
- .to_return(body: open_test_file('pod_log.txt'),
38
- status: 200)
39
-
40
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
41
- retrieved_log = client.get_pod_log('redis-master-pod',
42
- 'default',
43
- timestamps: true,
44
- since_time: '2018-04-27T18:30:17.480321984Z')
45
-
46
- assert_equal(open_test_file('pod_log.txt').read, retrieved_log)
47
-
48
- assert_requested(:get,
49
- 'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?sinceTime=2018-04-27T18:30:17.480321984Z&timestamps=true',
50
- times: 1)
51
- end
52
-
53
- def test_get_pod_log_tail_lines
54
- selected_lines = open_test_file('pod_log.txt').to_a[-2..1].join
55
-
56
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
57
- .to_return(body: selected_lines,
58
- status: 200)
59
-
60
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
61
- retrieved_log = client.get_pod_log('redis-master-pod',
62
- 'default',
63
- tail_lines: 2)
64
-
65
- assert_equal(selected_lines, retrieved_log)
66
-
67
- assert_requested(:get,
68
- 'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?tailLines=2',
69
- times: 1)
70
- end
71
-
72
- def test_get_pod_limit_bytes
73
- selected_bytes = open_test_file('pod_log.txt').read(10)
74
-
75
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
76
- .to_return(body: selected_bytes,
77
- status: 200)
78
-
79
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
80
- retrieved_log = client.get_pod_log('redis-master-pod',
81
- 'default',
82
- limit_bytes: 10)
83
-
84
- assert_equal(selected_bytes, retrieved_log)
85
-
86
- assert_requested(:get,
87
- 'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?limitBytes=10',
88
- times: 1)
89
- end
90
-
91
- def test_watch_pod_log
92
- file = open_test_file('pod_log.txt')
93
- expected_lines = file.read.split("\n")
94
-
95
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
96
- .to_return(body: file, status: 200)
97
-
98
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
99
-
100
- stream = client.watch_pod_log('redis-master-pod', 'default')
101
- stream.to_enum.with_index do |notice, index|
102
- assert_instance_of(String, notice)
103
- assert_equal(expected_lines[index], notice)
104
- end
105
- end
106
-
107
- def test_watch_pod_log_with_block
108
- file = open_test_file('pod_log.txt')
109
- first = file.readlines.first.chomp
110
-
111
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
112
- .to_return(body: file, status: 200)
113
-
114
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
115
-
116
- client.watch_pod_log('redis-master-pod', 'default') do |line|
117
- assert_equal first, line
118
- break
119
- end
120
- end
121
-
122
- def test_watch_pod_log_follow_redirect
123
- expected_lines = open_test_file('pod_log.txt').read.split("\n")
124
- redirect = 'http://localhost:1234/api/namespaces/default/pods/redis-master-pod/log'
125
-
126
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
127
- .to_return(status: 302, headers: { location: redirect })
128
-
129
- stub_request(:get, redirect)
130
- .to_return(body: open_test_file('pod_log.txt'),
131
- status: 200)
132
-
133
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
134
- stream = client.watch_pod_log('redis-master-pod', 'default')
135
- stream.to_enum.with_index do |notice, index|
136
- assert_instance_of(String, notice)
137
- assert_equal(expected_lines[index], notice)
138
- end
139
- end
140
-
141
- def test_watch_pod_log_max_redirect
142
- redirect = 'http://localhost:1234/api/namespaces/default/pods/redis-master-pod/log'
143
-
144
- stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
145
- .to_return(status: 302, headers: { location: redirect })
146
-
147
- stub_request(:get, redirect)
148
- .to_return(body: open_test_file('pod_log.txt'),
149
- status: 200)
150
-
151
- client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1', http_max_redirects: 0)
152
- assert_raises(Kubeclient::HttpError) do
153
- client.watch_pod_log('redis-master-pod', 'default').each do
154
- end
155
- end
156
- end
157
- end