100 lines
2.7 KiB
Ruby
100 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'fast_spec_helper'
|
|
|
|
RSpec.describe Gitlab::Kubernetes::Helm::Parsers::ListV2 do
|
|
let(:valid_file_contents) do
|
|
<<~EOF
|
|
{
|
|
"Next": "",
|
|
"Releases": [
|
|
{
|
|
"Name": "certmanager",
|
|
"Revision": 2,
|
|
"Updated": "Sun Mar 29 06:55:42 2020",
|
|
"Status": "DEPLOYED",
|
|
"Chart": "cert-manager-v0.10.1",
|
|
"AppVersion": "v0.10.1",
|
|
"Namespace": "gitlab-managed-apps"
|
|
},
|
|
{
|
|
"Name": "certmanager-crds",
|
|
"Revision": 2,
|
|
"Updated": "Sun Mar 29 06:55:32 2020",
|
|
"Status": "DEPLOYED",
|
|
"Chart": "cert-manager-crds-v0.2.0",
|
|
"AppVersion": "release-0.10",
|
|
"Namespace": "gitlab-managed-apps"
|
|
},
|
|
{
|
|
"Name": "certmanager-issuer",
|
|
"Revision": 1,
|
|
"Updated": "Tue Feb 18 10:04:04 2020",
|
|
"Status": "FAILED",
|
|
"Chart": "cert-manager-issuer-v0.1.0",
|
|
"AppVersion": "",
|
|
"Namespace": "gitlab-managed-apps"
|
|
},
|
|
{
|
|
"Name": "runner",
|
|
"Revision": 2,
|
|
"Updated": "Sun Mar 29 07:01:01 2020",
|
|
"Status": "DEPLOYED",
|
|
"Chart": "gitlab-runner-0.14.0",
|
|
"AppVersion": "12.8.0",
|
|
"Namespace": "gitlab-managed-apps"
|
|
}
|
|
]
|
|
}
|
|
EOF
|
|
end
|
|
|
|
describe '#initialize' do
|
|
it 'initializes without error' do
|
|
expect do
|
|
described_class.new(valid_file_contents)
|
|
end.not_to raise_error
|
|
end
|
|
|
|
it 'raises an error on invalid JSON' do
|
|
expect do
|
|
described_class.new('')
|
|
end.to raise_error(described_class::ParserError)
|
|
end
|
|
end
|
|
|
|
describe '#releases' do
|
|
subject(:list_v2) { described_class.new(valid_file_contents) }
|
|
|
|
it 'returns list of releases' do
|
|
expect(list_v2.releases).to match([
|
|
a_hash_including('Name' => 'certmanager', 'Status' => 'DEPLOYED'),
|
|
a_hash_including('Name' => 'certmanager-crds', 'Status' => 'DEPLOYED'),
|
|
a_hash_including('Name' => 'certmanager-issuer', 'Status' => 'FAILED'),
|
|
a_hash_including('Name' => 'runner', 'Status' => 'DEPLOYED')
|
|
])
|
|
end
|
|
|
|
context 'empty Releases' do
|
|
let(:valid_file_contents) { '{}' }
|
|
|
|
it 'returns an empty array' do
|
|
expect(list_v2.releases).to eq([])
|
|
end
|
|
end
|
|
|
|
context 'invalid Releases' do
|
|
let(:invalid_file_contents) do
|
|
'{ "Releases" : ["a", "b"] }'
|
|
end
|
|
|
|
subject(:list_v2) { described_class.new(invalid_file_contents) }
|
|
|
|
it 'raises an error' do
|
|
expect do
|
|
list_v2.releases
|
|
end.to raise_error(described_class::ParserError, 'Invalid format for Releases')
|
|
end
|
|
end
|
|
end
|
|
end
|