Skip to content

Commit

Permalink
Change fuzzing test to avoid leaving files around (#3539)
Browse files Browse the repository at this point in the history
The previous implementation would create a test file but never clean it
up, which causes problems when running the tests locally.
  • Loading branch information
dmjb authored Jun 5, 2024
1 parent f170622 commit d986b0c
Showing 1 changed file with 20 additions and 27 deletions.
47 changes: 20 additions & 27 deletions internal/crypto/fuzz_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,54 +18,47 @@ package crypto
import (
"fmt"
"os"
"path/filepath"
"strings"
"testing"

"github.com/stacklok/minder/internal/config/server"
)

var (
fuzzTestDir = "fuzz-test-dir"
fuzzConfig = &server.Config{
func FuzzEncryptDecrypt(f *testing.F) {
rawKey := []byte("2hcGLimy2i7LAknby2AFqYx87CaaCAtjxDiorRxYq8Q=")

file, err := os.CreateTemp("", "-fuzz-key-test")
if err != nil {
f.Fatal(err)
}
fileName := file.Name()

defer os.Remove(fileName)
err = os.WriteFile(fileName, rawKey, 0600)
if err != nil {
f.Fatal(err)
}

fuzzConfig := &server.Config{
Crypto: server.CryptoConfig{
KeyStore: server.KeyStoreConfig{
Type: "local",
Local: server.LocalKeyStoreConfig{
KeyDir: fuzzTestDir,
KeyDir: os.TempDir(),
},
},
Default: server.DefaultCrypto{
KeyID: "test_encryption_key",
KeyID: filepath.Base(fileName),
},
},
}
fuzzEngine Engine
err error
)

func init() {
// When ClusterfuzzLite runs this fuzzer, it does not have access
// to any files in Minders source tree, so we create the necessary
// key here to create the engine.
rawKey := []byte("2hcGLimy2i7LAknby2AFqYx87CaaCAtjxDiorRxYq8Q=")
_, err = os.Stat(fuzzTestDir)
if os.IsNotExist(err) {
err = os.Mkdir(fuzzTestDir, 0750)
if err != nil && !os.IsExist(err) {
panic(err)
}
err = os.WriteFile("fuzz-test-dir/test_encryption_key", rawKey, 0600)
if err != nil {
panic(err)
}
}
fuzzEngine, err = NewEngineFromConfig(fuzzConfig)
fuzzEngine, err := NewEngineFromConfig(fuzzConfig)
if err != nil {
panic(err)
}
}

func FuzzEncryptDecrypt(f *testing.F) {
f.Fuzz(func(_ *testing.T, data string) {
encrypted, err := fuzzEngine.EncryptString(data)
if err != nil {
Expand Down

0 comments on commit d986b0c

Please sign in to comment.