From 1b4ec66148fe551425416b34b2c8c3a9052f843a Mon Sep 17 00:00:00 2001 From: mmetc <92726601+mmetc@users.noreply.github.com> Date: Mon, 11 Dec 2023 10:07:09 +0100 Subject: [PATCH] fix package tests for 1.5.6-rc2 (#2652) * fix go deps for test * fix package tests for 1.5.6-rc2 * fix context func tests * docker: pin build image version for alpine --------- Co-authored-by: sabban --- Dockerfile | 2 +- test/ansible/requirements.yml | 3 +-- test/ansible/vars/go.yml | 2 +- test/bats/01_crowdsec.bats | 2 ++ test/bats/09_context.bats | 9 +++++---- test/lib/config/config-global | 8 ++++++++ 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index f04f6cb19..81697cdc4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # vim: set ft=dockerfile: ARG GOVERSION=1.21.5 -FROM golang:${GOVERSION}-alpine AS build +FROM golang:${GOVERSION}-alpine3.18 AS build WORKDIR /go/src/crowdsec diff --git a/test/ansible/requirements.yml b/test/ansible/requirements.yml index 1be01c480..a780e827f 100644 --- a/test/ansible/requirements.yml +++ b/test/ansible/requirements.yml @@ -8,8 +8,7 @@ roles: name: geerlingguy.postgresql # these should be included as dependencies of crowdsecurity.testing, but sometime are not - src: geerlingguy.repo-epel - - src: gantsign.ansible-role-golang - name: gantsign.golang + - src: gantsign.golang collections: - name: ansible.posix diff --git a/test/ansible/vars/go.yml b/test/ansible/vars/go.yml index c84c8a345..a735b9543 100644 --- a/test/ansible/vars/go.yml +++ b/test/ansible/vars/go.yml @@ -1,5 +1,5 @@ # vim: set ft=yaml.ansible: --- -golang_version: "1.21.5" +golang_version: "1.21.4" golang_install_dir: "/opt/go/{{ golang_version }}" diff --git a/test/bats/01_crowdsec.bats b/test/bats/01_crowdsec.bats index fb99d1ec3..f8034ae5b 100644 --- a/test/bats/01_crowdsec.bats +++ b/test/bats/01_crowdsec.bats @@ -232,6 +232,8 @@ teardown() { ACQUIS_YAML=$(config_get '.crowdsec_service.acquisition_path') config_set "$ACQUIS_YAML" 'del(.filenames)' + # if filenames are missing, it won't be able to detect source type + config_set "$ACQUIS_YAML" '.source="file"' rune -1 wait-for "${CROWDSEC}" assert_stderr --partial "failed to configure datasource file: no filename or filenames configuration provided" diff --git a/test/bats/09_context.bats b/test/bats/09_context.bats index c56d3e773..6163d53f9 100644 --- a/test/bats/09_context.bats +++ b/test/bats/09_context.bats @@ -62,7 +62,8 @@ teardown() { @test "context file is good" { echo '{"source_ip":["evt.Parsed.source_ip"]}' > "$CONTEXT_YAML" rune -0 "$CROWDSEC" -t --debug - assert_stderr --partial 'console context to send: {"source_ip":["evt.Parsed.source_ip"]}' + # the log content may have quotes escaped or not, depending on tty detection + assert_stderr --regexp 'console context to send: .*source_ip.*evt.Parsed.source_ip' } @test "context file is from hub (local item)" { @@ -71,7 +72,7 @@ teardown() { echo '{"context":{"source_ip":["evt.Parsed.source_ip"]}}' > "$CONFIG_DIR/contexts/foobar.yaml" rune -0 "$CROWDSEC" -t --trace assert_stderr --partial "loading console context from $CONFIG_DIR/contexts/foobar.yaml" - assert_stderr --partial 'console context to send: {"source_ip":["evt.Parsed.source_ip"]}' + assert_stderr --regexp 'console context to send: .*source_ip.*evt.Parsed.source_ip' } @test "merge multiple contexts" { @@ -81,7 +82,7 @@ teardown() { rune -0 "$CROWDSEC" -t --trace assert_stderr --partial "loading console context from $CONFIG_DIR/contexts/one.yaml" assert_stderr --partial "loading console context from $CONFIG_DIR/contexts/two.yaml" - assert_stderr --partial 'console context to send: {"one":["evt.Parsed.source_ip"],"two":["evt.Parsed.source_ip"]}' + assert_stderr --regexp 'console context to send: .*one.*evt.Parsed.source_ip.*two.*evt.Parsed.source_ip' } @test "merge contexts from hub and context.yaml file" { @@ -91,5 +92,5 @@ teardown() { rune -0 "$CROWDSEC" -t --trace assert_stderr --partial "loading console context from $CONFIG_DIR/contexts/one.yaml" assert_stderr --partial "loading console context from $CONFIG_DIR/console/context.yaml" - assert_stderr --partial 'console context to send: {"one":["evt.Parsed.source_ip","evt.Parsed.source_ip_2"]}' + assert_stderr --regexp 'console context to send: .*one.*evt.Parsed.source_ip.*evt.Parsed.source_ip_2' } diff --git a/test/lib/config/config-global b/test/lib/config/config-global index 22ac76df6..68346c188 100755 --- a/test/lib/config/config-global +++ b/test/lib/config/config-global @@ -54,10 +54,18 @@ remove_init_data() { # we need a separate function for initializing config when testing package # because we want to test the configuration as well +config_prepare() { + # remove trailing slash from CONFIG_DIR + # since it's assumed to be missing during the tests + yq e -i ' + .config_paths.config_dir |= sub("/$", "") + ' "${CONFIG_DIR}/config.yaml" +} make_init_data() { ./bin/assert-crowdsec-not-running || die "Cannot create fixture data." + config_prepare ./instance-db config-yaml ./instance-db setup