76 lines
2.3 KiB
Go
76 lines
2.3 KiB
Go
package main
|
|
|
|
import "testing"
|
|
|
|
func TestLab08(t *testing.T) {
|
|
l, err := chargerLab("../labs", "08-deux-lan-routeur")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
v, ok := l.verification("forwarding")
|
|
if !ok || v.Machine != "routeur" || v.Attendu.CodeRetour != 0 || v.Commande == "" {
|
|
t.Fatalf("vérification forwarding mal lue : %+v", v)
|
|
}
|
|
if _, ok := l.verification("inexistante"); ok {
|
|
t.Fatal("une vérification inconnue ne doit pas être trouvée")
|
|
}
|
|
}
|
|
|
|
func TestMachineDuNom(t *testing.T) {
|
|
l := &lab{}
|
|
for _, n := range []string{"a", "pc-a", "routeur"} {
|
|
l.Machines = append(l.Machines, struct {
|
|
Nom string `yaml:"nom"`
|
|
}{n})
|
|
}
|
|
cas := map[string]string{
|
|
"lab-session-3-e1-pc-a": "pc-a",
|
|
"stock-08-deux-lan-routeur-x-e2-a": "a",
|
|
"lab-session-3-e1-routeur": "routeur",
|
|
"vm-sans-rapport": "",
|
|
}
|
|
for nom, attendu := range cas {
|
|
if got := l.machineDuNom(nom); got != attendu {
|
|
t.Errorf("machineDuNom(%q) = %q, attendu %q", nom, got, attendu)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAttendu(t *testing.T) {
|
|
a := attendu{CodeRetour: 0, SortieContient: "ok"}
|
|
if !a.satisfait(0, "tout est ok") || a.satisfait(1, "ok") || a.satisfait(0, "non") {
|
|
t.Fatal("règle code_retour + sortie_contient mal appliquée")
|
|
}
|
|
}
|
|
|
|
func TestValidationIdentifiants(t *testing.T) {
|
|
for _, mauvais := range []string{"../etc", "08/../..", "A", "", "lab;rm"} {
|
|
if reIdent.MatchString(mauvais) {
|
|
t.Errorf("%q ne doit pas être accepté", mauvais)
|
|
}
|
|
}
|
|
if reInstance.MatchString("not-a-uuid") || !reInstance.MatchString("8c8d5447-80fe-40da-ae65-812e077941f8") {
|
|
t.Fatal("validation d'uuid incorrecte")
|
|
}
|
|
}
|
|
|
|
func TestRequeteValide(t *testing.T) {
|
|
uuid := "8c8d5447-80fe-40da-ae65-812e077941f8"
|
|
cas := []struct {
|
|
r requete
|
|
ok bool
|
|
}{
|
|
{requete{Instance: uuid, Lab: "08-deux-lan-routeur", Verification: "forwarding"}, true},
|
|
{requete{Instance: uuid, Sante: true}, true},
|
|
// Une sonde ne peut pas porter de vérification (rien ne s'exécute).
|
|
{requete{Instance: uuid, Sante: true, Lab: "08-deux-lan-routeur", Verification: "forwarding"}, false},
|
|
{requete{Instance: uuid, Sante: true, Verification: "forwarding"}, false},
|
|
{requete{Instance: "pas-un-uuid", Sante: true}, false},
|
|
{requete{Instance: uuid}, false},
|
|
}
|
|
for _, c := range cas {
|
|
if got := c.r.valide(); got != c.ok {
|
|
t.Errorf("valide(%+v) = %t, attendu %t", c.r, got, c.ok)
|
|
}
|
|
}
|
|
}
|