Skip to content

Commit 7294ee5

Browse files
committed
feat(scim): rename WriteError to SendError
1 parent 2906701 commit 7294ee5

4 files changed

Lines changed: 17 additions & 18 deletions

File tree

internal/api/scim/middleware.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func (srv *Server) tenant(w http.ResponseWriter, r *http.Request) (context.Conte
4141
// unauthorized answers a request with no valid tenant, per RFC 7644, Section 3.12 and RFC 6750, Section 3.
4242
func (srv *Server) unauthorized(w http.ResponseWriter) error {
4343
w.Header().Set("WWW-Authenticate", `Bearer realm="SCIM"`)
44-
return protocol.WriteError(w, protocol.ErrUnauthorized("Bearer token is missing or invalid"))
44+
return protocol.SendError(w, protocol.ErrUnauthorized("Bearer token is missing or invalid"))
4545
}
4646

4747
// credential is the bearer token a SCIM client authenticates with, per RFC 7644,

internal/api/scim/protocol/protocol.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ func Send(w http.ResponseWriter, status int, obj any) error {
3232
return err
3333
}
3434

35-
// WriteError answers the request with err in the error form of RFC 7644, Section 3.12.
36-
func WriteError(w http.ResponseWriter, err error) error {
35+
// SendError answers the request with err in the error form of RFC 7644, Section 3.12.
36+
func SendError(w http.ResponseWriter, err error) error {
3737
var scimErr *Error
3838
if !errors.As(err, &scimErr) {
3939
scimErr = ErrInternal("Internal server error")

internal/api/scim/protocol/protocol_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ func TestSend(t *testing.T) {
4343
})
4444
}
4545

46-
func TestWriteError(t *testing.T) {
46+
func TestSendError(t *testing.T) {
4747
t.Run("writes the error in the SCIM error form", func(t *testing.T) {
4848
w := httptest.NewRecorder()
4949

50-
require.NoError(t, WriteError(w, ErrUniqueness(`userName "bjensen" is already in use`)))
50+
require.NoError(t, SendError(w, ErrUniqueness(`userName "bjensen" is already in use`)))
5151

5252
assert.Equal(t, http.StatusConflict, w.Code)
5353
assert.Equal(t, MediaType, w.Header().Get("Content-Type"))
@@ -62,7 +62,7 @@ func TestWriteError(t *testing.T) {
6262
t.Run("finds the SCIM error inside a wrapped error", func(t *testing.T) {
6363
w := httptest.NewRecorder()
6464

65-
require.NoError(t, WriteError(w, fmt.Errorf("reading users: %w", ErrNotFound("Endpoint or resource does not exist"))))
65+
require.NoError(t, SendError(w, fmt.Errorf("reading users: %w", ErrNotFound("Endpoint or resource does not exist"))))
6666

6767
assert.Equal(t, http.StatusNotFound, w.Code)
6868
assert.Contains(t, w.Body.String(), "Endpoint or resource does not exist")
@@ -71,7 +71,7 @@ func TestWriteError(t *testing.T) {
7171
t.Run("reports an error it does not recognise without disclosing it", func(t *testing.T) {
7272
w := httptest.NewRecorder()
7373

74-
require.NoError(t, WriteError(w, errors.New("pq: password authentication failed for user")))
74+
require.NoError(t, SendError(w, errors.New("pq: password authentication failed for user")))
7575

7676
assert.Equal(t, http.StatusInternalServerError, w.Code)
7777
assert.Equal(t, MediaType, w.Header().Get("Content-Type"))

internal/api/scim/server.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (srv *Server) Users(w http.ResponseWriter, r *http.Request) error {
6969

7070
query, err := srv.limits.ParseSearchRequest(r.URL.Query())
7171
if err != nil {
72-
return protocol.WriteError(w, err)
72+
return protocol.SendError(w, err)
7373
}
7474

7575
items, total, err := srv.users.List(ctx, query)
@@ -104,10 +104,10 @@ func (srv *Server) CreateUser(w http.ResponseWriter, r *http.Request) error {
104104

105105
user, err := srv.decodeUser(r)
106106
if err != nil {
107-
return protocol.WriteError(w, err)
107+
return protocol.SendError(w, err)
108108
}
109109
if err := srv.validateUser(user); err != nil {
110-
return protocol.WriteError(w, err)
110+
return protocol.SendError(w, err)
111111
}
112112

113113
created, err := srv.users.Create(ctx, user)
@@ -129,10 +129,10 @@ func (srv *Server) ReplaceUser(w http.ResponseWriter, r *http.Request) error {
129129

130130
user, err := srv.decodeUser(r)
131131
if err != nil {
132-
return protocol.WriteError(w, err)
132+
return protocol.SendError(w, err)
133133
}
134134
if err := srv.validateUser(user); err != nil {
135-
return protocol.WriteError(w, err)
135+
return protocol.SendError(w, err)
136136
}
137137

138138
replaced, err := srv.users.Replace(ctx, id.String(), user)
@@ -163,7 +163,7 @@ func (srv *Server) DeleteUser(w http.ResponseWriter, r *http.Request) error {
163163
}
164164

165165
func (srv *Server) NotFound(w http.ResponseWriter, r *http.Request) error {
166-
return protocol.WriteError(w, protocol.ErrNotFound("Endpoint or resource does not exist"))
166+
return protocol.SendError(w, protocol.ErrNotFound("Endpoint or resource does not exist"))
167167
}
168168

169169
func (srv *Server) validateUser(user *core.User) *protocol.Error {
@@ -213,21 +213,21 @@ func (srv *Server) byID[T core.Resource](w http.ResponseWriter, r *http.Request,
213213

214214
func (srv *Server) sendError(w http.ResponseWriter, r *http.Request, err error) error {
215215
if scimErr, ok := errors.AsType[*protocol.Error](err); ok {
216-
return protocol.WriteError(w, scimErr)
216+
return protocol.SendError(w, scimErr)
217217
}
218218
return srv.internalError(w, r, err)
219219
}
220220

221221
func (srv *Server) internalError(w http.ResponseWriter, r *http.Request, err error) error {
222222
observability.LogEntrySetField(r, "error", err.Error())
223-
return protocol.WriteError(w, protocol.ErrInternal("Internal server error"))
223+
return protocol.SendError(w, protocol.ErrInternal("Internal server error"))
224224
}
225225

226226
func (srv *Server) rejectFilter(w http.ResponseWriter, r *http.Request, unsupported *protocol.Error) (bool, error) {
227227
if !r.URL.Query().Has("filter") {
228228
return false, nil
229229
}
230-
return true, protocol.WriteError(w, unsupported)
230+
return true, protocol.SendError(w, unsupported)
231231
}
232232

233233
func newUserSchema(baseURL string) *core.Schema {
@@ -239,8 +239,7 @@ func newUserSchema(baseURL string) *core.Schema {
239239
AsRequired().
240240
UniqueOn(core.UniquenessServer),
241241

242-
core.NewAttribute("name", core.TypeComplex,
243-
"The components of the user's name.").
242+
core.NewAttribute("name", core.TypeComplex, "The components of the user's name.").
244243
With(
245244
core.NewAttribute("formatted", core.TypeString, "The name formatted for display."),
246245
core.NewAttribute("familyName", core.TypeString, "The family name of the User."),

0 commit comments

Comments
 (0)