finding_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package report
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func TestRedact(t *testing.T) {
  7. tests := []struct {
  8. findings []Finding
  9. redact bool
  10. }{
  11. {
  12. redact: true,
  13. findings: []Finding{
  14. {
  15. Match: "line containing secret",
  16. Secret: "secret",
  17. },
  18. }},
  19. }
  20. for _, test := range tests {
  21. for _, f := range test.findings {
  22. f.Redact(100)
  23. assert.Equal(t, "REDACTED", f.Secret)
  24. assert.Equal(t, "line containing REDACTED", f.Match)
  25. }
  26. }
  27. }
  28. func TestMask(t *testing.T) {
  29. tests := map[string]struct {
  30. finding Finding
  31. percent uint
  32. expect Finding
  33. }{
  34. "normal secret": {
  35. finding: Finding{Match: "line containing secret", Secret: "secret"},
  36. expect: Finding{Match: "line containing se...", Secret: "se..."},
  37. percent: 75,
  38. },
  39. "empty secret": {
  40. finding: Finding{Match: "line containing", Secret: ""},
  41. expect: Finding{Match: "line containing", Secret: ""},
  42. percent: 75,
  43. },
  44. "short secret": {
  45. finding: Finding{Match: "line containing", Secret: "ss"},
  46. expect: Finding{Match: "line containing", Secret: "..."},
  47. percent: 75,
  48. },
  49. }
  50. for name, test := range tests {
  51. t.Run(name, func(t *testing.T) {
  52. f := test.finding
  53. e := test.expect
  54. f.Redact(test.percent)
  55. assert.Equal(t, e.Secret, f.Secret)
  56. assert.Equal(t, e.Match, f.Match)
  57. })
  58. }
  59. }
  60. func TestMaskSecret(t *testing.T) {
  61. tests := map[string]struct {
  62. secret string
  63. percent uint
  64. expect string
  65. }{
  66. "normal masking": {secret: "secret", percent: 75, expect: "se..."},
  67. "high masking": {secret: "secret", percent: 90, expect: "s..."},
  68. "low masking": {secret: "secret", percent: 10, expect: "secre..."},
  69. "invalid masking": {secret: "secret", percent: 1000, expect: "..."},
  70. }
  71. for name, test := range tests {
  72. t.Run(name, func(t *testing.T) {
  73. got := maskSecret(test.secret, test.percent)
  74. assert.Equal(t, test.expect, got)
  75. })
  76. }
  77. }