diff options
Diffstat (limited to 'spec/lib/gitlab/kubernetes/node_spec.rb')
-rw-r--r-- | spec/lib/gitlab/kubernetes/node_spec.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/spec/lib/gitlab/kubernetes/node_spec.rb b/spec/lib/gitlab/kubernetes/node_spec.rb new file mode 100644 index 00000000000..732bf29bc44 --- /dev/null +++ b/spec/lib/gitlab/kubernetes/node_spec.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Kubernetes::Node do + include KubernetesHelpers + + describe '#all' do + let(:cluster) { create(:cluster, :provided_by_user, :group) } + let(:expected_nodes) { [] } + + before do + stub_kubeclient_nodes_and_nodes_metrics(cluster.platform.api_url) + end + + subject { described_class.new(cluster).all } + + context 'when connection to the cluster is successful' do + let(:expected_nodes) { [kube_node.merge(kube_node_metrics)] } + + it { is_expected.to eq(expected_nodes) } + end + + context 'when cluster cannot be reached' do + before do + allow(cluster.kubeclient.core_client).to receive(:discover) + .and_raise(SocketError) + end + + it { is_expected.to eq(expected_nodes) } + end + + context 'when cluster cannot be authenticated to' do + before do + allow(cluster.kubeclient.core_client).to receive(:discover) + .and_raise(OpenSSL::X509::CertificateError.new('Certificate error')) + end + + it { is_expected.to eq(expected_nodes) } + end + + context 'when Kubeclient::HttpError is raised' do + before do + allow(cluster.kubeclient.core_client).to receive(:discover) + .and_raise(Kubeclient::HttpError.new(403, 'Forbidden', nil)) + end + + it { is_expected.to eq(expected_nodes) } + end + + context 'when an uncategorised error is raised' do + before do + allow(cluster.kubeclient.core_client).to receive(:discover) + .and_raise(StandardError) + end + + it { is_expected.to eq(expected_nodes) } + + it 'notifies Sentry' do + expect(Gitlab::ErrorTracking).to receive(:track_exception) + .with(instance_of(StandardError), hash_including(cluster_id: cluster.id)) + .once + + subject + end + end + end +end |