github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/client/fingerprint/plugins_cni_test.go (about) 1 package fingerprint 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/hashicorp/nomad/ci" 8 "github.com/hashicorp/nomad/client/config" 9 "github.com/hashicorp/nomad/helper/testlog" 10 "github.com/shoenig/test/must" 11 ) 12 13 func TestPluginsCNIFingerprint_Fingerprint_present(t *testing.T) { 14 ci.Parallel(t) 15 16 f := NewPluginsCNIFingerprint(testlog.HCLogger(t)) 17 request := &FingerprintRequest{ 18 Config: &config.Config{ 19 CNIPath: "./test_fixtures/cni", 20 }, 21 } 22 response := new(FingerprintResponse) 23 24 err := f.Fingerprint(request, response) 25 must.NoError(t, err) 26 must.True(t, response.Detected) 27 attrCustom := f.(*PluginsCNIFingerprint).attribute("custom") 28 attrBridge := f.(*PluginsCNIFingerprint).attribute("bridge") 29 must.Eq(t, "v1.2.3", response.Attributes[attrCustom]) 30 must.Eq(t, "v1.0.2", response.Attributes[attrBridge]) 31 } 32 33 func TestPluginsCNIFingerprint_Fingerprint_absent(t *testing.T) { 34 ci.Parallel(t) 35 36 f := NewPluginsCNIFingerprint(testlog.HCLogger(t)) 37 request := &FingerprintRequest{ 38 Config: &config.Config{ 39 CNIPath: "/does/not/exist", 40 }, 41 } 42 response := new(FingerprintResponse) 43 44 err := f.Fingerprint(request, response) 45 must.NoError(t, err) 46 must.False(t, response.Detected) 47 attrCustom := f.(*PluginsCNIFingerprint).attribute("custom") 48 attrBridge := f.(*PluginsCNIFingerprint).attribute("bridge") 49 must.MapNotContainsKeys(t, response.Attributes, []string{attrCustom, attrBridge}) 50 } 51 52 func TestPluginsCNIFingerprint_Fingerprint_empty(t *testing.T) { 53 ci.Parallel(t) 54 55 lister := func(string) ([]os.DirEntry, error) { 56 // return an empty slice of directory entries 57 // i.e. no plugins present 58 return nil, nil 59 } 60 61 f := NewPluginsCNIFingerprint(testlog.HCLogger(t)) 62 f.(*PluginsCNIFingerprint).lister = lister 63 request := &FingerprintRequest{ 64 Config: &config.Config{ 65 CNIPath: "./test_fixtures/cni", 66 }, 67 } 68 response := new(FingerprintResponse) 69 70 err := f.Fingerprint(request, response) 71 must.NoError(t, err) 72 must.True(t, response.Detected) 73 } 74 75 func TestPluginsCNIFingerprint_Fingerprint_unset(t *testing.T) { 76 ci.Parallel(t) 77 78 f := NewPluginsCNIFingerprint(testlog.HCLogger(t)) 79 request := &FingerprintRequest{ 80 Config: new(config.Config), 81 } 82 response := new(FingerprintResponse) 83 84 err := f.Fingerprint(request, response) 85 must.NoError(t, err) 86 must.False(t, response.Detected) 87 }