Hide credentials in checkout preparation errors
This commit is contained in:
@@ -37,6 +37,29 @@ func TestVersionCommand(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCIDeliverRedactsRemoteCredentialsOnPreparationFailure(t *testing.T) {
|
||||
t.Setenv("NO_PROXY", "*")
|
||||
t.Setenv("no_proxy", "*")
|
||||
t.Setenv("GIT_CONFIG_GLOBAL", os.DevNull)
|
||||
t.Setenv("GIT_CONFIG_NOSYSTEM", "1")
|
||||
t.Setenv("GIT_TERMINAL_PROMPT", "0")
|
||||
repository := newCLIRepository(t)
|
||||
commit := cliGitOutput(t, repository, "rev-parse", "HEAD")
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusServiceUnavailable)
|
||||
}))
|
||||
defer server.Close()
|
||||
remote := strings.Replace(server.URL, "http://", "http://review-user:review-password@", 1) + "/repo.git"
|
||||
var stdout, stderr bytes.Buffer
|
||||
status := run(t.Context(), []string{"ci-deliver", "--repo", repository, "--remote", remote, "--commit", commit, "v1.2.3"}, &stdout, &stderr)
|
||||
if status != 1 || stdout.Len() != 0 || !strings.Contains(stderr.String(), "prepare tagged checkout") || !strings.Contains(stderr.String(), "repo.git") {
|
||||
t.Fatalf("status = %d, stdout = %q, stderr = %q", status, stdout.String(), stderr.String())
|
||||
}
|
||||
if strings.Contains(stderr.String(), "review-user") || strings.Contains(stderr.String(), "review-password") {
|
||||
t.Fatalf("CLI preparation diagnostic exposes credentials: %q", stderr.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestPublishCommandReportsUnknownForPeeledOnlyRecovery(t *testing.T) {
|
||||
repository := newCLIRepository(t)
|
||||
writeRepositoryFile(t, repository, "docs/releases/v1.2.3.md", "# Example Product v1.2.3\n\nRelease note.\n")
|
||||
|
||||
Reference in New Issue
Block a user