Files
wxiaoguangandsilverwind d1d702bea9 refactor: user error system (#40308)
Introduce "FlashErrorAuto" for "XxxErrorAuto" family and simplify the
error handling logic.

* Use ErrorUnwrapForHTML for web error messages 
* Use ErrorUnwrapForUser for api error messages
* Make Flash message can take up to about 3000 bytes

Next step: completely refactor "ctx.ServerError"

---------

Co-authored-by: silverwind <me@silverwind.io>
2026-11-10 16:29:36 +00:00

30 lines
1.0 KiB
Go

// Copyright 2026 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package middleware
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestFlashMessageEncode(t *testing.T) {
assert.Empty(t, flashMessageEncode(nil, 100))
messages := map[string]string{"error": "<div>\n<div>", "success": "🌞"}
assert.Equal(t, messages, flashMessageDecode(flashMessageEncode(messages, 100)))
assert.Equal(t, map[string]string{"error": "删除分支失败"}, flashMessageDecode(flashMessageEncode(map[string]string{"error": "删除分支\xff失败"}, 100)))
const limit = 99
encoded := flashMessageEncode(map[string]string{"error": strings.Repeat("x", 200)}, limit)
assert.Len(t, encoded, limit/3*4)
decoded := flashMessageDecode(encoded)
assert.Equal(t, map[string]string{"error": strings.Repeat("x", limit-len("error="))}, decoded)
// also support legacy format
decoded = flashMessageDecode("error=invalid%20message")
assert.Equal(t, map[string]string{"error": "invalid message"}, decoded)
}