crowdsec/test/bats/30_machines.bats
mmetc a5ab73d458
cscli machines add: don't overwrite existing credential file (#2625)
* cscli machines add: don't overwrite existing credential file
* keep old behavior with --force
Now --force is used both to override the replacement of and existing machine,
and an existing credentials file. To retain the old behavior, the
existence of the file is only checked for the default configuration, not
if explicitly specified.
2023-12-04 22:59:52 +01:00

88 lines
2.7 KiB
Bash

#!/usr/bin/env bats
# vim: ft=bats:list:ts=8:sts=4:sw=4:et:ai:si:
set -u
setup_file() {
load "../lib/setup_file.sh"
}
teardown_file() {
load "../lib/teardown_file.sh"
}
setup() {
load "../lib/setup.sh"
./instance-data load
./instance-crowdsec start
}
teardown() {
./instance-crowdsec stop
}
#----------
@test "we have exactly one machine" {
rune -0 cscli machines list -o json
rune -0 jq -c '[. | length, .[0].machineId[0:32], .[0].isValidated]' <(output)
assert_output '[1,"githubciXXXXXXXXXXXXXXXXXXXXXXXX",true]'
}
@test "don't overwrite local credentials by default" {
rune -1 cscli machines add local -a -o json
rune -0 jq -r '.msg' <(stderr)
assert_output --partial 'already exists: please remove it, use "--force" or specify a different file with "-f"'
rune -0 cscli machines add local -a --force
assert_stderr --partial "Machine 'local' successfully added to the local API"
}
@test "add a new machine and delete it" {
rune -0 cscli machines add -a -f /dev/null CiTestMachine -o human
assert_stderr --partial "Machine 'CiTestMachine' successfully added to the local API"
assert_stderr --partial "API credentials written to '/dev/null'"
# we now have two machines
rune -0 cscli machines list -o json
rune -0 jq -c '[. | length, .[-1].machineId, .[0].isValidated]' <(output)
assert_output '[2,"CiTestMachine",true]'
# delete the test machine
rune -0 cscli machines delete CiTestMachine -o human
assert_stderr --partial "machine 'CiTestMachine' deleted successfully"
# we now have one machine again
rune -0 cscli machines list -o json
rune -0 jq '. | length' <(output)
assert_output 1
}
@test "register, validate and then remove a machine" {
rune -0 cscli lapi register --machine CiTestMachineRegister -f /dev/null -o human
assert_stderr --partial "Successfully registered to Local API (LAPI)"
assert_stderr --partial "Local API credentials written to '/dev/null'"
# the machine is not validated yet
rune -0 cscli machines list -o json
rune -0 jq '.[-1].isValidated' <(output)
assert_output 'null'
# validate the machine
rune -0 cscli machines validate CiTestMachineRegister -o human
assert_stderr --partial "machine 'CiTestMachineRegister' validated successfully"
# the machine is now validated
rune -0 cscli machines list -o json
rune -0 jq '.[-1].isValidated' <(output)
assert_output 'true'
# delete the test machine again
rune -0 cscli machines delete CiTestMachineRegister -o human
assert_stderr --partial "machine 'CiTestMachineRegister' deleted successfully"
# we now have one machine, again
rune -0 cscli machines list -o json
rune -0 jq '. | length' <(output)
assert_output 1
}