Repository navigation
Expand file tree
/
Copy patherrors_test.go
More file actions
103 lines (93 loc) · 2.32 KB
/
Copy patherrors_test.go
File metadata and controls
103 lines (93 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package mem0
import (
"errors"
"net/http"
"testing"
)
func TestAPIError_Error(t *testing.T) {
tests := []struct {
name string
err *APIError
expected string
}{
{
name: "with detail",
err: &APIError{StatusCode: 400, Detail: "invalid request"},
expected: "mem0: API error (status 400): invalid request",
},
{
name: "without detail",
err: &APIError{StatusCode: 500},
expected: "mem0: API error (status 500)",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := tt.err.Error(); got != tt.expected {
t.Errorf("got %q, want %q", got, tt.expected)
}
})
}
}
func TestAPIError_Unwrap(t *testing.T) {
tests := []struct {
name string
err *APIError
expected error
}{
{
name: "not found",
err: &APIError{StatusCode: http.StatusNotFound},
expected: ErrNotFound,
},
{
name: "unauthorized",
err: &APIError{StatusCode: http.StatusUnauthorized},
expected: ErrUnauthorized,
},
{
name: "bad request",
err: &APIError{StatusCode: http.StatusBadRequest},
expected: ErrBadRequest,
},
{
name: "rate limited",
err: &APIError{StatusCode: http.StatusTooManyRequests},
expected: ErrRateLimited,
},
{
name: "unknown",
err: &APIError{StatusCode: 500},
expected: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
unwrapped := tt.err.Unwrap()
if unwrapped != tt.expected {
t.Errorf("got %v, want %v", unwrapped, tt.expected)
}
})
}
}
func TestErrorHelpers(t *testing.T) {
notFoundErr := &APIError{StatusCode: http.StatusNotFound}
unauthorizedErr := &APIError{StatusCode: http.StatusUnauthorized}
badRequestErr := &APIError{StatusCode: http.StatusBadRequest}
rateLimitedErr := &APIError{StatusCode: http.StatusTooManyRequests}
if !IsNotFoundError(notFoundErr) {
t.Error("expected IsNotFoundError to return true")
}
if !errors.Is(notFoundErr, ErrNotFound) {
t.Error("expected errors.Is to match ErrNotFound")
}
if !IsUnauthorizedError(unauthorizedErr) {
t.Error("expected IsUnauthorizedError to return true")
}
if !IsBadRequestError(badRequestErr) {
t.Error("expected IsBadRequestError to return true")
}
if !IsRateLimitedError(rateLimitedErr) {
t.Error("expected IsRateLimitedError to return true")
}
}