reader_test.go 1.2 KB

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