github.com/ssdev-go/moby@v17.12.1-ce-rc2+incompatible/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  }