Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: (e2e testing) payments v3 part 1 #164

Merged
merged 18 commits into from
Nov 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions cmd/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ var (

func newMigrate() *cobra.Command {
cmd := bunmigrate.NewDefaultCommand(Migrate, func(cmd *cobra.Command) {
cmd.Flags().String(configEncryptionKeyFlag, "", "Config encryption key")
cmd.Flags().String(ConfigEncryptionKeyFlag, "", "Config encryption key")
})

return cmd
}

func Migrate(cmd *cobra.Command, args []string, db *bun.DB) error {
cfgEncryptionKey, _ := cmd.Flags().GetString(configEncryptionKeyFlag)
cfgEncryptionKey, _ := cmd.Flags().GetString(ConfigEncryptionKeyFlag)
if cfgEncryptionKey == "" {
cfgEncryptionKey = cmd.Flag(configEncryptionKeyFlag).Value.String()
cfgEncryptionKey = cmd.Flag(ConfigEncryptionKeyFlag).Value.String()
}

if cfgEncryptionKey != "" {
Expand Down
18 changes: 9 additions & 9 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ var (
)

const (
pluginsDirectoryPathFlag = "plugin-directory-path"
configEncryptionKeyFlag = "config-encryption-key"
listenFlag = "listen"
PluginsDirectoryPathFlag = "plugin-directory-path"
ConfigEncryptionKeyFlag = "config-encryption-key"
ListenFlag = "listen"
stackFlag = "stack"
stackPublicURLFlag = "stack-public-url"
)
Expand All @@ -53,7 +53,7 @@ func NewRootCommand() *cobra.Command {
Version: Version,
}

root.PersistentFlags().String(configEncryptionKeyFlag, "", "Config encryption key")
root.PersistentFlags().String(ConfigEncryptionKeyFlag, "", "Config encryption key")

version := newVersion()
root.AddCommand(version)
Expand All @@ -63,8 +63,8 @@ func NewRootCommand() *cobra.Command {

server := newServer()
addAutoMigrateCommand(server)
server.Flags().String(listenFlag, ":8080", "Listen address")
server.Flags().String(pluginsDirectoryPathFlag, "", "Plugin directory path")
server.Flags().String(ListenFlag, ":8080", "Listen address")
server.Flags().String(PluginsDirectoryPathFlag, "", "Plugin directory path")
server.Flags().String(stackFlag, "", "Stack name")
server.Flags().String(stackPublicURLFlag, "", "Stack public url")
root.AddCommand(server)
Expand All @@ -88,7 +88,7 @@ func addAutoMigrateCommand(cmd *cobra.Command) {
}

func commonOptions(cmd *cobra.Command) (fx.Option, error) {
configEncryptionKey, _ := cmd.Flags().GetString(configEncryptionKeyFlag)
configEncryptionKey, _ := cmd.Flags().GetString(ConfigEncryptionKeyFlag)
if configEncryptionKey == "" {
return nil, errors.New("missing config encryption key")
}
Expand All @@ -98,13 +98,13 @@ func commonOptions(cmd *cobra.Command) (fx.Option, error) {
return nil, err
}

path, _ := cmd.Flags().GetString(pluginsDirectoryPathFlag)
path, _ := cmd.Flags().GetString(PluginsDirectoryPathFlag)
pluginPaths, err := getPluginsMap(path)
if err != nil {
return nil, err
}

listen, _ := cmd.Flags().GetString(listenFlag)
listen, _ := cmd.Flags().GetString(ListenFlag)
stack, _ := cmd.Flags().GetString(stackFlag)
stackPublicURL, _ := cmd.Flags().GetString(stackPublicURLFlag)
debug, _ := cmd.Flags().GetBool(service.DebugFlag)
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ services:
- ./local_env/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql

payments-migrate:
image: golang:1.22.4-alpine3.19
image: golang:1.22.8-alpine
command: go run ./ migrate up
depends_on:
postgres:
Expand Down Expand Up @@ -70,7 +70,7 @@ services:
- 8081:8080

payments:
image: golang:1.22.4-alpine3.19
image: golang:1.22.8-alpine
command: go run ./ server
healthcheck:
test: [ "CMD", "curl", "-f", "http://127.0.0.1:8080/_healthcheck" ]
Expand Down
126 changes: 62 additions & 64 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
module github.com/formancehq/payments

go 1.22.0
go 1.22.8

toolchain go1.22.7
replace github.com/formancehq/payments/genericclient => ./internal/connectors/plugins/public/generic/client/generated

require (
github.com/ThreeDotsLabs/watermill v1.3.7
github.com/ThreeDotsLabs/watermill v1.4.1
github.com/adyen/adyen-go-api-library/v7 v7.3.1
github.com/bombsimon/logrusr/v3 v3.1.0
github.com/formancehq/go-libs/v2 v2.0.1-0.20241024113615-9aed7e642e48
github.com/formancehq/go-libs/v2 v2.0.1-0.20241115122237-fadfe26b4b3a
github.com/formancehq/payments/genericclient v0.0.0-00010101000000-000000000000
github.com/get-momo/atlar-v1-go-client v1.4.0
github.com/gibson042/canonicaljson-go v1.0.3
Expand All @@ -17,32 +17,33 @@ require (
github.com/go-openapi/strfmt v0.23.0
github.com/google/uuid v1.6.0
github.com/hashicorp/go-hclog v1.6.3
github.com/hashicorp/go-plugin v1.6.1
github.com/hashicorp/golang-lru/v2 v2.0.4
github.com/hashicorp/go-plugin v1.6.2
github.com/hashicorp/golang-lru/v2 v2.0.7
github.com/jackc/pgx/v5 v5.7.1
github.com/lib/pq v1.10.9
github.com/onsi/ginkgo/v2 v2.20.2
github.com/onsi/gomega v1.34.2
github.com/nats-io/nats.go v1.37.0
github.com/onsi/ginkgo/v2 v2.21.0
github.com/onsi/gomega v1.35.1
github.com/pkg/errors v0.9.1
github.com/sirupsen/logrus v1.9.3
github.com/spf13/cobra v1.8.1
github.com/stretchr/testify v1.9.0
github.com/stripe/stripe-go/v79 v79.12.0
github.com/uptrace/bun v1.2.3
github.com/uptrace/bun/dialect/pgdialect v1.2.3
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0
go.opentelemetry.io/otel v1.31.0
go.opentelemetry.io/otel/metric v1.31.0
go.opentelemetry.io/otel/trace v1.31.0
go.temporal.io/api v1.39.0
go.temporal.io/sdk v1.29.1
github.com/uptrace/bun v1.2.5
github.com/uptrace/bun/dialect/pgdialect v1.2.5
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0
go.opentelemetry.io/otel v1.32.0
go.opentelemetry.io/otel/metric v1.32.0
go.opentelemetry.io/otel/trace v1.32.0
go.temporal.io/api v1.41.0
go.temporal.io/sdk v1.30.0
go.uber.org/fx v1.23.0
go.uber.org/mock v0.4.0
go.uber.org/mock v0.5.0
golang.org/x/oauth2 v0.23.0
golang.org/x/sync v0.8.0
google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9
google.golang.org/grpc v1.67.1
golang.org/x/sync v0.9.0
google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28
google.golang.org/grpc v1.68.0
google.golang.org/protobuf v1.35.1
)

Expand All @@ -55,23 +56,23 @@ require (
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect
github.com/ThreeDotsLabs/watermill-http/v2 v2.3.1 // indirect
github.com/ThreeDotsLabs/watermill-kafka/v3 v3.0.5 // indirect
github.com/ThreeDotsLabs/watermill-nats/v2 v2.1.1 // indirect
github.com/ThreeDotsLabs/watermill-nats/v2 v2.1.2 // indirect
github.com/ajg/form v1.5.1 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/aws/aws-msk-iam-sasl-signer-go v1.0.0 // indirect
github.com/aws/aws-sdk-go-v2 v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/config v1.27.43 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 // indirect
github.com/aws/aws-sdk-go-v2/feature/rds/auth v1.4.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 // indirect
github.com/aws/aws-sdk-go-v2 v1.32.4 // indirect
github.com/aws/aws-sdk-go-v2/config v1.28.4 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.45 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.19 // indirect
github.com/aws/aws-sdk-go-v2/feature/rds/auth v1.4.23 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.2 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.24.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.4 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.24.5 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.4 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.33.0 // indirect
github.com/aws/smithy-go v1.22.0 // indirect
github.com/bahlo/generic-list-go v0.2.0 // indirect
github.com/buger/jsonparser v1.1.1 // indirect
Expand All @@ -87,9 +88,9 @@ require (
github.com/eapache/go-resiliency v1.7.0 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 // indirect
github.com/eapache/queue v1.1.0 // indirect
github.com/ebitengine/purego v0.8.0 // indirect
github.com/ebitengine/purego v0.8.1 // indirect
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a // indirect
github.com/fatih/color v1.17.0 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-chi/chi v4.1.2+incompatible // indirect
github.com/go-chi/render v1.0.3 // indirect
Expand All @@ -110,17 +111,17 @@ require (
github.com/goccy/go-json v0.10.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/mock v1.7.0-rc.1 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134 // indirect
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/schema v1.4.1 // indirect
github.com/gorilla/securecookie v1.1.2 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
Expand All @@ -131,6 +132,7 @@ require (
github.com/invopop/jsonschema v0.12.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/pgxlisten v0.0.0-20241005155529-9d952acd6a6c // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jcmturner/aescts/v2 v2.0.0 // indirect
github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect
Expand All @@ -139,7 +141,7 @@ require (
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/compress v1.17.11 // indirect
github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect
github.com/lestrrat-go/blackmagic v1.0.2 // indirect
github.com/lestrrat-go/httpcc v1.0.1 // indirect
Expand All @@ -151,16 +153,14 @@ require (
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/term v0.5.0 // indirect
github.com/muhlemmer/gu v0.3.1 // indirect
github.com/muhlemmer/httpforwarded v0.1.0 // indirect
github.com/nats-io/nats.go v1.37.0 // indirect
github.com/nats-io/nkeys v0.4.7 // indirect
github.com/nats-io/nuid v1.0.1 // indirect
github.com/nexus-rpc/sdk-go v0.0.10 // indirect
github.com/nexus-rpc/sdk-go v0.0.11 // indirect
github.com/oklog/run v1.0.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
Expand All @@ -174,16 +174,16 @@ require (
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/puzpuzpuz/xsync/v3 v3.4.0 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/riandyrn/otelchi v0.10.0 // indirect
github.com/riandyrn/otelchi v0.10.1 // indirect
github.com/robfig/cron v1.2.0 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/shirou/gopsutil/v4 v4.24.9 // indirect
github.com/shirou/gopsutil/v4 v4.24.10 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/tklauser/go-sysconf v0.3.14 // indirect
github.com/tklauser/numcpus v0.9.0 // indirect
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect
github.com/uptrace/bun/extra/bunotel v1.2.3 // indirect
github.com/uptrace/bun/extra/bunotel v1.2.5 // indirect
github.com/uptrace/opentelemetry-go-extra/otellogrus v0.3.2 // indirect
github.com/uptrace/opentelemetry-go-extra/otelsql v0.3.2 // indirect
github.com/uptrace/opentelemetry-go-extra/otelutil v0.3.2 // indirect
Expand All @@ -200,19 +200,19 @@ require (
github.com/yusufpapurcu/wmi v1.2.4 // indirect
github.com/zitadel/oidc/v2 v2.12.2 // indirect
go.mongodb.org/mongo-driver v1.14.0 // indirect
go.opentelemetry.io/contrib/instrumentation/host v0.56.0 // indirect
go.opentelemetry.io/contrib/instrumentation/runtime v0.56.0 // indirect
go.opentelemetry.io/contrib/propagators/b3 v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.31.0 // indirect
go.opentelemetry.io/contrib/instrumentation/host v0.57.0 // indirect
go.opentelemetry.io/contrib/instrumentation/runtime v0.57.0 // indirect
go.opentelemetry.io/contrib/propagators/b3 v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 // indirect
go.opentelemetry.io/otel/log v0.6.0 // indirect
go.opentelemetry.io/otel/sdk v1.31.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.31.0 // indirect
go.opentelemetry.io/otel/sdk v1.32.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
go.temporal.io/sdk/contrib/opentelemetry v0.6.0 // indirect
go.uber.org/dig v1.18.0 // indirect
Expand All @@ -221,14 +221,12 @@ require (
golang.org/x/crypto v0.28.0 // indirect
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
golang.org/x/net v0.30.0 // indirect
golang.org/x/sys v0.26.0 // indirect
golang.org/x/text v0.19.0 // indirect
golang.org/x/time v0.6.0 // indirect
golang.org/x/tools v0.25.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect
golang.org/x/sys v0.27.0 // indirect
golang.org/x/text v0.20.0 // indirect
golang.org/x/time v0.7.0 // indirect
golang.org/x/tools v0.26.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect
gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

replace github.com/formancehq/payments/genericclient => ./internal/connectors/plugins/public/generic/client/generated
Loading