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()) } } }