summaryrefslogtreecommitdiff
path: root/testrig
diff options
context:
space:
mode:
Diffstat (limited to 'testrig')
-rw-r--r--testrig/federator.go4
-rw-r--r--testrig/mediahandler.go4
-rw-r--r--testrig/processor.go4
-rw-r--r--testrig/storage.go62
4 files changed, 47 insertions, 27 deletions
diff --git a/testrig/federator.go b/testrig/federator.go
index 0546325ab..2c709bc81 100644
--- a/testrig/federator.go
+++ b/testrig/federator.go
@@ -19,16 +19,16 @@
package testrig
import (
- "codeberg.org/gruf/go-store/kv"
"github.com/superseriousbusiness/gotosocial/internal/concurrency"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/federation"
"github.com/superseriousbusiness/gotosocial/internal/media"
"github.com/superseriousbusiness/gotosocial/internal/messages"
+ "github.com/superseriousbusiness/gotosocial/internal/storage"
"github.com/superseriousbusiness/gotosocial/internal/transport"
)
// NewTestFederator returns a federator with the given database and (mock!!) transport controller.
-func NewTestFederator(db db.DB, tc transport.Controller, storage *kv.KVStore, mediaManager media.Manager, fedWorker *concurrency.WorkerPool[messages.FromFederator]) federation.Federator {
+func NewTestFederator(db db.DB, tc transport.Controller, storage storage.Driver, mediaManager media.Manager, fedWorker *concurrency.WorkerPool[messages.FromFederator]) federation.Federator {
return federation.NewFederator(db, NewTestFederatingDB(db, fedWorker), tc, NewTestTypeConverter(db), mediaManager)
}
diff --git a/testrig/mediahandler.go b/testrig/mediahandler.go
index 38190eca3..acb5ed16b 100644
--- a/testrig/mediahandler.go
+++ b/testrig/mediahandler.go
@@ -19,13 +19,13 @@
package testrig
import (
- "codeberg.org/gruf/go-store/kv"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/media"
+ "github.com/superseriousbusiness/gotosocial/internal/storage"
)
// NewTestMediaManager returns a media handler with the default test config, and the given db and storage.
-func NewTestMediaManager(db db.DB, storage *kv.KVStore) media.Manager {
+func NewTestMediaManager(db db.DB, storage storage.Driver) media.Manager {
m, err := media.NewManager(db, storage)
if err != nil {
panic(err)
diff --git a/testrig/processor.go b/testrig/processor.go
index 15f9040f7..902cb66bf 100644
--- a/testrig/processor.go
+++ b/testrig/processor.go
@@ -19,7 +19,6 @@
package testrig
import (
- "codeberg.org/gruf/go-store/kv"
"github.com/superseriousbusiness/gotosocial/internal/concurrency"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/email"
@@ -27,9 +26,10 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/media"
"github.com/superseriousbusiness/gotosocial/internal/messages"
"github.com/superseriousbusiness/gotosocial/internal/processing"
+ "github.com/superseriousbusiness/gotosocial/internal/storage"
)
// NewTestProcessor returns a Processor suitable for testing purposes
-func NewTestProcessor(db db.DB, storage *kv.KVStore, federator federation.Federator, emailSender email.Sender, mediaManager media.Manager, clientWorker *concurrency.WorkerPool[messages.FromClientAPI], fedWorker *concurrency.WorkerPool[messages.FromFederator]) processing.Processor {
+func NewTestProcessor(db db.DB, storage storage.Driver, federator federation.Federator, emailSender email.Sender, mediaManager media.Manager, clientWorker *concurrency.WorkerPool[messages.FromClientAPI], fedWorker *concurrency.WorkerPool[messages.FromFederator]) processing.Processor {
return processing.NewProcessor(NewTestTypeConverter(db), federator, NewTestOauthServer(db), mediaManager, storage, db, emailSender, clientWorker, fedWorker)
}
diff --git a/testrig/storage.go b/testrig/storage.go
index 666256593..b55e1ed28 100644
--- a/testrig/storage.go
+++ b/testrig/storage.go
@@ -19,25 +19,40 @@
package testrig
import (
+ "context"
"fmt"
"os"
"path"
"codeberg.org/gruf/go-store/kv"
"codeberg.org/gruf/go-store/storage"
+ "github.com/minio/minio-go/v7"
+ "github.com/minio/minio-go/v7/pkg/credentials"
+ gtsstorage "github.com/superseriousbusiness/gotosocial/internal/storage"
)
-// NewTestStorage returns a new in memory storage with the default test config
-func NewTestStorage() *kv.KVStore {
+// NewInMemoryStorage returns a new in memory storage with the default test config
+func NewInMemoryStorage() *gtsstorage.Local {
storage, err := kv.OpenStorage(storage.OpenMemory(200, false))
if err != nil {
panic(err)
}
- return storage
+ return &gtsstorage.Local{KVStore: storage}
+}
+
+func NewS3Storage() gtsstorage.Driver {
+ mc, err := minio.New(os.Getenv("GTS_STORAGE_S3_ENDPOINT"), &minio.Options{
+ Creds: credentials.NewStaticV4(os.Getenv("GTS_STORAGE_S3_ACCESS_KEY"), os.Getenv("GTS_STORAGE_S3_SECRET_KEY"), ""),
+ Secure: false,
+ })
+ if err != nil {
+ panic(err)
+ }
+ return gtsstorage.NewS3(mc, os.Getenv("GTS_STORAGE_S3_BUCKET"))
}
// StandardStorageSetup populates the storage with standard test entries from the given directory.
-func StandardStorageSetup(s *kv.KVStore, relativePath string) {
+func StandardStorageSetup(s gtsstorage.Driver, relativePath string) {
storedA := newTestStoredAttachments()
a := NewTestAttachments()
for k, paths := range storedA {
@@ -53,14 +68,14 @@ func StandardStorageSetup(s *kv.KVStore, relativePath string) {
if err != nil {
panic(err)
}
- if err := s.Put(pathOriginal, bOriginal); err != nil {
+ if err := s.Put(context.TODO(), pathOriginal, bOriginal); err != nil {
panic(err)
}
bSmall, err := os.ReadFile(fmt.Sprintf("%s/%s", relativePath, filenameSmall))
if err != nil {
panic(err)
}
- if err := s.Put(pathSmall, bSmall); err != nil {
+ if err := s.Put(context.TODO(), pathSmall, bSmall); err != nil {
panic(err)
}
}
@@ -80,35 +95,40 @@ func StandardStorageSetup(s *kv.KVStore, relativePath string) {
if err != nil {
panic(err)
}
- if err := s.Put(pathOriginal, bOriginal); err != nil {
+ if err := s.Put(context.TODO(), pathOriginal, bOriginal); err != nil {
panic(err)
}
bStatic, err := os.ReadFile(fmt.Sprintf("%s/%s", relativePath, filenameStatic))
if err != nil {
panic(err)
}
- if err := s.Put(pathStatic, bStatic); err != nil {
+ if err := s.Put(context.TODO(), pathStatic, bStatic); err != nil {
panic(err)
}
}
}
-// StandardStorageTeardown deletes everything in storage so that it's clean for the next test
-func StandardStorageTeardown(s *kv.KVStore) {
+// StandardStorageTeardown deletes everything in storage so that it's clean for
+// the next test
+// nolint:gocritic // complains about the type switch, but it's the cleanest solution
+func StandardStorageTeardown(s gtsstorage.Driver) {
defer os.RemoveAll(path.Join(os.TempDir(), "gotosocial"))
- iter, err := s.Iterator(nil)
- if err != nil {
- panic(err)
- }
- keys := []string{}
- for iter.Next() {
- keys = append(keys, iter.Key())
- }
- iter.Release()
- for _, k := range keys {
- if err := s.Delete(k); err != nil {
+ switch st := s.(type) {
+ case *gtsstorage.Local:
+ iter, err := st.KVStore.Iterator(nil)
+ if err != nil {
panic(err)
}
+ keys := []string{}
+ for iter.Next() {
+ keys = append(keys, iter.Key())
+ }
+ iter.Release()
+ for _, k := range keys {
+ if err := s.Delete(context.TODO(), k); err != nil {
+ panic(err)
+ }
+ }
}
}