1 package apperror_test
2
3 import (
4 "errors"
5 "fmt"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9
10 "edge-infra.dev/pkg/edge/iam/apperror"
11 )
12
13 func TestRedirectErrorLogEntry(t *testing.T) {
14 re := apperror.NewRedirectError("/path/to/redirect", "some message", errors.New("some error"))
15
16 code, loc, message := re.Redirect()
17 l, buf := testLogger()
18 msg := fmt.Sprintf("(%d) redirecting to %v. %v", code, loc, message)
19
20 l.Error(re, msg)
21
22 entry := getLogEntry(buf)
23 assert.Equal(t, "redirect (some error)", entry["error"])
24 assert.Equal(t, "(302) redirecting to /path/to/redirect. some message", entry["message"])
25 }
26
27 func TestRedirectErrorLogEntryWithoutErr(t *testing.T) {
28 re := apperror.NewRedirectError("/path/to/redirect", "strong login is needed", nil)
29
30 code, location, msg := re.Redirect()
31
32 l, buf := testLogger()
33 errMsg := fmt.Sprintf("(%d) redirecting to `%v`. %v", code, location, msg)
34
35 l.Error(re, errMsg)
36
37 entry := getLogEntry(buf)
38 assert.Equal(t, "redirect", entry["error"])
39 assert.Equal(t, "(302) redirecting to `/path/to/redirect`. strong login is needed", entry["message"])
40 }
41
42 func TestNewRedirectErrorWithoutErr(t *testing.T) {
43 re := apperror.NewRedirectError("/path/to/redirect", "some message", nil)
44
45 code, loc, _ := re.Redirect()
46 assert.Equal(t, 302, code)
47 assert.Equal(t, "/path/to/redirect", loc)
48 assert.Equal(t, "redirect", re.Error())
49 }
50
51 func TestNewRedirectErrorWithErr(t *testing.T) {
52 re := apperror.NewRedirectError("/path/to/redirect", "some message", errors.New("some error"))
53
54 code, loc, _ := re.Redirect()
55 assert.Equal(t, 302, code)
56 assert.Equal(t, "/path/to/redirect", loc)
57 assert.Equal(t, "redirect (some error)", re.Error())
58 }
59
60 func TestWithHTTPStatus(t *testing.T) {
61 re := apperror.NewRedirectError("/path/to/redirect", "some message", errors.New("some error")).
62 WithHTTPStatus(307)
63
64 code, loc, _ := re.Redirect()
65 assert.Equal(t, 307, code)
66 assert.Equal(t, "/path/to/redirect", loc)
67 assert.Equal(t, "redirect (some error)", re.Error())
68 }
69
View as plain text