github.com/mforkel/docker-ce-i386@v17.12.1-ce-rc2+incompatible/components/engine/daemon/trustkey_test.go (about) 1 package daemon 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/docker/docker/internal/testutil" 10 "github.com/gotestyourself/gotestyourself/fs" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 // LoadOrCreateTrustKey 16 func TestLoadOrCreateTrustKeyInvalidKeyFile(t *testing.T) { 17 tmpKeyFolderPath, err := ioutil.TempDir("", "api-trustkey-test") 18 require.NoError(t, err) 19 defer os.RemoveAll(tmpKeyFolderPath) 20 21 tmpKeyFile, err := ioutil.TempFile(tmpKeyFolderPath, "keyfile") 22 require.NoError(t, err) 23 24 _, err = loadOrCreateTrustKey(tmpKeyFile.Name()) 25 testutil.ErrorContains(t, err, "Error loading key file") 26 } 27 28 func TestLoadOrCreateTrustKeyCreateKeyWhenFileDoesNotExist(t *testing.T) { 29 tmpKeyFolderPath := fs.NewDir(t, "api-trustkey-test") 30 defer tmpKeyFolderPath.Remove() 31 32 // Without the need to create the folder hierarchy 33 tmpKeyFile := tmpKeyFolderPath.Join("keyfile") 34 35 key, err := loadOrCreateTrustKey(tmpKeyFile) 36 require.NoError(t, err) 37 assert.NotNil(t, key) 38 39 _, err = os.Stat(tmpKeyFile) 40 require.NoError(t, err, "key file doesn't exist") 41 } 42 43 func TestLoadOrCreateTrustKeyCreateKeyWhenDirectoryDoesNotExist(t *testing.T) { 44 tmpKeyFolderPath := fs.NewDir(t, "api-trustkey-test") 45 defer tmpKeyFolderPath.Remove() 46 tmpKeyFile := tmpKeyFolderPath.Join("folder/hierarchy/keyfile") 47 48 key, err := loadOrCreateTrustKey(tmpKeyFile) 49 require.NoError(t, err) 50 assert.NotNil(t, key) 51 52 _, err = os.Stat(tmpKeyFile) 53 require.NoError(t, err, "key file doesn't exist") 54 } 55 56 func TestLoadOrCreateTrustKeyCreateKeyNoPath(t *testing.T) { 57 defer os.Remove("keyfile") 58 key, err := loadOrCreateTrustKey("keyfile") 59 require.NoError(t, err) 60 assert.NotNil(t, key) 61 62 _, err = os.Stat("keyfile") 63 require.NoError(t, err, "key file doesn't exist") 64 } 65 66 func TestLoadOrCreateTrustKeyLoadValidKey(t *testing.T) { 67 tmpKeyFile := filepath.Join("testdata", "keyfile") 68 key, err := loadOrCreateTrustKey(tmpKeyFile) 69 require.NoError(t, err) 70 expected := "AWX2:I27X:WQFX:IOMK:CNAK:O7PW:VYNB:ZLKC:CVAE:YJP2:SI4A:XXAY" 71 assert.Contains(t, key.String(), expected) 72 }