(t *testing.T)
| 13 | ) |
| 14 | |
| 15 | func TestIsNotFoundError(t *testing.T) { |
| 16 | tests := []struct { |
| 17 | name string |
| 18 | err error |
| 19 | want bool |
| 20 | }{ |
| 21 | {name: "nil error", err: nil, want: false}, |
| 22 | {name: "404 numeric literal", err: errors.New("HTTP 404: Not Found"), want: true}, |
| 23 | {name: "lowercase not found", err: errors.New("failed to fetch file: not found"), want: true}, |
| 24 | {name: "uppercase NOT FOUND", err: errors.New("RESOURCE NOT FOUND"), want: true}, |
| 25 | {name: "wrapped lowercase not found", err: fmt.Errorf("request failed: %w", errors.New("not found")), want: true}, |
| 26 | {name: "bare 404 in message", err: errors.New("server returned 404"), want: true}, |
| 27 | {name: "Could not resolve (DNS)", err: errors.New("Could not resolve host"), want: false}, |
| 28 | {name: "401 Unauthorized", err: errors.New("HTTP 401: Unauthorized"), want: false}, |
| 29 | {name: "500 Internal Server Error", err: errors.New("HTTP 500: Internal Server Error"), want: false}, |
| 30 | {name: "generic error", err: errors.New("something went wrong"), want: false}, |
| 31 | {name: "410 Gone", err: errors.New("HTTP 410: Gone"), want: false}, |
| 32 | } |
| 33 | |
| 34 | for _, tt := range tests { |
| 35 | t.Run(tt.name, func(t *testing.T) { |
| 36 | got := errorutil.IsNotFoundError(tt.err) |
| 37 | assert.Equal(t, tt.want, got, "IsNotFoundError result mismatch for subtest %s", tt.name) |
| 38 | }) |
| 39 | } |
| 40 | } |
| 41 | |
| 42 | func TestIsForbiddenError(t *testing.T) { |
| 43 | tests := []struct { |
nothing calls this directly
no test coverage detected