Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(167)

Side by Side Diff: appengine/ephelper/assertions/errors.go

Issue 1750143003: Remove ephelper and other endpoints code. (Closed) Base URL: https://github.com/luci/luci-go@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package assertions
6
7 import (
8 "fmt"
9
10 "github.com/GoogleCloudPlatform/go-endpoints/endpoints"
11
12 "github.com/luci/luci-go/common/testing/assertions"
13 "github.com/smartystreets/goconvey/convey"
14 )
15
16 // ShouldHaveAPIError is a goconvey assertion, asserting that the supplied
17 // "actual" value is an *endpoints.APIError.
18 //
19 // One additional "expected" string may be optionally included. If included, the
20 // *endpoints.APIError's message is asserted to contain the expected string
21 // using ShouldErrorLike.
22 func ShouldHaveAPIError(actual interface{}, expected ...interface{}) string {
23 if len(expected) != 1 {
24 return "exactly one expected argument must be supplied, and it m ust be an *endpoints.APIError."
25 }
26 eerr, ok := expected[0].(*endpoints.APIError)
27 if !ok {
28 return "expected argument must be an *endpoints.APIError."
29 }
30
31 if err := convey.ShouldHaveSameTypeAs(actual, (*endpoints.APIError)(nil) ); err != "" {
32 return err
33 }
34
35 aerr := actual.(*endpoints.APIError)
36
37 // Create copies and strip the messages so we can compare values. We do this
38 // rather than assert individual properties because the joint output is nicer
39 // to look at.
40 aerrCopy := *aerr
41 aerrCopy.Msg = ""
42
43 eerrCopy := *eerr
44 eerrCopy.Msg = ""
45
46 if err := convey.ShouldResemble(aerrCopy, eerrCopy); err != "" {
47 return err
48 }
49
50 // If a ShouldErrLike string was supplied, compare that, too.
51 if eerr.Msg != "" {
52 return assertions.ShouldErrLike(aerr, eerr.Msg)
53 }
54 return ""
55 }
56
57 // ShouldBeInternalServerError asserts that "actual" is an *endpoints.APIError
58 // generated by endpoints.NewInternalServerError.
59 //
60 // One additional "expected" string may be optionally included. If included, the
61 // *endpoints.APIError's message is asserted to contain the expected string
62 // using ShouldErrorLike.
63 func ShouldBeInternalServerError(actual interface{}, expected ...interface{}) st ring {
64 msg, err := getErrLikeMsg(expected)
65 if err != "" {
66 return err
67 }
68 return ShouldHaveAPIError(actual, endpoints.NewInternalServerError(msg))
69 }
70
71 // ShouldBeBadRequestError asserts that "actual" is an *endpoints.APIError
72 // generated by endpoints.NewBadRequestError.
73 //
74 // One additional "expected" string may be optionally included. If included, the
75 // *endpoints.APIError's message is asserted to contain the expected string
76 // using ShouldErrorLike.
77 func ShouldBeBadRequestError(actual interface{}, expected ...interface{}) string {
78 msg, err := getErrLikeMsg(expected)
79 if err != "" {
80 return err
81 }
82 return ShouldHaveAPIError(actual, endpoints.NewBadRequestError(msg))
83 }
84
85 // ShouldBeUnauthorizedError asserts that "actual" is an *endpoints.APIError
86 // generated by endpoints.NewUnauthorizedError.
87 //
88 // One additional "expected" string may be optionally included. If included, the
89 // *endpoints.APIError's message is asserted to contain the expected string
90 // using ShouldErrorLike.
91 func ShouldBeUnauthorizedError(actual interface{}, expected ...interface{}) stri ng {
92 msg, err := getErrLikeMsg(expected)
93 if err != "" {
94 return err
95 }
96 return ShouldHaveAPIError(actual, endpoints.NewUnauthorizedError(msg))
97 }
98
99 // ShouldBeNotFoundError asserts that "actual" is an *endpoints.APIError
100 // generated by endpoints.NewNotFoundError.
101 //
102 // One additional "expected" string may be optionally included. If included, the
103 // *endpoints.APIError's message is asserted to contain the expected string
104 // using ShouldErrorLike.
105 func ShouldBeNotFoundError(actual interface{}, expected ...interface{}) string {
106 msg, err := getErrLikeMsg(expected)
107 if err != "" {
108 return err
109 }
110 return ShouldHaveAPIError(actual, endpoints.NewNotFoundError(msg))
111 }
112
113 // ShouldBeForbiddenError asserts that "actual" is an *endpoints.APIError
114 // generated by endpoints.NewForbiddenError.
115 //
116 // One additional "expected" string may be optionally included. If included, the
117 // *endpoints.APIError's message is asserted to contain the expected string
118 // using ShouldErrorLike.
119 func ShouldBeForbiddenError(actual interface{}, expected ...interface{}) string {
120 msg, err := getErrLikeMsg(expected)
121 if err != "" {
122 return err
123 }
124 return ShouldHaveAPIError(actual, endpoints.NewForbiddenError(msg))
125 }
126
127 // ShouldBeConflictError asserts that "actual" is an *endpoints.APIError
128 // generated by endpoints.NewConflictError.
129 //
130 // One additional "expected" string may be optionally included. If included, the
131 // *endpoints.APIError's message is asserted to contain the expected string
132 // using ShouldErrorLike.
133 func ShouldBeConflictError(actual interface{}, expected ...interface{}) string {
134 msg, err := getErrLikeMsg(expected)
135 if err != "" {
136 return err
137 }
138 return ShouldHaveAPIError(actual, endpoints.NewConflictError(msg))
139 }
140
141 func getErrLikeMsg(expected []interface{}) (string, string) {
142 switch len(expected) {
143 case 0:
144 return "", ""
145 case 1:
146 s, ok := expected[0].(string)
147 if !ok {
148 return "", fmt.Sprintf("expected message must be string, not %T", expected[0])
149 }
150 return s, ""
151
152 default:
153 return "", "expected must have at most one argument"
154 }
155 }
OLDNEW
« no previous file with comments | « appengine/apigen_examples/dumb_counter_mvm/service/main.go ('k') | appengine/ephelper/context.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698