checks_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "os"
  6. "testing"
  7. )
  8. func TestCheckRegex(t *testing.T) {
  9. var results []Leak
  10. opts = &Options{
  11. Concurrency: 10,
  12. B64EntropyCutoff: 70,
  13. HexEntropyCutoff: 40,
  14. Entropy: false,
  15. }
  16. repo := Repo{
  17. url: "someurl",
  18. }
  19. commit := Commit{}
  20. checks := map[string]int{
  21. "aws=\"AKIALALEMEL33243OLIAE": 1,
  22. "aws\"afewafewafewafewaf\"": 0,
  23. }
  24. for k, v := range checks {
  25. results = doChecks(k, commit, &repo)
  26. if v != len(results) {
  27. t.Errorf("regexCheck failed on string %s", k)
  28. }
  29. }
  30. }
  31. func TestExternalRegex(t *testing.T) {
  32. opts, err := defaultOptions()
  33. if err != nil {
  34. t.Error()
  35. }
  36. file, err := os.Create("testregex.txt")
  37. if err != nil {
  38. t.Error()
  39. }
  40. defer file.Close()
  41. w := bufio.NewWriter(file)
  42. fmt.Fprintln(w, "AKIA[0-9A-Z]{16}")
  43. w.Flush()
  44. opts.RegexFile = "testregex.txt"
  45. opts.loadExternalRegex()
  46. leaks := doChecks("aws=\"AKIALALEMEL33243OLIAE",
  47. Commit{}, &Repo{url: "someurl"})
  48. if len(leaks) != 2 {
  49. // leak from default regex, leak from external
  50. t.Error()
  51. }
  52. os.Remove("testregex.txt")
  53. }
  54. func TestEntropy(t *testing.T) {
  55. var enoughEntropy bool
  56. opts := &Options{
  57. Concurrency: 10,
  58. B64EntropyCutoff: 70,
  59. HexEntropyCutoff: 40,
  60. Entropy: false,
  61. }
  62. checks := map[string]bool{
  63. "reddit_api_secret = settings./.http}": false,
  64. "heroku_client_secret = simple": false,
  65. "reddit_api_secret = \"4ok1WFf57-EMswEfAFGewa\"": true,
  66. "aws_secret= \"AKIAIMNOJVGFDXXFE4OA\"": true,
  67. }
  68. for k, v := range checks {
  69. enoughEntropy = checkShannonEntropy(k, opts)
  70. if v != enoughEntropy {
  71. t.Errorf("checkEntropy failed for %s. Expected %t, got %t", k, v, enoughEntropy)
  72. }
  73. }
  74. }
  75. func TestStopWords(t *testing.T) {
  76. if containsStopWords("aws_secret=settings.AWS_SECRET") != true {
  77. t.Errorf("checkStopWords Failed")
  78. }
  79. }