38 lines
1.4 KiB
Go
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())
|
|
}
|
|
}
|
|
}
|