| 117 | } |
| 118 | |
| 119 | func TestStatus(t *testing.T) { |
| 120 | stat := Status(codes.FailedPrecondition, "bad data") |
| 121 | require.Equal(t, codes.FailedPrecondition, stat.Code()) |
| 122 | require.Equal(t, "bad data", stat.Message()) |
| 123 | require.Len(t, stat.Details(), 0) |
| 124 | |
| 125 | originalDetails := []proto.Message{&ErrorDetails{Cause: WRONG_CLUSTER_VALIDATION_LABEL}, &ErrorDetails{Cause: UNKNOWN_CAUSE}} |
| 126 | stat = Status(codes.FailedPrecondition, "bad data", originalDetails...) |
| 127 | require.Equal(t, codes.FailedPrecondition, stat.Code()) |
| 128 | require.Equal(t, "bad data", stat.Message()) |
| 129 | details := stat.Details() |
| 130 | require.Len(t, details, 2) |
| 131 | for i := range details { |
| 132 | det, ok := details[i].(*ErrorDetails) |
| 133 | require.True(t, ok) |
| 134 | require.Equal(t, originalDetails[i], det) |
| 135 | } |
| 136 | |
| 137 | badDetails := []proto.Message{nil} |
| 138 | stat = Status(codes.Internal, "bad details", badDetails...) |
| 139 | require.Equal(t, codes.InvalidArgument, stat.Code()) |
| 140 | require.Equal(t, `error while creating details for a Status with code Internal and error message "bad details": proto: Marshal called with nil`, stat.Message()) |
| 141 | } |
| 142 | |
| 143 | func TestIsCanceled(t *testing.T) { |
| 144 | testCases := map[string]struct { |