mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 18:36:30 +02:00
* tests: use testcontainers for postgres * tests: use testcontainers for minio * remove gcs test * try installing docker * skip docker on macos
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
package autocert
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"runtime"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/caddyserver/certmagic"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/pomerium/pomerium/internal/testutil"
|
|
)
|
|
|
|
func TestS3Storage(t *testing.T) {
|
|
if os.Getenv("GITHUB_ACTION") != "" && runtime.GOOS == "darwin" {
|
|
t.Skip("Github action can not run docker on MacOS")
|
|
}
|
|
|
|
ctx, clearTimeout := context.WithTimeout(context.Background(), time.Second*30)
|
|
t.Cleanup(clearTimeout)
|
|
|
|
testutil.WithTestMinIO(t, "bucket", func(endpoint string) {
|
|
s, err := GetCertMagicStorage(ctx, "s3://"+endpoint+"/bucket/some/prefix")
|
|
require.NoError(t, err)
|
|
runStorageTests(t, s)
|
|
})
|
|
}
|
|
|
|
func runStorageTests(t *testing.T, s certmagic.Storage) {
|
|
t.Helper()
|
|
|
|
ctx, clearTimeout := context.WithTimeout(context.Background(), time.Second*30)
|
|
t.Cleanup(clearTimeout)
|
|
|
|
for _, key := range []string{"1", "a/1", "b/c/2"} {
|
|
assert.NoError(t, s.Store(ctx, key, []byte{1, 2, 3}), "should store")
|
|
assert.True(t, s.Exists(ctx, key), "should exist after storing")
|
|
data, err := s.Load(ctx, key)
|
|
if assert.NoError(t, err, "should load") {
|
|
assert.Equal(t, []byte{1, 2, 3}, data)
|
|
}
|
|
ki, err := s.Stat(ctx, key)
|
|
if assert.NoError(t, err) {
|
|
assert.Equal(t, true, ki.IsTerminal)
|
|
}
|
|
}
|
|
keys, err := s.List(ctx, "", true)
|
|
assert.NoError(t, err, "should list recursively")
|
|
assert.Equal(t, []string{"1", "a/1", "b/c/2"}, keys)
|
|
keys, err = s.List(ctx, "b/", false)
|
|
assert.NoError(t, err, "should list non-recursively")
|
|
assert.Equal(t, []string{"b/c/"}, keys)
|
|
|
|
assert.NoError(t, s.Delete(ctx, "a/b/c"), "should delete")
|
|
_, err = s.Load(ctx, "a/b/c")
|
|
assert.Error(t, err)
|
|
|
|
assert.NoError(t, s.Lock(ctx, "a"), "should lock")
|
|
|
|
time.AfterFunc(time.Second*2, func() {
|
|
s.Unlock(ctx, "a")
|
|
})
|
|
|
|
assert.NoError(t, s.Lock(ctx, "a"), "should re-lock")
|
|
}
|