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  }