| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package job
- import (
- "strings"
- "testing"
- "github.com/mhsanaei/3x-ui/v3/internal/database/model"
- "github.com/mhsanaei/3x-ui/v3/internal/logger"
- )
- // The protocol gate must let hysteria through: XrayAPI supports it, and the
- // skip left over-limit Hysteria2 sessions alive until the fail2ban ban caught up.
- func TestDisconnectClientTemporarilyAllowsHysteria(t *testing.T) {
- setupIntegrationDB(t)
- const email = "hy2-limit-probe"
- inbound := &model.Inbound{
- Id: 1,
- Protocol: model.Hysteria,
- Tag: "hy2-limit-probe-tag",
- Settings: `{"clients":[]}`,
- }
- clients := []model.Client{{Email: email, Auth: "secret"}}
- (&CheckClientIpJob{}).disconnectClientTemporarily(inbound, email, clients)
- var unsupported, attempted bool
- for _, line := range logger.GetLogs(500, "warning") {
- if strings.Contains(line, "Temporary disconnect is not supported for protocol hysteria") {
- unsupported = true
- }
- if strings.Contains(line, "Failed to remove user "+email) {
- attempted = true
- }
- }
- if unsupported {
- t.Fatal("hysteria was rejected by the protocol gate")
- }
- if !attempted {
- t.Fatal("expected a remove attempt against the Xray API for hysteria")
- }
- }
|