@@ -37,8 +37,10 @@ import (
37
37
"github.com/fluxcd/pkg/runtime/testenv"
38
38
"github.com/fluxcd/pkg/testserver"
39
39
sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
40
- "github.com/hashicorp/vault/api"
41
- "github.com/ory/dockertest"
40
+ vaulttransit "github.com/hashicorp/vault/builtin/logical/transit"
41
+ vaulthttp "github.com/hashicorp/vault/http"
42
+ "github.com/hashicorp/vault/sdk/logical"
43
+ "github.com/hashicorp/vault/vault"
42
44
corev1 "k8s.io/api/core/v1"
43
45
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
44
46
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
@@ -121,12 +123,12 @@ func runInContext(registerControllers func(*testenv.Environment), run func() err
121
123
}
122
124
123
125
// Create a Vault test instance.
124
- pool , resource , err := createVaultTestInstance ()
126
+ cluster , err := createVaultTestInstance ()
125
127
if err != nil {
126
128
panic (fmt .Sprintf ("Failed to create Vault instance: %v" , err ))
127
129
}
128
130
defer func () {
129
- pool . Purge ( resource )
131
+ cluster . Cleanup ( )
130
132
}()
131
133
132
134
runErr := run ()
@@ -374,44 +376,39 @@ func createArtifact(artifactServer *testserver.ArtifactServer, fixture, path str
374
376
return fmt .Sprintf ("%x" , h .Sum (nil )), nil
375
377
}
376
378
377
- func createVaultTestInstance () (* dockertest.Pool , * dockertest.Resource , error ) {
378
- // uses a sensible default on windows (tcp/http) and linux/osx (socket)
379
- pool , err := dockertest .NewPool ("" )
380
- if err != nil {
381
- return nil , nil , fmt .Errorf ("Could not connect to docker: %s" , err )
379
+ func createVaultTestInstance () (* vault.TestCluster , error ) {
380
+ // this is set to prevent "certificate signed by unknown authority" errors
381
+ os .Setenv ("VAULT_SKIP_VERIFY" , "true" )
382
+ os .Setenv ("VAULT_INSECURE" , "true" )
383
+ t := & testing.T {}
384
+ coreConfig := & vault.CoreConfig {
385
+ LogicalBackends : map [string ]logical.Factory {
386
+ "transit" : vaulttransit .Factory ,
387
+ },
382
388
}
389
+ cluster := vault .NewTestCluster (t , coreConfig , & vault.TestClusterOptions {
390
+ HandlerFunc : vaulthttp .Handler ,
391
+ NumCores : 1 ,
392
+ })
393
+ cluster .Start ()
394
+
395
+ if err := vault .TestWaitActiveWithError (cluster .Cores [0 ].Core ); err != nil {
396
+ return nil , fmt .Errorf ("test core not active: %s" , err )
397
+ }
398
+
399
+ testClient := cluster .Cores [0 ].Client
383
400
384
- // pulls an image, creates a container based on it and runs it
385
- resource , err := pool .Run ("vault" , vaultVersion , []string {"VAULT_DEV_ROOT_TOKEN_ID=secret" })
401
+ status , err := testClient .Sys ().InitStatus ()
386
402
if err != nil {
387
- return nil , nil , fmt .Errorf ("Could not start resource: %s" , err )
403
+ return nil , fmt .Errorf ("cannot checking Vault client status: %s" , err )
404
+ }
405
+ if status != true {
406
+ return nil , fmt .Errorf ("waiting on Vault server to become ready" )
388
407
}
389
408
390
- os .Setenv ("VAULT_ADDR" , fmt . Sprintf ( "http://127.0.0.1:%v" , resource . GetPort ( "8200/tcp" ) ))
391
- os .Setenv ("VAULT_TOKEN" , "secret" )
409
+ os .Setenv ("VAULT_ADDR" , testClient . Address ( ))
410
+ os .Setenv ("VAULT_TOKEN" , testClient . Token () )
392
411
// exponential backoff-retry, because the application in the container might not be ready to accept connections yet
393
- if err := pool .Retry (func () error {
394
- cli , err := api .NewClient (api .DefaultConfig ())
395
- if err != nil {
396
- return fmt .Errorf ("Cannot create Vault Client: %w" , err )
397
- }
398
- status , err := cli .Sys ().InitStatus ()
399
- if err != nil {
400
- return err
401
- }
402
- if status != true {
403
- return fmt .Errorf ("Vault not ready yet" )
404
- }
405
- if err := cli .Sys ().Mount ("sops" , & api.MountInput {
406
- Type : "transit" ,
407
- }); err != nil {
408
- return fmt .Errorf ("Cannot create Vault Transit Engine: %w" , err )
409
- }
410
-
411
- return nil
412
- }); err != nil {
413
- return nil , nil , fmt .Errorf ("Could not connect to docker: %w" , err )
414
- }
415
412
416
- return pool , resource , nil
413
+ return cluster , nil
417
414
}
0 commit comments