diff --git a/kubernetes/spec/config/kube_config_spec.rb b/kubernetes/spec/config/kube_config_spec.rb index 3b307386..db35997a 100644 --- a/kubernetes/spec/config/kube_config_spec.rb +++ b/kubernetes/spec/config/kube_config_spec.rb @@ -40,6 +40,19 @@ end end + context 'if empty user context is given' do + it 'should configure non user configuration' do + expected = Kubernetes::Configuration.new do |c| + c.scheme = 'http' + c.host = 'test-host:80' + end + actual = Kubernetes::Configuration.new + + kube_config.configure(actual, 'empty_user') + expect(actual).to be_same_configuration_as(expected) + end + end + context 'if ssl context is given' do it 'should configure ssl configuration' do expected = Kubernetes::Configuration.new do |c| @@ -214,7 +227,9 @@ context '#list_context_names' do it 'should list context names' do - arr = %w[default no_user context_ssl context_insecure context_token].sort + # rubocop:disable LineLength + arr = %w[default no_user empty_user context_ssl context_insecure context_token].sort + # rubocop:enable LineLength expect(kube_config.list_context_names.sort).to eq(arr) end end diff --git a/kubernetes/spec/fixtures/config/kube_config_hash.rb b/kubernetes/spec/fixtures/config/kube_config_hash.rb index d00667ab..aacff7e9 100644 --- a/kubernetes/spec/fixtures/config/kube_config_hash.rb +++ b/kubernetes/spec/fixtures/config/kube_config_hash.rb @@ -48,6 +48,13 @@ 'cluster' => 'default' } }.freeze +TEST_CONTEXT_EMPTY_USER = { + 'name' => 'empty_user', + 'context' => { + 'cluster' => 'default', + 'user' => '' + } +}.freeze TEST_CONTEXT_SSL = { 'name' => 'context_ssl', 'context' => { @@ -164,6 +171,7 @@ 'contexts' => [ TEST_CONTEXT_DEFAULT, TEST_CONTEXT_NO_USER, + TEST_CONTEXT_EMPTY_USER, TEST_CONTEXT_SSL, TEST_CONTEXT_TOKEN, TEST_CONTEXT_INSECURE diff --git a/kubernetes/src/kubernetes/config/kube_config.rb b/kubernetes/src/kubernetes/config/kube_config.rb index d14bf083..79e543db 100644 --- a/kubernetes/src/kubernetes/config/kube_config.rb +++ b/kubernetes/src/kubernetes/config/kube_config.rb @@ -146,7 +146,9 @@ def find_context(name) if context['cluster'] context['cluster'] = find_cluster(context['cluster']) end - context['user'] = find_user(context['user']) if context['user'] + if context['user'] && !context['user'].empty? + context['user'] = find_user(context['user']) + end end end @@ -162,7 +164,7 @@ def find_by_name(list, key, name) obj = list.find { |item| item['name'] == name } raise ConfigError, "#{key}: #{name} not found" unless obj - obj[key].dup + obj[key].dup if obj[key] end end # rubocop:enable ClassLength