...
1 package gcp
2
3 import (
4 "errors"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8 "google.golang.org/api/googleapi"
9 )
10
11 var (
12 err = errors.New("test")
13 )
14
15 func TestWrap(t *testing.T) {
16 assert.Nil(t, Wrap(nil))
17 assert.NotNil(t, Wrap(err))
18 }
19
20 func TestNew(t *testing.T) {
21 gerr := New("test")
22 assert.Equal(t, err.Error(), gerr.Error())
23 }
24
25 func TestError(t *testing.T) {
26 gerr := Wrap(err)
27 assert.Equal(t, err.Error(), gerr.Error())
28 }
29
30 func TestUnwrap(t *testing.T) {
31 gerr := Wrap(err)
32 assert.Equal(t, err, gerr.Unwrap())
33 assert.True(t, errors.Is(gerr, err))
34 }
35
36 func TestExtensions(t *testing.T) {
37 gcpError := &googleapi.Error{
38 Code: 404,
39 Message: "not found",
40 Details: []interface{}{
41 map[string]interface{}{
42 "status": "not found",
43 },
44 },
45 Header: map[string][]string{"Host": {"localhost"}},
46 Body: `{"error":{"message":"Error message for StatusNotFound."}}`,
47 Errors: []googleapi.ErrorItem{
48 {
49 Reason: "keyInvalid",
50 Message: "Not Found",
51 },
52 },
53 }
54
55 gerror := Wrap(gcpError)
56 assert.Equal(t, gcpError, gerror.Unwrap())
57 assert.Equal(t, "not found", gerror.Error())
58 ext := gerror.Extensions()
59 assert.Equal(t, 404, ext["statusCode"])
60 assert.Equal(t, "localhost", ext["host"])
61 }
62
View as plain text