internal/app/help/wallet_internal_transfers_test.go
Rama main · réplica de lectura del repositorio original.
package help
import (
"context"
"telesrv/internal/domain"
"testing"
)
type walletOperatorConfig struct{ cfg domain.AppConfig }
func (s walletOperatorConfig) GetAppConfig(context.Context, string) (domain.AppConfig, bool, error) {
return s.cfg, true, nil
}
func (s walletOperatorConfig) UpsertAppConfig(context.Context, domain.AppConfig) error { return nil }
func TestInternalWalletTransfersAreExplicitAndPreserveOperatorConfig(t *testing.T) {
for _, options := range [][]Option{{}, {WithWalletAvailable(true)}, {WithInternalWalletTransfers(true)}} {
cfg := walletConfigValues(t, NewService(nil, nil, options...))
if cfg["wallet_internal_gram"] == true {
t.Fatal("transfer capability enabled implicitly")
}
}
on := NewService(nil, nil, WithWalletAvailable(true), WithInternalWalletTransfers(true))
values := walletConfigValues(t, on)
if values["wallet_internal_gram"] != true || values["wallet_internal_gram_transfer_version"] != float64(1) || values["wallet_transfer_requires_password"] != true {
t.Fatal("explicit extension missing")
}
if values["wallet_gasless_daily_transfers"] != float64(0) || values["wallet_gasless_min_nanos"] != nil {
t.Fatal("gasless advertised")
}
offCfg, _, _ := NewService(nil, nil, WithWalletAvailable(true)).GetAppConfig(context.Background(), 0, 0)
if _, same, err := on.GetAppConfig(context.Background(), 0, offCfg.Hash); err != nil || same {
t.Fatal("capability change retained cache hash")
}
custom := walletOperatorConfig{domain.AppConfig{Client: "tdesktop", Hash: defaultAppConfigHash + 100, JSON: []byte(`{"wallet_available":false,"wallet_internal_gram":false,"operator_key":"keep"}`)}}
values = walletConfigValues(t, NewService(custom, nil, WithWalletAvailable(true), WithInternalWalletTransfers(true)))
if values["wallet_available"] != false || values["wallet_internal_gram"] != false || values["operator_key"] != "keep" {
t.Fatal("operator configuration overwritten")
}
}