open-nomad/client/fingerprint/landlock_test.go

74 lines
1.5 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package fingerprint
import (
"errors"
"testing"
"github.com/hashicorp/nomad/ci"
"github.com/hashicorp/nomad/client/testutil"
"github.com/hashicorp/nomad/helper/testlog"
"github.com/shoenig/go-landlock"
"github.com/shoenig/test/must"
)
func TestLandlockFingerprint(t *testing.T) {
testutil.RequireLinux(t)
ci.Parallel(t)
version, err := landlock.Detect()
must.NoError(t, err)
logger := testlog.HCLogger(t)
f := NewLandlockFingerprint(logger)
var response FingerprintResponse
err = f.Fingerprint(nil, &response)
must.NoError(t, err)
result := response.Attributes[landlockKey]
exp := map[int]string{
0: "", // unavailable
1: "v1",
2: "v2",
3: "v3",
}
must.Eq(t, exp[version], result)
}
func TestLandlockFingerprint_absent(t *testing.T) {
ci.Parallel(t)
logger := testlog.HCLogger(t)
f := NewLandlockFingerprint(logger)
f.(*LandlockFingerprint).detector = func() (int, error) {
return 0, nil
}
var response FingerprintResponse
err := f.Fingerprint(nil, &response)
must.NoError(t, err)
_, exists := response.Attributes[landlockKey]
must.False(t, exists)
}
func TestLandlockFingerprint_error(t *testing.T) {
ci.Parallel(t)
logger := testlog.HCLogger(t)
f := NewLandlockFingerprint(logger)
f.(*LandlockFingerprint).detector = func() (int, error) {
return 0, errors.New("oops")
}
var response FingerprintResponse
err := f.Fingerprint(nil, &response)
must.NoError(t, err)
_, exists := response.Attributes[landlockKey]
must.False(t, exists)
}