46 lines
1.5 KiB
Go
46 lines
1.5 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
corerouter "git.ilapage.cn/OPC/chorus/internal/core/router"
|
|
"git.ilapage.cn/OPC/chorus/portal/service"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func TestMVP1ServiceErrorsHaveStableClientCodes(t *testing.T) {
|
|
gin.SetMode(gin.TestMode)
|
|
tests := []struct {
|
|
err error
|
|
code string
|
|
want int
|
|
}{
|
|
{service.ErrInvalidMetadata, "invalid_metadata", 400},
|
|
{service.ErrInvalidCapability, "invalid_capability", 400},
|
|
{service.ErrInvalidClientID, "invalid_client_id", 400},
|
|
{service.ErrImageMapping, "invalid_image_mapping", 400},
|
|
{service.ErrImagePosition, "invalid_image_position", 400},
|
|
{service.ErrImageRole, "invalid_image_role", 400},
|
|
{service.ErrImagePrimary, "invalid_primary_count", 400},
|
|
{service.ErrInvalidRoleRule, "invalid_role_rule", 400},
|
|
{service.ErrInvalidNote, "invalid_image_note", 400},
|
|
{service.ErrInvalidLimit, "invalid_limit", 400},
|
|
{service.ErrInvalidCursor, "invalid_cursor", 400},
|
|
{service.ErrCursorExpired, "cursor_expired", 400},
|
|
{corerouter.ErrRouteNotConfigured, "route_not_configured", 503},
|
|
{corerouter.ErrRouteUnavailable, "route_unavailable", 503},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.code, func(t *testing.T) {
|
|
response := httptest.NewRecorder()
|
|
context, _ := gin.CreateTestContext(response)
|
|
(&Handler{}).serviceError(context, test.err)
|
|
if response.Code != test.want || !strings.Contains(response.Body.String(), `"code":"`+test.code+`"`) {
|
|
t.Fatalf("response=%d %s", response.Code, response.Body.String())
|
|
}
|
|
})
|
|
}
|
|
}
|