-
Notifications
You must be signed in to change notification settings - Fork 0
/
errors_test.go
134 lines (109 loc) · 3.48 KB
/
errors_test.go
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package provider
import (
"errors"
"net/http"
"strings"
"testing"
"time"
"github.com/stretchr/testify/require"
"golang.org/x/oauth2"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
var (
errTimeErrorUnknown = errors.New("testing error")
errTimeErrorKnown = errors.New("ErrProviderNotStarted: testing error")
)
// TestReverseErrorPrefixes verifies that init correctly
// sets up reverseErrorPrefixes.
func TestReverseErrorPrefixes(t *testing.T) {
var r = require.New(t)
for k, v := range ErrorPrefixes {
err, found := reverseErrorPrefixes[v]
r.True(found, "error %s not found in reverseProviderErrors", v)
r.Equal(err, k, "expected error %s", v)
}
}
func TestNewTimeErrorUnknown(t *testing.T) {
var r = require.New(t)
te := NewTimeError(errTimeErrorUnknown)
r.NotEmpty(te.Time)
r.True(te.Time.Before(time.Now()))
r.Equal(errTimeErrorUnknown, te.error)
}
// TestNewTimeErrorKnown checks the standard behavior of timeError.
// creating a new timeError with an unknown value and checking it's value.
func TestNewTimeErrorKnown(t *testing.T) {
var r = require.New(t)
te := NewTimeError(errTimeErrorKnown)
r.NotEmpty(te.Time)
r.True(te.Time.Before(time.Now()))
r.Equal(ErrProviderNotStarted, te.error)
}
// TestNewTimeErrorError confirms that timeError.Error() functions correctly.
func TestNewTimeErrorError(t *testing.T) {
var r = require.New(t)
te := NewTimeError(errTimeErrorUnknown)
r.Equal(errTimeErrorUnknown.Error(), te.Error())
}
// TestNewTimeErrorNil assuages that NewTimeError functions correctly when created with a nil value.
func TestNewTimeErrorNil(t *testing.T) {
var r = require.New(t)
te := NewTimeError(nil)
r.NotEmpty(te.Time)
r.True(te.Time.Before(time.Now()))
r.Nil(te.error)
}
// TestNewTimeErrorErrorNil is a check on the behavior of timeError.Error()
// when timeError.error is nil.
func TestNewTimeErrorErrorNil(t *testing.T) {
var r = require.New(t)
te := NewTimeError(nil)
r.Equal("", te.Error())
}
// TestPrefixErrorRetrieveError checks that the *oauth2.RetrieveError error
// is processed correctly.
func TestPrefixErrorRetrieveError(t *testing.T) {
var r = require.New(t)
var err *oauth2.RetrieveError = &oauth2.RetrieveError{
Response: &http.Response{
StatusCode: http.StatusUnauthorized,
},
}
if err := PrefixError("failed to get access token", err); err != nil {
r.True(strings.HasPrefix(err.Error(), ErrorPrefixes[ErrInvalidCredentials]))
} else {
t.Error("expected a prefixed error")
}
}
// TestPrefixErrorRetrieveError checks that the grpc *status.Status error
// is processed correctly.
func TestPrefixErrorGRPCStatus(t *testing.T) {
var r = require.New(t)
var err = status.Error(codes.PermissionDenied, "")
if err := PrefixError("authz permission denied", err); err != nil {
r.True(strings.HasPrefix(err.Error(), ErrorPrefixes[ErrPermissionDenied]))
} else {
t.Error("expected a prefixed error")
}
}
func TestPrefixErrorNil(t *testing.T) {
var r = require.New(t)
var err error
if err := PrefixError("failed to get access token", err); err != nil {
r.Equal("failed to get access token", err.Error())
} else {
t.Error("expected a prefixed error")
}
}
func TestPrefixErrorOther(t *testing.T) {
var r = require.New(t)
var err = errTimeErrorUnknown
if err := PrefixError("failed to get access token", err); err != nil {
r.Equal("failed to get access token: testing error", err.Error())
} else {
t.Error("expected a prefixed error")
}
}