finding_test.go 2.0 KB

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