intake/core/env_test.go

92 lines
1.9 KiB
Go

package core
import (
"slices"
"testing"
)
func TestEnvs(t *testing.T) {
db := EphemeralDb(t)
if err := AddSource(db, "_"); err != nil {
t.Fatal(err)
}
// Insert env
if err := SetEnvs(db, "_", []string{"ONE=hello"}); err != nil {
t.Fatal(err)
}
envs, err := GetEnvs(db, "_")
if err != nil {
t.Fatal(err)
}
if len(envs) != 1 {
t.Fatal("expected 1 env")
}
if envs[0] != "ONE=hello" {
t.Fatalf("Expected ONE=hello, got %s", envs[0])
}
// Insert env with = in value
if err := SetEnvs(db, "_", []string{"TWO=world=true"}); err != nil {
t.Fatal(err)
}
envs, err = GetEnvs(db, "_")
if err != nil {
t.Fatal(err)
}
if len(envs) != 2 {
t.Fatal("expected 2 envs")
}
slices.Sort(envs) // ONE > TWO
if envs[1] != "TWO=world=true" {
t.Fatalf("Expected TWO=world=true, got %s", envs[1])
}
// Replace env
if err := SetEnvs(db, "_", []string{"TWO=goodbye"}); err != nil {
t.Fatal(err)
}
envs, err = GetEnvs(db, "_")
if err != nil {
t.Fatal(err)
}
if len(envs) != 2 {
t.Fatal("expected 2 envs")
}
slices.Sort(envs) // ONE > TWO
if envs[1] != "TWO=goodbye" {
t.Fatalf("Expected TWO=goodbye, got %s", envs[1])
}
// Insert is transactional on error
if err := SetEnvs(db, "_", []string{"THREE=crowd", "FOUR"}); err == nil {
t.Fatal("expected bad env insert to fail")
}
envs, err = GetEnvs(db, "_")
if err != nil {
t.Fatal(err)
}
if len(envs) != 2 {
t.Fatal("expected 2 envs after failed insert")
}
slices.Sort(envs) // ONE > TWO
if envs[0] != "ONE=hello" || envs[1] != "TWO=goodbye" {
t.Fatalf("Expected ONE=hello and TWO=goodbye, got %v", envs)
}
// Delete env
if err := SetEnvs(db, "_", []string{"ONE="}); err != nil {
t.Fatal(err)
}
envs, err = GetEnvs(db, "_")
if err != nil {
t.Fatal(err)
}
if len(envs) != 1 {
t.Fatal("expected 1 env after deletion")
}
if envs[0] != "TWO=goodbye" {
t.Fatalf("Expected TWO=goodbye, got %s", envs[0])
}
}