Skip to content

Commit

Permalink
add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
casualjim committed Jan 25, 2015
1 parent 16abac2 commit 771f5f4
Show file tree
Hide file tree
Showing 16 changed files with 1,106 additions and 32 deletions.
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ Currently there is a spec validator tool:

## What's inside?

For a V1 I want to have this feature set completed:

- [x] An object model that serializes to swagger yaml or json
- [x] A tool to work with swagger:
- [x] validate a swagger spec document
Expand Down Expand Up @@ -64,5 +66,16 @@ Currently there is a spec validator tool:
- social security number
- hexcolor
- rgbcolor
- [ ] custom string formats

### Later

After the v1 implementation extra transports is on the roadmap

- Transports:
- [ ] swagger socket (swagger over tcp sockets)
- [ ] swagger websocket (swagger over websockets)
- [ ] swagger sockjs (swagger over sockjs)
- [ ] swagger socket.io (swagger over socket.io)
- [ ] swagger 0mq (swagger over 0mq)

9 changes: 2 additions & 7 deletions errors/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ func TestServeError(t *testing.T) {
}

func TestAPIErrors(t *testing.T) {
err := New(402, "this failed")
err := New(402, "this failed %s", "yada")
assert.Error(t, err)
assert.Equal(t, 402, err.Code())
assert.Equal(t, "this failed", err.Error())
assert.Equal(t, "this failed yada", err.Error())

err = NotFound("this failed %d", 1)
assert.Error(t, err)
Expand Down Expand Up @@ -72,9 +72,4 @@ func TestAPIErrors(t *testing.T) {
assert.Error(t, err)
assert.Equal(t, http.StatusNotAcceptable, err.Code())
assert.Equal(t, "unsupported media type requested, only [application/json application/x-yaml] are available", err.Error())

err = InvalidType("confirmed", "query", "boolean", nil)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "confirmed in query must be of type boolean", err.Error())
}
8 changes: 4 additions & 4 deletions errors/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ const (
maxExcFail = `%s in %s should be less than %v`
minIncFail = `%s in %s should be greater than or equal to %v`
minExcFail = `%s in %s should be greater than %v`
uniqueFail = `%s in %s should shouldn't contain duplicates`
maxItemsFail = `%s in %s should at most have %d items`
minItemsFail = `%s in %s should at most have %d items`
uniqueFail = `%s in %s shouldn't contain duplicates`
maxItemsFail = `%s in %s should have at most %d items`
minItemsFail = `%s in %s should have at least %d items`
)

// CompositeValidationError an error to wrap a bunch of other errors
Expand All @@ -38,7 +38,7 @@ func InvalidCollectionFormat(name, in, format string) *Validation {
Name: name,
In: in,
Value: format,
message: fmt.Sprintf("the collection format %q is not supported for a %s param", format, in),
message: fmt.Sprintf("the collection format %q is not supported for the %s param %q", format, in, name),
}
}

Expand Down
105 changes: 105 additions & 0 deletions errors/schema_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package errors

import (
"errors"
"testing"

"github.com/stretchr/testify/assert"
)

func TestSchemaErrors(t *testing.T) {
err := InvalidType("confirmed", "query", "boolean", nil)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "confirmed in query must be of type boolean", err.Error())

err = InvalidType("confirmed", "query", "boolean", "hello")
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "confirmed in query must be of type boolean: \"hello\"", err.Error())

err = InvalidType("confirmed", "query", "boolean", errors.New("hello"))
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "confirmed in query must be of type boolean, because: hello", err.Error())

err = DuplicateItems("uniques", "query")
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "uniques in query shouldn't contain duplicates", err.Error())

err = TooManyItems("something", "query", 5)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should have at most 5 items", err.Error())

err = TooFewItems("something", "query", 5)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should have at least 5 items", err.Error())

err = ExceedsMaximum("something", "query", 5, false)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be less than or equal to 5", err.Error())

err = ExceedsMaximum("something", "query", 5, true)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be less than 5", err.Error())

err = ExceedsMinimum("something", "query", 5, false)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be greater than or equal to 5", err.Error())

err = ExceedsMinimum("something", "query", 5, true)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be greater than 5", err.Error())

err = NotMultipleOf("something", "query", 5)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be a multiple of 5", err.Error())

err = EnumFail("something", "query", "yada", []interface{}{"hello", "world"})
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be one of [hello world]", err.Error())

err = Required("something", "query")
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query is required", err.Error())

err = TooLong("something", "query", 5)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be at most 5 chars long", err.Error())

err = TooShort("something", "query", 5)
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should be at least 5 chars long", err.Error())

err = FailedPattern("something", "query", "\\d+")
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something in query should match '\\d+'", err.Error())

err = InvalidTypeName("something")
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "something is an invalid type name", err.Error())

err = InvalidCollectionFormat("something", "query", "yada")
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "the collection format \"yada\" is not supported for the query param \"something\"", err.Error())

err = CompositeValidationError()
assert.Error(t, err)
assert.Equal(t, 422, err.Code())
assert.Equal(t, "validation failure list", err.Error())
}
Loading

0 comments on commit 771f5f4

Please sign in to comment.