rest_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package rest
  2. import (
  3. "io/ioutil"
  4. "strings"
  5. "testing"
  6. )
  7. type Something struct {
  8. First int
  9. Second string
  10. }
  11. func TestJSONDecoder(t *testing.T) {
  12. const json = `{ "First": 15, "Second": "Some string" }`
  13. reader := strings.NewReader(json)
  14. readcloser := ioutil.NopCloser(reader)
  15. defer readcloser.Close()
  16. expected := Something{First: 15, Second: "Some string"}
  17. var result Something
  18. err := JSONDecoder(readcloser, &result)
  19. if err != nil {
  20. t.Error(err)
  21. }
  22. if expected.First != result.First || expected.Second != result.Second {
  23. t.Errorf("Wrong result: %v", result)
  24. }
  25. }
  26. func TestJSONDecoderBadJSON(t *testing.T) {
  27. const badJSON = `{ First: 15, "Second": "Some string" }`
  28. reader := strings.NewReader(badJSON)
  29. readcloser := ioutil.NopCloser(reader)
  30. defer readcloser.Close()
  31. expected := Something{First: 15, Second: "Some string"}
  32. var result Something
  33. err := JSONDecoder(readcloser, &result)
  34. if err == nil {
  35. t.Error("There should be an error")
  36. }
  37. if expected.First == result.First || expected.Second == result.Second {
  38. t.Errorf("There should be an error on decoding, %v", result)
  39. }
  40. }