| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package main
- import (
- "bufio"
- "fmt"
- "os"
- "testing"
- )
- func TestCheckRegex(t *testing.T) {
- var results []Leak
- opts = &Options{
- Concurrency: 10,
- B64EntropyCutoff: 70,
- HexEntropyCutoff: 40,
- Entropy: false,
- }
- repo := Repo{
- url: "someurl",
- }
- commit := Commit{}
- checks := map[string]int{
- "aws=\"AKIALALEMEL33243OLIAE": 1,
- "aws\"afewafewafewafewaf\"": 0,
- }
- for k, v := range checks {
- results = doChecks(k, commit, &repo)
- if v != len(results) {
- t.Errorf("regexCheck failed on string %s", k)
- }
- }
- }
- func TestExternalRegex(t *testing.T) {
- opts, err := defaultOptions()
- if err != nil {
- t.Error()
- }
- file, err := os.Create("testregex.txt")
- if err != nil {
- t.Error()
- }
- defer file.Close()
- w := bufio.NewWriter(file)
- fmt.Fprintln(w, "AKIA[0-9A-Z]{16}")
- w.Flush()
- opts.RegexFile = "testregex.txt"
- opts.loadExternalRegex()
- leaks := doChecks("aws=\"AKIALALEMEL33243OLIAE",
- Commit{}, &Repo{url: "someurl"})
- if len(leaks) != 2 {
- // leak from default regex, leak from external
- t.Error()
- }
- os.Remove("testregex.txt")
- }
- func TestEntropy(t *testing.T) {
- var enoughEntropy bool
- opts := &Options{
- Concurrency: 10,
- B64EntropyCutoff: 70,
- HexEntropyCutoff: 40,
- Entropy: false,
- }
- checks := map[string]bool{
- "reddit_api_secret = settings./.http}": false,
- "heroku_client_secret = simple": false,
- "reddit_api_secret = \"4ok1WFf57-EMswEfAFGewa\"": true,
- "aws_secret= \"AKIAIMNOJVGFDXXFE4OA\"": true,
- }
- for k, v := range checks {
- enoughEntropy = checkShannonEntropy(k, opts)
- if v != enoughEntropy {
- t.Errorf("checkEntropy failed for %s. Expected %t, got %t", k, v, enoughEntropy)
- }
- }
- }
- func TestStopWords(t *testing.T) {
- if containsStopWords("aws_secret=settings.AWS_SECRET") != true {
- t.Errorf("checkStopWords Failed")
- }
- }
|