fix: avoid panic in badge handler (#3741)

This commit is contained in:
Alexander Matyushentsev 2020-06-09 19:01:25 -07:00 committed by GitHub
parent e143fb4cb2
commit 460f6653dc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 1 deletions

View file

@ -123,7 +123,11 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
badge = svgWidthPattern.ReplaceAllString(badge, fmt.Sprintf(`<svg width="%d" $2`, svgWidthWithRevision))
badge = displayNonePattern.ReplaceAllString(badge, `display="inline"`)
badge = revisionRectColorPattern.ReplaceAllString(badge, fmt.Sprintf(`id="revisionRect" fill="%s" $2`, rightColorString))
badge = replaceFirstGroupSubMatch(revisionTextPattern, badge, fmt.Sprintf("(%s)", revision[:7]))
shortRevision := revision
if len(shortRevision) > 7 {
shortRevision = shortRevision[:7]
}
badge = replaceFirstGroupSubMatch(revisionTextPattern, badge, fmt.Sprintf("(%s)", shortRevision))
}
w.Header().Set("Content-Type", "image/svg+xml")

View file

@ -111,6 +111,22 @@ func TestHandlerRevisionIsEnabledNoOperationState(t *testing.T) {
assert.NotContains(t, response, "(aa29b85)")
}
func TestHandlerRevisionIsEnabledShortCommitSHA(t *testing.T) {
app := testApp.DeepCopy()
app.Status.OperationState.SyncResult.Revision = "abc"
settingsMgr := settings.NewSettingsManager(context.Background(), fake.NewSimpleClientset(&argoCDCm, &argoCDSecret), "default")
handler := NewHandler(appclientset.NewSimpleClientset(app), settingsMgr, "default")
req, err := http.NewRequest("GET", "/api/badge?name=testApp&revision=true", nil)
assert.NoError(t, err)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
response := rr.Body.String()
assert.Contains(t, response, "(abc)")
}
func TestHandlerFeatureIsDisabled(t *testing.T) {
argoCDCmDisabled := argoCDCm.DeepCopy()