fix(qryptinvite): validate quota and TTL env values

This commit is contained in:
rissrice2105-agent 2026-07-15 18:28:55 -06:00
parent 24269b6799
commit ea8ac04e18
2 changed files with 50 additions and 2 deletions

View file

@ -45,12 +45,12 @@ func ConfigFromEnv() Config {
c.RedeemURL = v
}
if v := os.Getenv("AGENTBBS_QRYPT_INVITE_TTL"); v != "" {
if d, err := time.ParseDuration(v); err == nil {
if d, err := time.ParseDuration(v); err == nil && d > 0 {
c.TTL = d
}
}
if v := os.Getenv("AGENTBBS_QRYPT_INVITE_QUOTA"); v != "" {
if n, err := strconv.Atoi(v); err == nil {
if n, err := strconv.Atoi(v); err == nil && n >= 0 {
c.Quota = n
}
}

View file

@ -0,0 +1,48 @@
package qryptinvite
import (
"strconv"
"testing"
"time"
)
func TestConfigFromEnvRejectsNonPositiveTTL(t *testing.T) {
for _, value := range []string{"0s", "-1h"} {
t.Run(value, func(t *testing.T) {
t.Setenv("AGENTBBS_QRYPT_INVITE_TTL", value)
if got := ConfigFromEnv().TTL; got != DefaultTTL {
t.Fatalf("TTL = %s, want default %s", got, DefaultTTL)
}
})
}
}
func TestConfigFromEnvQuotaValidation(t *testing.T) {
tests := []struct {
value string
want int
}{
{value: "-1", want: DefaultQuota},
{value: "0", want: 0},
{value: "12", want: 12},
}
for _, tt := range tests {
t.Run(strconv.Quote(tt.value), func(t *testing.T) {
t.Setenv("AGENTBBS_QRYPT_INVITE_QUOTA", tt.value)
if got := ConfigFromEnv().Quota; got != tt.want {
t.Fatalf("Quota = %d, want %d", got, tt.want)
}
})
}
}
func TestConfigFromEnvAcceptsPositiveTTL(t *testing.T) {
t.Setenv("AGENTBBS_QRYPT_INVITE_TTL", "24h")
if got := ConfigFromEnv().TTL; got != 24*time.Hour {
t.Fatalf("TTL = %s, want %s", got, 24*time.Hour)
}
}