fix: 统一对话密码锁键为发送方加对方不含 IP
This commit is contained in:
@@ -138,3 +138,54 @@ func TestLoginLocksClearEndpoint(t *testing.T) {
|
||||
t.Fatal("e1 total lock should clear")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoginLocksClearEndpointKeepsTalk(t *testing.T) {
|
||||
locks := NewLoginLocks()
|
||||
talk := LockKey{Kind: LockTalkPair, EndpointID: "e1", PeerID: "e2"}
|
||||
target := LockKey{Kind: LockTalkTarget, EndpointID: "e1"}
|
||||
login := LockKey{Kind: LockLoginEndpoint, EndpointID: "e1"}
|
||||
for i := 0; i < 10; i++ {
|
||||
locks.Fail(talk)
|
||||
locks.Fail(login)
|
||||
}
|
||||
for i := 0; i < 50; i++ {
|
||||
locks.Fail(target)
|
||||
}
|
||||
locks.ClearEndpoint("e1")
|
||||
if locked, _ := locks.Check(login); locked {
|
||||
t.Fatal("login lock should clear")
|
||||
}
|
||||
if locked, _ := locks.Check(talk); !locked {
|
||||
t.Fatal("talk pair lock must survive ClearEndpoint")
|
||||
}
|
||||
if locked, _ := locks.Check(target); !locked {
|
||||
t.Fatal("talk target lock must survive ClearEndpoint")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoginLocksClearAllForEndpoint(t *testing.T) {
|
||||
locks := NewLoginLocks()
|
||||
asSender := LockKey{Kind: LockTalkPair, EndpointID: "gone", PeerID: "peer"}
|
||||
asPeer := LockKey{Kind: LockTalkPair, EndpointID: "other", PeerID: "gone"}
|
||||
target := LockKey{Kind: LockTalkTarget, EndpointID: "gone"}
|
||||
login := LockKey{Kind: LockLoginEndpointIP, EndpointID: "gone", IP: "1.1.1.1"}
|
||||
keep := LockKey{Kind: LockTalkPair, EndpointID: "keep", PeerID: "peer"}
|
||||
for i := 0; i < 10; i++ {
|
||||
locks.Fail(asSender)
|
||||
locks.Fail(asPeer)
|
||||
locks.Fail(login)
|
||||
locks.Fail(keep)
|
||||
}
|
||||
for i := 0; i < 50; i++ {
|
||||
locks.Fail(target)
|
||||
}
|
||||
locks.ClearAllForEndpoint("gone")
|
||||
for _, k := range []LockKey{asSender, asPeer, target, login} {
|
||||
if locked, _ := locks.Check(k); locked {
|
||||
t.Fatalf("expected %s cleared", lockMapKey(k))
|
||||
}
|
||||
}
|
||||
if locked, _ := locks.Check(keep); !locked {
|
||||
t.Fatal("unrelated pair should remain")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user