Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

53 lignes
1.4 KiB

  1. package handlers
  2. import (
  3. "fmt"
  4. "net/http"
  5. "testing"
  6. )
  7. type baseWriter struct{}
  8. func (b *baseWriter) Write(data []byte) (int, error) { return 0, nil }
  9. func (b *baseWriter) WriteHeader(code int) {}
  10. func (b *baseWriter) Header() http.Header { return nil }
  11. func TestNilWriter(t *testing.T) {
  12. rw, ok := GetResponseWriter(nil, func(w http.ResponseWriter) bool {
  13. return true
  14. })
  15. assertTrue(rw == nil, "expected nil, got non-nil", t)
  16. assertTrue(!ok, "expected false, got true", t)
  17. }
  18. func TestBaseWriter(t *testing.T) {
  19. bw := &baseWriter{}
  20. rw, ok := GetResponseWriter(bw, func(w http.ResponseWriter) bool {
  21. return true
  22. })
  23. assertTrue(rw == bw, fmt.Sprintf("expected %#v, got %#v", bw, rw), t)
  24. assertTrue(ok, "expected true, got false", t)
  25. }
  26. func TestWrappedWriter(t *testing.T) {
  27. bw := &baseWriter{}
  28. ctx := &contextResponseWriter{bw, nil}
  29. rw, ok := GetResponseWriter(ctx, func(w http.ResponseWriter) bool {
  30. _, ok := w.(*baseWriter)
  31. return ok
  32. })
  33. assertTrue(rw == bw, fmt.Sprintf("expected %#v, got %#v", bw, rw), t)
  34. assertTrue(ok, "expected true, got false", t)
  35. }
  36. func TestWrappedNotFoundWriter(t *testing.T) {
  37. bw := &baseWriter{}
  38. ctx := &contextResponseWriter{bw, nil}
  39. rw, ok := GetResponseWriter(ctx, func(w http.ResponseWriter) bool {
  40. _, ok := w.(*statusResponseWriter)
  41. return ok
  42. })
  43. assertTrue(rw == nil, fmt.Sprintf("expected nil, got %#v", rw), t)
  44. assertTrue(!ok, "expected false, got true", t)
  45. }