From 8ac4b58f471341e85225ab7407bbe5ef1cee4afb Mon Sep 17 00:00:00 2001 From: Zipofar Date: Fri, 15 Dec 2023 17:29:05 +0300 Subject: [PATCH 1/2] [381] Add status command --- Gemfile.lock | 4 +- lib/uffizzi/cli.rb | 4 ++ lib/uffizzi/cli/status.rb | 43 +++++++++++++++++++ ...izzi_account_success_with_one_project.json | 7 ++- test/uffizzi/cli/status_test.rb | 24 +++++++++++ 5 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 lib/uffizzi/cli/status.rb create mode 100644 test/uffizzi/cli/status_test.rb diff --git a/Gemfile.lock b/Gemfile.lock index 95301ddf..e5d03bf2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -53,9 +53,9 @@ GEM power_assert (>= 1.1) mocha (1.13.0) mustache (0.99.8) - nokogiri (1.13.1-aarch64-linux) + nokogiri (1.15.5-aarch64-linux) racc (~> 1.4) - nokogiri (1.13.1-x86_64-linux) + nokogiri (1.15.5-x86_64-linux) racc (~> 1.4) open3 (0.1.1) parallel (1.21.0) diff --git a/lib/uffizzi/cli.rb b/lib/uffizzi/cli.rb index 79f9575b..91b58907 100644 --- a/lib/uffizzi/cli.rb +++ b/lib/uffizzi/cli.rb @@ -83,6 +83,10 @@ def disconnect(credential_type) require_relative 'cli/uninstall' subcommand 'uninstall', Cli::Uninstall + desc 'status', 'status' + require_relative 'cli/status' + subcommand 'status', Cli::Status + map preview: :compose class << self diff --git a/lib/uffizzi/cli/status.rb b/lib/uffizzi/cli/status.rb new file mode 100644 index 00000000..aced8b0d --- /dev/null +++ b/lib/uffizzi/cli/status.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +require 'uffizzi' +require 'uffizzi/config_file' + +module Uffizzi + class Cli::Status < Thor + include ApiClient + + default_task :describe + + desc 'describe', 'Show account status' + def describe + Uffizzi::AuthHelper.check_login + + account_name = ConfigFile.read_option(:account)[:name] + response = fetch_account(ConfigFile.read_option(:server), account_name) + + if ResponseHelper.ok?(response) + handle_describe_success_response(response) + elsif ResponseHelper.not_found?(response) + Uffizzi.ui.say("Account with name #{account_name} does not exist") + else + ResponseHelper.handle_failed_response(response) + end + end + + private + + def handle_describe_success_response(response) + account = response[:body][:account] + account_rendered_params = { + account: account[:name], + plan: "Uffizzi #{account[:product_name]}", + api: account[:api_url], + controller: account[:vclusters_controller_url], + } + + Uffizzi.ui.output_format = Uffizzi::UI::Shell::PRETTY_LIST + Uffizzi.ui.say(account_rendered_params) + end + end +end diff --git a/test/fixtures/files/uffizzi/uffizzi_account_success_with_one_project.json b/test/fixtures/files/uffizzi/uffizzi_account_success_with_one_project.json index d90fec6a..17a3e9f5 100644 --- a/test/fixtures/files/uffizzi/uffizzi_account_success_with_one_project.json +++ b/test/fixtures/files/uffizzi/uffizzi_account_success_with_one_project.json @@ -1,6 +1,6 @@ { "account": - { + { "id": 1, "name": "test", "projects": [ @@ -8,6 +8,9 @@ "id": 1, "slug": "uffizzi-test-slug-1" } - ] + ], + "api_url": "http://app.uffizzi.com", + "vclusters_controller_url": "http://controller.uffizzi.com", + "product_name": "Starter Plan" } } diff --git a/test/uffizzi/cli/status_test.rb b/test/uffizzi/cli/status_test.rb new file mode 100644 index 00000000..9ff03b35 --- /dev/null +++ b/test/uffizzi/cli/status_test.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'byebug' +require 'test_helper' + +class StatusTest < Minitest::Test + def setup + @status = Uffizzi::Cli::Status.new + + sign_in + Uffizzi::ConfigFile.write_option(:project, 'uffizzi') + end + + def test_status + body = json_fixture('files/uffizzi/uffizzi_account_success_with_one_project.json') + account_name = Uffizzi::ConfigFile.read_option(:account, :name) + stubbed_uffizzi_account = stub_uffizzi_account_success(body, account_name) + + @status.describe + + assert_requested(stubbed_uffizzi_account) + assert_match("API: #{body[:account][:api_url]}", Uffizzi.ui.last_message) + end +end From 1b387ccae57ea1e71b4f175b0d7e3f2b0da42ec4 Mon Sep 17 00:00:00 2001 From: Zipofar Date: Mon, 18 Dec 2023 12:49:17 +0300 Subject: [PATCH 2/2] [381] remove byebug --- test/uffizzi/cli/status_test.rb | 1 - test/uffizzi/cli/uninstall_test.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/test/uffizzi/cli/status_test.rb b/test/uffizzi/cli/status_test.rb index 9ff03b35..b61b1b51 100644 --- a/test/uffizzi/cli/status_test.rb +++ b/test/uffizzi/cli/status_test.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require 'byebug' require 'test_helper' class StatusTest < Minitest::Test diff --git a/test/uffizzi/cli/uninstall_test.rb b/test/uffizzi/cli/uninstall_test.rb index 0dfd3ec6..ce328811 100644 --- a/test/uffizzi/cli/uninstall_test.rb +++ b/test/uffizzi/cli/uninstall_test.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require 'byebug' require 'psych' require 'base64' require 'test_helper'