Files

38 lines
1.4 KiB
Go

package cli
import (
"bytes"
"strings"
"testing"
"time"
)
func TestRepositoryRejectsUntrustedRequests(t *testing.T) {
for _, input := range []string{`{}`, `{"directory":"secret-relative","suite":"resolute","architecture":"amd64","versions":{}}`,
`{"directory":"secret-relative","suite":"resolute","architecture":"amd64","versions":{},"repositoryAuthenticated":true}`} {
var out, diagnostics bytes.Buffer
if Run([]string{"verify-repository"}, strings.NewReader(input), &out, &diagnostics, time.Now) == 0 {
t.Fatal("accepted invalid request")
}
if out.Len() != 0 || strings.Contains(diagnostics.String(), "secret-relative") {
t.Fatal("invalid response leaked input")
}
}
}
func TestArtifactCommandRejectsCallerTrust(t *testing.T) {
for _, field := range []string{`"packageBytesVerified":true`, `"repositoryAuthenticated":true`, `"lock":{}`} {
var out, diagnostics bytes.Buffer
input := `{"directory":"secret-relative","artifactDirectory":"secret-artifacts","suite":"resolute","architecture":"amd64","versions":{},` + field + `}`
if Run([]string{"verify-artifacts"}, strings.NewReader(input), &out, &diagnostics, time.Now) == 0 {
t.Fatal("caller trust accepted")
}
if out.Len() != 0 || strings.Contains(diagnostics.String(), "secret") {
t.Fatal("input leaked")
}
if diagnostics.String() != "invalid artifact verification request\n" {
t.Fatal("request was not rejected at the protocol boundary", diagnostics.String())
}
}
}