mirror of
https://github.com/profullstack/agentbbs.git
synced 2026-08-13 14:27:27 +00:00
fix(qryptinvite): validate quota and TTL env values (#93)
Co-authored-by: rissrice2105-agent <rissrice2105-agent@users.noreply.github.com>
This commit is contained in:
parent
db641c79bb
commit
7cb2aba24e
2 changed files with 50 additions and 2 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
48
internal/qryptinvite/config_test.go
Normal file
48
internal/qryptinvite/config_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue