-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain_test.go
83 lines (69 loc) · 1.74 KB
/
main_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package main_test
import (
"encoding/json"
"io/ioutil"
"log"
"testing"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/securityhub"
"github.com/google/uuid"
main "github.com/m-mizutani/aws-securityhub-exporter"
"github.com/stretchr/testify/assert"
)
type testConfig struct {
S3Bucket string
S3Prefix string
Region string
Minutes int
}
var testCfg testConfig
func loadTestConfig() testConfig {
var cfg testConfig
raw, err := ioutil.ReadFile("test.json")
if err != nil {
log.Fatal("Fail to read test.json", err)
}
if err := json.Unmarshal(raw, &cfg); err != nil {
log.Fatal("Fail to unmarshal test.json")
}
return cfg
}
func init() {
testCfg = loadTestConfig()
}
func TestGetFindings(t *testing.T) {
args := main.Arguments{
Region: testCfg.Region,
Minutes: time.Duration(testCfg.Minutes),
}
ch := main.GetFindings(args)
var findings []*securityhub.AwsSecurityFinding
for finding := range ch {
findings = append(findings, finding)
}
assert.NotEqual(t, 0, len(findings))
}
func TestPutWorker(t *testing.T) {
finding := securityhub.AwsSecurityFinding{
Id: aws.String(uuid.New().String()),
CreatedAt: aws.String("2019-07-20T13:22:13.933Z"),
}
args := main.Arguments{
Region: testCfg.Region,
S3Bucket: testCfg.S3Bucket,
S3Prefix: testCfg.S3Prefix,
}
ssn := session.Must(session.NewSession(&aws.Config{
Region: aws.String(args.Region),
}))
s3svc := s3.New(ssn)
put, err := main.PutWorker(&finding, args, s3svc)
assert.NoError(t, err)
assert.True(t, put)
put, err = main.PutWorker(&finding, args, s3svc)
assert.NoError(t, err)
assert.False(t, put) // Should not be put twice by idempotence
}