57 lines
2.3 KiB
Ruby
57 lines
2.3 KiB
Ruby
require_relative "cli_test_case"
|
|
|
|
class CliMainTest < CliTestCase
|
|
test "version" do
|
|
version = stdouted { Mrsk::Cli::Main.new.version }
|
|
assert_equal Mrsk::VERSION, version
|
|
end
|
|
|
|
test "rollback bad version" do
|
|
run_command("details") # Preheat MRSK const
|
|
|
|
run_command("rollback", "nonsense").tap do |output|
|
|
assert_match /docker container ls -a --filter label=service=app --format '{{ .Names }}'/, output
|
|
assert_match /The app version 'nonsense' is not available as a container/, output
|
|
end
|
|
end
|
|
|
|
test "rollback good version" do
|
|
Mrsk::Cli::Main.any_instance.stubs(:container_name_available?).returns(true)
|
|
|
|
run_command("rollback", "123").tap do |output|
|
|
assert_match /Stop current version, then start version 123/, output
|
|
assert_match /docker ps -q --filter label=service=app | xargs docker stop/, output
|
|
assert_match /docker start app-123/, output
|
|
end
|
|
end
|
|
|
|
test "remove with confirmation" do
|
|
run_command("remove", "-y").tap do |output|
|
|
assert_match /docker container stop traefik/, output
|
|
assert_match /docker container prune -f --filter label=org.opencontainers.image.title=Traefik/, output
|
|
assert_match /docker image prune -a -f --filter label=org.opencontainers.image.title=Traefik/, output
|
|
|
|
assert_match /docker ps -q --filter label=service=app | xargs docker stop/, output
|
|
assert_match /docker container prune -f --filter label=service=app/, output
|
|
assert_match /docker image prune -a -f --filter label=service=app/, output
|
|
|
|
assert_match /docker container stop app-mysql/, output
|
|
assert_match /docker container prune -f --filter label=service=app-mysql/, output
|
|
assert_match /docker image prune -a -f --filter label=service=app-mysql/, output
|
|
assert_match /rm -rf app-mysql/, output
|
|
|
|
assert_match /docker container stop app-redis/, output
|
|
assert_match /docker container prune -f --filter label=service=app-redis/, output
|
|
assert_match /docker image prune -a -f --filter label=service=app-redis/, output
|
|
assert_match /rm -rf app-redis/, output
|
|
|
|
assert_match /docker logout/, output
|
|
end
|
|
end
|
|
|
|
private
|
|
def run_command(*command)
|
|
stdouted { Mrsk::Cli::Main.start([*command, "-c", "test/fixtures/deploy_with_accessories.yml"]) }
|
|
end
|
|
end
|