go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/shadow/shadow_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package shadow_test 5 6 import ( 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 "go.mondoo.com/cnquery/providers/os/connection/mock" 13 "go.mondoo.com/cnquery/providers/os/resources/shadow" 14 ) 15 16 func TestParseShadow(t *testing.T) { 17 mock, err := mock.New("./testdata/debian.toml", nil) 18 require.NoError(t, err) 19 20 f, err := mock.FileSystem().Open("/etc/shadow") 21 require.NoError(t, err) 22 defer f.Close() 23 24 shadowEntries, err := shadow.ParseShadow(f) 25 require.NoError(t, err) 26 27 assert.Equal(t, 27, len(shadowEntries)) 28 29 // 18368 days + jan 1 1970 = 2020-04-16 00:00:00 +0000 UTC 30 date := time.Date(2020, 0o4, 16, 0, 0, 0, 0, time.UTC) 31 expected := &shadow.ShadowEntry{ 32 User: "chris", 33 Password: "*", 34 LastChanged: &date, 35 MinDays: "0", 36 MaxDays: "99999", 37 WarnDays: "7", 38 InactiveDays: "", 39 ExpiryDates: "", 40 Reserved: "", 41 } 42 found := findUser(shadowEntries, "chris") 43 assert.Equal(t, expected, found) 44 } 45 46 func findUser(shadowEntries []shadow.ShadowEntry, user string) *shadow.ShadowEntry { 47 for i := range shadowEntries { 48 if shadowEntries[i].User == user { 49 return &shadowEntries[i] 50 } 51 } 52 return nil 53 }