mirror of https://github.com/docker/docs.git
Add TestAddTarget
This test adds two targets, and after each one, inspects the changelist files to make sure they meet expectations.
This commit is contained in:
parent
6bff14a679
commit
abe320307d
|
@ -130,3 +130,110 @@ func TestInitRepo(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type tufChange struct {
|
||||||
|
// Abbreviated because Go doesn't permit a field and method of the same name
|
||||||
|
Actn int `json:"action"`
|
||||||
|
Role string `json:"role"`
|
||||||
|
ChangeType string `json:"type"`
|
||||||
|
ChangePath string `json:"path"`
|
||||||
|
Data []byte `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestAddTarget adds a target to the repo and confirms that the changelist
|
||||||
|
// is updated correctly.
|
||||||
|
func TestAddTarget(t *testing.T) {
|
||||||
|
// Temporary directory where test files will be created
|
||||||
|
tempBaseDir, err := ioutil.TempDir("", "notary-test-")
|
||||||
|
assert.NoError(t, err, "failed to create a temporary directory: %s", err)
|
||||||
|
|
||||||
|
client, err := NewClient(tempBaseDir)
|
||||||
|
assert.NoError(t, err, "error creating client: %s", err)
|
||||||
|
|
||||||
|
rootKeyID, err := client.GenRootKey("passphrase")
|
||||||
|
assert.NoError(t, err, "error generating root key: %s", err)
|
||||||
|
|
||||||
|
rootKey, err := client.GetRootKey(rootKeyID, "passphrase")
|
||||||
|
assert.NoError(t, err, "error retreiving root key: %s", err)
|
||||||
|
|
||||||
|
gun := "docker.com/notary"
|
||||||
|
repo, err := client.InitRepository(gun, "", nil, rootKey)
|
||||||
|
assert.NoError(t, err, "error creating repository: %s", err)
|
||||||
|
|
||||||
|
// Add fixtures/ca.cert as a target. There's no particular reason
|
||||||
|
// for using this file except that it happens to be available as
|
||||||
|
// a fixture.
|
||||||
|
target, err := NewTarget("latest", "../fixtures/ca.cert")
|
||||||
|
assert.NoError(t, err, "error creating target")
|
||||||
|
err = repo.AddTarget(target)
|
||||||
|
assert.NoError(t, err, "error adding target")
|
||||||
|
|
||||||
|
// Look for the changelist file
|
||||||
|
changelistDirPath := filepath.Join(tempBaseDir, "tuf", gun, "changelist")
|
||||||
|
|
||||||
|
changelistDir, err := os.Open(changelistDirPath)
|
||||||
|
assert.NoError(t, err, "could not open changelist directory")
|
||||||
|
|
||||||
|
fileInfos, err := changelistDir.Readdir(0)
|
||||||
|
assert.NoError(t, err, "could not read changelist directory")
|
||||||
|
|
||||||
|
// Should only be one file in the directory
|
||||||
|
assert.Len(t, fileInfos, 1, "wrong number of changelist files found")
|
||||||
|
|
||||||
|
clName := fileInfos[0].Name()
|
||||||
|
raw, err := ioutil.ReadFile(filepath.Join(changelistDirPath, clName))
|
||||||
|
assert.NoError(t, err, "could not read changelist file %s", clName)
|
||||||
|
|
||||||
|
c := &tufChange{}
|
||||||
|
err = json.Unmarshal(raw, c)
|
||||||
|
assert.NoError(t, err, "could not unmarshal changelist file %s", clName)
|
||||||
|
|
||||||
|
assert.EqualValues(t, 0, c.Actn)
|
||||||
|
assert.Equal(t, "targets", c.Role)
|
||||||
|
assert.Equal(t, "target", c.ChangeType)
|
||||||
|
assert.Equal(t, "latest", c.ChangePath)
|
||||||
|
assert.NotEmpty(t, c.Data)
|
||||||
|
|
||||||
|
changelistDir.Close()
|
||||||
|
|
||||||
|
// Create a second target
|
||||||
|
target, err = NewTarget("current", "../fixtures/ca.cert")
|
||||||
|
assert.NoError(t, err, "error creating target")
|
||||||
|
err = repo.AddTarget(target)
|
||||||
|
assert.NoError(t, err, "error adding target")
|
||||||
|
|
||||||
|
changelistDir, err = os.Open(changelistDirPath)
|
||||||
|
assert.NoError(t, err, "could not open changelist directory")
|
||||||
|
|
||||||
|
// There should now be a second file in the directory
|
||||||
|
fileInfos, err = changelistDir.Readdir(0)
|
||||||
|
assert.NoError(t, err, "could not read changelist directory")
|
||||||
|
|
||||||
|
assert.Len(t, fileInfos, 2, "wrong number of changelist files found")
|
||||||
|
|
||||||
|
newFileFound := false
|
||||||
|
for _, fileInfo := range fileInfos {
|
||||||
|
if fileInfo.Name() != clName {
|
||||||
|
clName2 := fileInfo.Name()
|
||||||
|
raw, err := ioutil.ReadFile(filepath.Join(changelistDirPath, clName2))
|
||||||
|
assert.NoError(t, err, "could not read changelist file %s", clName2)
|
||||||
|
|
||||||
|
c := &tufChange{}
|
||||||
|
err = json.Unmarshal(raw, c)
|
||||||
|
assert.NoError(t, err, "could not unmarshal changelist file %s", clName2)
|
||||||
|
|
||||||
|
assert.EqualValues(t, 0, c.Actn)
|
||||||
|
assert.Equal(t, "targets", c.Role)
|
||||||
|
assert.Equal(t, "target", c.ChangeType)
|
||||||
|
assert.Equal(t, "current", c.ChangePath)
|
||||||
|
assert.NotEmpty(t, c.Data)
|
||||||
|
|
||||||
|
newFileFound = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.True(t, newFileFound, "second changelist file not found")
|
||||||
|
|
||||||
|
changelistDir.Close()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue