Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ linters:
- musttag
- nestif
- nlreturn
- noinlineerr
- nonamedreturns
- paralleltest
- testpackage
Expand All @@ -31,6 +32,7 @@ linters:
- whitespace
- wrapcheck
- wsl
- wsl_v5
settings:
dupl:
threshold: 200
Expand Down
30 changes: 15 additions & 15 deletions api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,64 +207,64 @@ func TestAPIErrors(t *testing.T) {
err := New(402, "this failed %s", "yada")
require.Error(t, err)
assert.EqualValues(t, 402, err.Code())
assert.EqualValues(t, "this failed yada", err.Error())
assert.Equal(t, "this failed yada", err.Error())

err = NotFound("this failed %d", 1)
require.Error(t, err)
assert.EqualValues(t, http.StatusNotFound, err.Code())
assert.EqualValues(t, "this failed 1", err.Error())
assert.Equal(t, "this failed 1", err.Error())

err = NotFound("")
require.Error(t, err)
assert.EqualValues(t, http.StatusNotFound, err.Code())
assert.EqualValues(t, "Not found", err.Error())
assert.Equal(t, "Not found", err.Error())

err = NotImplemented("not implemented")
require.Error(t, err)
assert.EqualValues(t, http.StatusNotImplemented, err.Code())
assert.EqualValues(t, "not implemented", err.Error())
assert.Equal(t, "not implemented", err.Error())

err = MethodNotAllowed("GET", []string{"POST", "PUT"})
require.Error(t, err)
assert.EqualValues(t, http.StatusMethodNotAllowed, err.Code())
assert.EqualValues(t, "method GET is not allowed, but [POST,PUT] are", err.Error())
assert.Equal(t, "method GET is not allowed, but [POST,PUT] are", err.Error())

err = InvalidContentType("application/saml", []string{"application/json", "application/x-yaml"})
require.Error(t, err)
assert.EqualValues(t, http.StatusUnsupportedMediaType, err.Code())
assert.EqualValues(t, "unsupported media type \"application/saml\", only [application/json application/x-yaml] are allowed", err.Error())
assert.Equal(t, "unsupported media type \"application/saml\", only [application/json application/x-yaml] are allowed", err.Error())

err = InvalidResponseFormat("application/saml", []string{"application/json", "application/x-yaml"})
require.Error(t, err)
assert.EqualValues(t, http.StatusNotAcceptable, err.Code())
assert.EqualValues(t, "unsupported media type requested, only [application/json application/x-yaml] are available", err.Error())
assert.Equal(t, "unsupported media type requested, only [application/json application/x-yaml] are available", err.Error())
}

func TestValidateName(t *testing.T) {
v := &Validation{Name: "myValidation", message: "myMessage"}

// unchanged
vv := v.ValidateName("")
assert.EqualValues(t, "myValidation", vv.Name)
assert.EqualValues(t, "myMessage", vv.message)
assert.Equal(t, "myValidation", vv.Name)
assert.Equal(t, "myMessage", vv.message)

// forced
vv = v.ValidateName("myNewName")
assert.EqualValues(t, "myNewName.myValidation", vv.Name)
assert.EqualValues(t, "myNewName.myMessage", vv.message)
assert.Equal(t, "myNewName.myValidation", vv.Name)
assert.Equal(t, "myNewName.myMessage", vv.message)

v.Name = ""
v.message = "myMessage"

// unchanged
vv = v.ValidateName("")
assert.EqualValues(t, "", vv.Name)
assert.EqualValues(t, "myMessage", vv.message)
assert.Empty(t, vv.Name)
assert.Equal(t, "myMessage", vv.message)

// forced
vv = v.ValidateName("myNewName")
assert.EqualValues(t, "myNewName", vv.Name)
assert.EqualValues(t, "myNewNamemyMessage", vv.message)
assert.Equal(t, "myNewName", vv.Name)
assert.Equal(t, "myNewNamemyMessage", vv.message)
}

func TestMarshalJSON(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ func (v *APIVerificationFailed) Error() string {
hasSpecMissing := len(v.MissingSpecification) > 0

if hasRegMissing {
buf.WriteString(fmt.Sprintf("missing [%s] %s registrations", strings.Join(v.MissingRegistration, ", "), v.Section))
fmt.Fprintf(buf, "missing [%s] %s registrations", strings.Join(v.MissingRegistration, ", "), v.Section)
}

if hasRegMissing && hasSpecMissing {
buf.WriteString("\n")
}

if hasSpecMissing {
buf.WriteString(fmt.Sprintf("missing from spec file [%s] %s", strings.Join(v.MissingSpecification, ", "), v.Section))
fmt.Fprintf(buf, "missing from spec file [%s] %s", strings.Join(v.MissingSpecification, ", "), v.Section)
}

return buf.String()
Expand Down
36 changes: 18 additions & 18 deletions parsing.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,24 @@ type ParseError struct {
message string
}

// NewParseError creates a new parse error
func NewParseError(name, in, value string, reason error) *ParseError {
var msg string
if in == "" {
msg = fmt.Sprintf(parseErrorTemplContentNoIn, name, value, reason)
} else {
msg = fmt.Sprintf(parseErrorTemplContent, name, in, value, reason)
}
return &ParseError{
code: http.StatusBadRequest,
Name: name,
In: in,
Value: value,
Reason: reason,
message: msg,
}
}

func (e *ParseError) Error() string {
return e.message
}
Expand Down Expand Up @@ -59,21 +77,3 @@ const (
parseErrorTemplContent = `parsing %s %s from %q failed, because %s`
parseErrorTemplContentNoIn = `parsing %s from %q failed, because %s`
)

// NewParseError creates a new parse error
func NewParseError(name, in, value string, reason error) *ParseError {
var msg string
if in == "" {
msg = fmt.Sprintf(parseErrorTemplContentNoIn, name, value, reason)
} else {
msg = fmt.Sprintf(parseErrorTemplContent, name, in, value, reason)
}
return &ParseError{
code: http.StatusBadRequest,
Name: name,
In: in,
Value: value,
Reason: reason,
message: msg,
}
}
Loading