#!/usr/bin/env bash

setup_file(){
  load "$PWD/tests/integration/helpers/common"
  _common_setup
}

setup(){
  load "$PWD/tests/integration/helpers/common"
  _common_setup
}

teardown(){
  _rm_server
  _ensure_swarm
}

# bats test_tags=slow,dns
@test "add new server" {
  run $ABRA server add "$TEST_SERVER"
  assert_success
  assert_exists "$ABRA_DIR/servers/$TEST_SERVER"

  run $ABRA server ls
  assert_output --partial "$TEST_SERVER"

  assert bash -c "docker context ls | grep -q $TEST_SERVER"
}

@test "error if using name and --local together" {
  run $ABRA server add "$TEST_SERVER" --local
  assert_failure
  assert_output --partial 'cannot use <name> and --local together'
}

@test "create local server" {
  run $ABRA server add --local
  assert_success
  assert_exists "$ABRA_DIR/servers/default"
  assert bash -c "docker context ls | grep -q default"
  assert_output --partial 'local server successfully added'
}

@test "create local server fails when no docker swarm" {
  run docker swarm leave --force
  assert_success

  run $ABRA server add --local
  assert_failure
  assert_not_exists "$ABRA_DIR/servers/default"
  assert_output --partial 'swarm mode not enabled on local server'
}

# bats test_tags=slow
@test "cleanup when cannot add server" {
  run $ABRA server add example.com
  assert_failure
  assert_not_exists "$ABRA_DIR/servers/example.com"
  refute bash -c "docker context ls | grep -q example.com"
}
