+signup +email availability check
Some checks failed
ci/woodpecker/push/billing_fees Pipeline was successful
ci/woodpecker/push/bff Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/chain_gateway Pipeline was successful
ci/woodpecker/push/fx_oracle Pipeline was successful
ci/woodpecker/push/frontend Pipeline was successful
ci/woodpecker/push/nats Pipeline was successful
ci/woodpecker/push/bump_version Pipeline failed
ci/woodpecker/push/fx_ingestor Pipeline was successful
ci/woodpecker/push/ledger Pipeline was successful
ci/woodpecker/push/notification Pipeline was successful
ci/woodpecker/push/payments_orchestrator Pipeline was successful

This commit is contained in:
Stephan D
2025-11-17 18:00:38 +01:00
parent 4c64a8d6e6
commit 1ab7f2e7d3
13 changed files with 496 additions and 68 deletions

View File

@@ -6,6 +6,21 @@ import (
)
type Config struct {
Mw *mwa.Config `yaml:"middleware"`
Storage *fsc.Config `yaml:"storage"`
Mw *mwa.Config `yaml:"middleware"`
Storage *fsc.Config `yaml:"storage"`
ChainGateway *ChainGatewayConfig `yaml:"chain_gateway"`
}
type ChainGatewayConfig struct {
AddressEnv string `yaml:"address_env"`
DialTimeoutSeconds int `yaml:"dial_timeout_seconds"`
CallTimeoutSeconds int `yaml:"call_timeout_seconds"`
Insecure bool `yaml:"insecure"`
DefaultAsset ChainGatewayAssetConfig `yaml:"default_asset"`
}
type ChainGatewayAssetConfig struct {
Chain string `yaml:"chain"`
TokenSymbol string `yaml:"token_symbol"`
ContractAddress string `yaml:"contract_address"`
}

View File

@@ -4,7 +4,7 @@ import "github.com/tech/sendico/pkg/model"
type Signup struct {
Account model.AccountData `json:"account"`
OrganizationName string `json:"organizationName"`
Organization model.Describable `json:"organization"`
OrganizationTimeZone string `json:"organizationTimeZone"`
AnonymousUser model.Describable `json:"anonymousUser"`
OwnerRole model.Describable `json:"ownerRole"`

View File

@@ -20,9 +20,13 @@ func TestSignupRequest_JSONSerialization(t *testing.T) {
},
Password: "TestPassword123!",
},
Name: "Test User",
Describable: model.Describable{
Name: "Test User",
},
},
Organization: model.Describable{
Name: "Test Organization",
},
OrganizationName: "Test Organization",
OrganizationTimeZone: "UTC",
AnonymousUser: model.Describable{
Name: "Anonymous User",
@@ -49,7 +53,7 @@ func TestSignupRequest_JSONSerialization(t *testing.T) {
assert.Equal(t, signup.Account.Name, unmarshaled.Account.Name)
assert.Equal(t, signup.Account.Login, unmarshaled.Account.Login)
assert.Equal(t, signup.Account.Password, unmarshaled.Account.Password)
assert.Equal(t, signup.OrganizationName, unmarshaled.OrganizationName)
assert.Equal(t, signup.Organization.Name, unmarshaled.Organization.Name)
assert.Equal(t, signup.OrganizationTimeZone, unmarshaled.OrganizationTimeZone)
assert.Equal(t, signup.AnonymousUser.Name, unmarshaled.AnonymousUser.Name)
assert.Equal(t, signup.OwnerRole.Name, unmarshaled.OwnerRole.Name)
@@ -65,9 +69,13 @@ func TestSignupRequest_MinimalValidRequest(t *testing.T) {
},
Password: "TestPassword123!",
},
Name: "Test User",
Describable: model.Describable{
Name: "Test User",
},
},
Organization: model.Describable{
Name: "Test Organization",
},
OrganizationName: "Test Organization",
OrganizationTimeZone: "UTC",
AnonymousUser: model.Describable{
Name: "Anonymous",
@@ -93,13 +101,13 @@ func TestSignupRequest_MinimalValidRequest(t *testing.T) {
// Verify minimal request is valid
assert.Equal(t, signup.Account.Name, unmarshaled.Account.Name)
assert.Equal(t, signup.Account.Login, unmarshaled.Account.Login)
assert.Equal(t, signup.OrganizationName, unmarshaled.OrganizationName)
assert.Equal(t, signup.Organization.Name, unmarshaled.Organization.Name)
}
func TestSignupRequest_InvalidJSON(t *testing.T) {
invalidJSONs := []string{
`{"account": invalid}`,
`{"organizationName": 123}`,
`{"organization": 123}`,
`{"organizationTimeZone": true}`,
`{"defaultPriorityGroup": "not_an_object"}`,
`{"anonymousUser": []}`,
@@ -125,9 +133,13 @@ func TestSignupRequest_UnicodeCharacters(t *testing.T) {
},
Password: "TestPassword123!",
},
Name: "Test 用户 Üser",
Describable: model.Describable{
Name: "Test 用户 Üser",
},
},
Organization: model.Describable{
Name: "测试 Organization",
},
OrganizationName: "测试 Organization",
OrganizationTimeZone: "UTC",
AnonymousUser: model.Describable{
Name: "匿名 User",
@@ -153,7 +165,7 @@ func TestSignupRequest_UnicodeCharacters(t *testing.T) {
// Verify unicode characters are properly handled
assert.Equal(t, "测试@example.com", unmarshaled.Account.Login)
assert.Equal(t, "Test 用户 Üser", unmarshaled.Account.Name)
assert.Equal(t, "测试 Organization", unmarshaled.OrganizationName)
assert.Equal(t, "测试 Organization", unmarshaled.Organization.Name)
assert.Equal(t, "匿名 User", unmarshaled.AnonymousUser.Name)
assert.Equal(t, "所有者", unmarshaled.OwnerRole.Name)
assert.Equal(t, "匿名", unmarshaled.AnonymousRole.Name)

View File

@@ -0,0 +1,23 @@
package sresponse
import (
"net/http"
"github.com/tech/sendico/pkg/api/http/response"
"github.com/tech/sendico/pkg/mlogger"
)
type SignupAvailability struct {
Login string `json:"login"`
Available bool `json:"available"`
}
func SignUpAvailability(logger mlogger.Logger, login string, available bool) http.HandlerFunc {
return response.Ok(
logger,
SignupAvailability{
Login: login,
Available: available,
},
)
}