reader_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package detect
  2. import (
  3. "io"
  4. "strings"
  5. "testing"
  6. "github.com/stretchr/testify/require"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. const secret = "AKIAIRYLJVKMPEGZMPJS"
  10. type mockReader struct {
  11. data []byte
  12. read bool
  13. }
  14. func (r *mockReader) Read(p []byte) (n int, err error) {
  15. if r.read {
  16. return 0, io.EOF
  17. }
  18. // Copy data to the provided buffer.
  19. n = copy(p, r.data)
  20. r.read = true
  21. // Return io.EOF along with the bytes.
  22. return n, io.EOF
  23. }
  24. // TestDetectReader tests the DetectReader function.
  25. func TestDetectReader(t *testing.T) {
  26. tests := []struct {
  27. name string
  28. reader io.Reader
  29. bufSize int
  30. findingsCount int
  31. }{
  32. {
  33. name: "Test case - Reader returns n > 0 bytes and nil error",
  34. bufSize: 10,
  35. findingsCount: 1,
  36. reader: strings.NewReader(secret),
  37. },
  38. {
  39. name: "Test case - Reader returns n > 0 bytes and io.EOF error",
  40. bufSize: 10,
  41. findingsCount: 1,
  42. reader: &mockReader{
  43. data: []byte(secret),
  44. },
  45. },
  46. }
  47. for _, test := range tests {
  48. t.Run(test.name, func(t *testing.T) {
  49. detector, err := NewDetectorDefaultConfig()
  50. require.NoError(t, err)
  51. findings, err := detector.DetectReader(test.reader, test.bufSize)
  52. require.NoError(t, err)
  53. assert.Equal(t, test.findingsCount, len(findings))
  54. })
  55. }
  56. }