spec/kontena/cli/common_spec.rb in kontena-cli-0.10.3 vs spec/kontena/cli/common_spec.rb in kontena-cli-0.11.0
- old
+ new
@@ -1,30 +1,53 @@
require_relative "../../spec_helper"
require "kontena/cli/common"
describe Kontena::Cli::Common do
+ let(:masters) do
+
+ end
+
let(:subject) do
Class.new do
include Kontena::Cli::Common
end.new
end
before(:each) do
- allow(subject).to receive(:settings).and_return({'server' => {}})
+ allow(subject).to receive(:settings).and_return({'current_server' => 'default',
+ 'servers' => [{}]
+ })
allow(subject).to receive(:save_settings)
end
describe '#current_grid' do
it 'returns nil by default' do
+ allow(subject).to receive(:settings).and_return({'current_server' => 'alias',
+ 'servers' => [
+ {'name' => 'some_master', 'url' => 'some_master'},
+ {'name' => 'alias', 'url' => 'someurl'}
+ ]
+ })
expect(subject.current_grid).to eq(nil)
end
it 'returns grid from env' do
expect(ENV).to receive(:[]).with('KONTENA_GRID').and_return('foo')
expect(subject.current_grid).to eq('foo')
end
+
+ it 'returns grid from json' do
+ allow(subject).to receive(:settings).and_return({'current_server' => 'alias',
+ 'servers' => [
+ {'name' => 'some_master', 'url' => 'some_master'},
+ {'name' => 'alias', 'url' => 'someurl', 'grid' => 'foo_grid'}
+ ]
+ })
+ expect(subject.current_grid).to eq('foo_grid')
+ end
+
end
describe '#api_url' do
it 'raises error by default' do
expect {
@@ -47,7 +70,52 @@
it 'return token from env' do
expect(ENV).to receive(:[]).with('KONTENA_TOKEN').and_return('secret_token')
expect(subject.require_token).to eq('secret_token')
end
+ end
+
+ describe '#current_master' do
+ it 'return correct master info' do
+ allow(subject).to receive(:settings).and_return({'current_server' => 'alias',
+ 'servers' => [
+ {'name' => 'some_master', 'url' => 'some_master'},
+ {'name' => 'alias', 'url' => 'someurl'}
+ ]
+ })
+
+ expect(subject.current_master['url']).to eq('someurl')
+ expect(subject.current_master['name']).to eq('alias')
+
+ end
+ end
+
+ describe '#settings' do
+ it 'migrates old settings' do
+ RSpec::Mocks.space.proxy_for(subject).reset
+
+ allow(File).to receive(:exists?).and_return(true)
+ allow(File).to receive(:read).and_return('{
+ "server": {
+ "url": "https://master.domain.com:8443",
+ "grid": "my-grid",
+ "token": "kontena-token"
+ }
+ }')
+ expected_settings = {
+ 'current_server' => 'default',
+ 'servers' => [
+ {
+ "url" => "https://master.domain.com:8443",
+ "grid" => "my-grid",
+ "token" => "kontena-token",
+ "name" => "default"
+ }
+ ]
+ }
+ expect(File).to receive(:write).with(subject.settings_filename, JSON.pretty_generate(expected_settings))
+
+ subject.settings
+ end
+
end
end