f-19: test: ajouter des test
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
3288a2a413
commit
c7d20b4124
4 changed files with 593 additions and 0 deletions
153
pkg/db/kv/kv_test.go
Normal file
153
pkg/db/kv/kv_test.go
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
package kv
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/dgraph-io/badger/v4"
|
||||
)
|
||||
|
||||
// newTestDB ouvre une base BadgerDB dans un répertoire temporaire.
|
||||
// La base est fermée automatiquement en fin de test.
|
||||
func newTestDB(t *testing.T) *badger.DB {
|
||||
t.Helper()
|
||||
db := InitDB(Config{Path: t.TempDir()}, false)
|
||||
t.Cleanup(func() { db.Close() })
|
||||
return db
|
||||
}
|
||||
|
||||
// --- InitDB ---
|
||||
|
||||
func TestInitDB_ValidPath(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
if db == nil {
|
||||
t.Fatal("InitDB devrait retourner une DB non-nil")
|
||||
}
|
||||
}
|
||||
|
||||
func TestInitDB_InvalidPath_Panics(t *testing.T) {
|
||||
defer func() {
|
||||
if r := recover(); r == nil {
|
||||
t.Fatal("InitDB avec un chemin invalide devrait paniquer")
|
||||
}
|
||||
}()
|
||||
InitDB(Config{Path: "/chemin/inexistant/absolu"}, false)
|
||||
}
|
||||
|
||||
// --- AddInDB ---
|
||||
|
||||
func TestAddInDB_NewKey(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
if err := AddInDB(db, "vpc/test", "valeur"); err != nil {
|
||||
t.Fatalf("AddInDB a échoué : %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddInDB_OverwriteExistingKey(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
AddInDB(db, "vpc/test", "premiere")
|
||||
if err := AddInDB(db, "vpc/test", "deuxieme"); err != nil {
|
||||
t.Fatalf("AddInDB (écrasement) a échoué : %v", err)
|
||||
}
|
||||
|
||||
val, _ := GetFromDB(db, "vpc/test")
|
||||
if val != "deuxieme" {
|
||||
t.Errorf("valeur attendue %q, obtenu %q", "deuxieme", val)
|
||||
}
|
||||
}
|
||||
|
||||
// --- GetFromDB ---
|
||||
|
||||
func TestGetFromDB_ExistingKey(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
AddInDB(db, "vpc/foo", "bar")
|
||||
|
||||
val, err := GetFromDB(db, "vpc/foo")
|
||||
if err != nil {
|
||||
t.Fatalf("GetFromDB a échoué : %v", err)
|
||||
}
|
||||
if val != "bar" {
|
||||
t.Errorf("valeur attendue %q, obtenu %q", "bar", val)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetFromDB_MissingKey(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
|
||||
_, err := GetFromDB(db, "inexistant")
|
||||
if !errors.Is(err, badger.ErrKeyNotFound) {
|
||||
t.Errorf("erreur attendue ErrKeyNotFound, obtenu : %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetFromDB_EmptyValue(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
AddInDB(db, "vpc/vide", "")
|
||||
|
||||
val, err := GetFromDB(db, "vpc/vide")
|
||||
if err != nil {
|
||||
t.Fatalf("GetFromDB a échoué : %v", err)
|
||||
}
|
||||
if val != "" {
|
||||
t.Errorf("valeur attendue vide, obtenu %q", val)
|
||||
}
|
||||
}
|
||||
|
||||
// --- DeleteInDB ---
|
||||
|
||||
func TestDeleteInDB_SimpleKey(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
AddInDB(db, "vpc/a", "v")
|
||||
|
||||
if err := DeleteInDB(db, "vpc/a"); err != nil {
|
||||
t.Fatalf("DeleteInDB a échoué : %v", err)
|
||||
}
|
||||
|
||||
_, err := GetFromDB(db, "vpc/a")
|
||||
if !errors.Is(err, badger.ErrKeyNotFound) {
|
||||
t.Errorf("la clé devrait être supprimée, obtenu : %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteInDB_WithSubkeys(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
// Clé parente + sous-clés (préfixe "vpc/net1/")
|
||||
AddInDB(db, "vpc/net1", "parent")
|
||||
AddInDB(db, "vpc/net1/ip", "10.0.0.1")
|
||||
AddInDB(db, "vpc/net1/gw", "10.0.0.254")
|
||||
|
||||
if err := DeleteInDB(db, "vpc/net1"); err != nil {
|
||||
t.Fatalf("DeleteInDB a échoué : %v", err)
|
||||
}
|
||||
|
||||
for _, key := range []string{"vpc/net1", "vpc/net1/ip", "vpc/net1/gw"} {
|
||||
_, err := GetFromDB(db, key)
|
||||
if !errors.Is(err, badger.ErrKeyNotFound) {
|
||||
t.Errorf("clé %q devrait être supprimée, obtenu : %v", key, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteInDB_DoesNotDeleteSiblings(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
AddInDB(db, "vpc/net1", "a")
|
||||
AddInDB(db, "vpc/net2", "b") // ne doit pas être supprimée
|
||||
|
||||
DeleteInDB(db, "vpc/net1")
|
||||
|
||||
val, err := GetFromDB(db, "vpc/net2")
|
||||
if err != nil {
|
||||
t.Fatalf("vpc/net2 ne devrait pas être supprimée : %v", err)
|
||||
}
|
||||
if val != "b" {
|
||||
t.Errorf("valeur attendue %q, obtenu %q", "b", val)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteInDB_MissingKey(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
// Supprimer une clé inexistante ne doit pas crasher
|
||||
if err := DeleteInDB(db, "inexistant"); err != nil {
|
||||
t.Logf("DeleteInDB clé inexistante retourne : %v (non bloquant)", err)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue