trustkey_test.go 2.0 KB

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