Test S3 role assumption (#1655)
This PR adds a test of the S3 role assumption functionality. It currently only tests role assumption within a single account.
This commit is contained in:
@@ -10,13 +10,12 @@ import (
|
||||
|
||||
"github.com/kylelemons/godebug/pretty"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"google.golang.org/protobuf/types/known/anypb"
|
||||
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/common"
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/context"
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/credentialspb"
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/sourcespb"
|
||||
"github.com/trufflesecurity/trufflehog/v3/pkg/sources"
|
||||
"google.golang.org/protobuf/types/known/anypb"
|
||||
)
|
||||
|
||||
func TestSource_Chunks(t *testing.T) {
|
||||
@@ -35,6 +34,7 @@ func TestSource_Chunks(t *testing.T) {
|
||||
name string
|
||||
verify bool
|
||||
connection *sourcespb.S3
|
||||
setEnv map[string]string
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
@@ -58,6 +58,23 @@ func TestSource_Chunks(t *testing.T) {
|
||||
wantErr: false,
|
||||
wantChunkData: `W2RlZmF1bHRdCmF3c19hY2Nlc3Nfa2V5X2lkID0gQUtJQTM1T0hYMkRTT1pHNjQ3TkgKYXdzX3NlY3JldF9hY2Nlc3Nfa2V5ID0gUXk5OVMrWkIvQ1dsRk50eFBBaWQ3Z0d6dnNyWGhCQjd1ckFDQUxwWgpvdXRwdXQgPSBqc29uCnJlZ2lvbiA9IHVzLWVhc3QtMg==`,
|
||||
},
|
||||
{
|
||||
name: "gets chunks after assuming role",
|
||||
// This test will attempt to scan every bucket in the account, but the role policy blocks access to every
|
||||
// bucket except the one we want. This (expected behavior) causes errors in the test log output, but these
|
||||
// errors shouldn't actually cause test failures.
|
||||
init: init{
|
||||
connection: &sourcespb.S3{
|
||||
Roles: []string{"arn:aws:iam::619888638459:role/s3-test-assume-role"},
|
||||
},
|
||||
setEnv: map[string]string{
|
||||
"AWS_ACCESS_KEY_ID": s3key,
|
||||
"AWS_SECRET_ACCESS_KEY": s3secret,
|
||||
},
|
||||
},
|
||||
wantErr: false,
|
||||
wantChunkData: `W2RlZmF1bHRdCmF3c19zZWNyZXRfYWNjZXNzX2tleSA9IFF5OTlTK1pCL0NXbEZOdHhQQWlkN2dHenZzclhoQkI3dXJBQ0FMcFoKYXdzX2FjY2Vzc19rZXlfaWQgPSBBS0lBMzVPSFgyRFNPWkc2NDdOSApvdXRwdXQgPSBqc29uCnJlZ2lvbiA9IHVzLWVhc3QtMg==`,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
@@ -65,6 +82,10 @@ func TestSource_Chunks(t *testing.T) {
|
||||
var cancelOnce sync.Once
|
||||
defer cancelOnce.Do(cancel)
|
||||
|
||||
for k, v := range tt.init.setEnv {
|
||||
t.Setenv(k, v)
|
||||
}
|
||||
|
||||
s := Source{}
|
||||
conn, err := anypb.New(tt.init.connection)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user