mirror of https://github.com/fluffle/goirc
Test handler for 353 replies.
This commit is contained in:
parent
9d896f2693
commit
6c1d345f0b
|
@ -541,3 +541,81 @@ func Test352(t *testing.T) {
|
||||||
m.ExpectNothing()
|
m.ExpectNothing()
|
||||||
c.ExpectError()
|
c.ExpectError()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test the handler for 353 / RPL_NAMREPLY
|
||||||
|
func Test353(t *testing.T) {
|
||||||
|
m, c := setUp(t)
|
||||||
|
defer tearDown(m, c)
|
||||||
|
|
||||||
|
// Create #test1, whose user list we're mostly unfamiliar with
|
||||||
|
test1 := c.NewChannel("#test1")
|
||||||
|
user1 := c.NewNick("user1", "ident1", "name one", "host1.com")
|
||||||
|
test1.AddNick(user1)
|
||||||
|
test1.AddNick(c.Me)
|
||||||
|
|
||||||
|
// lazy lazy lazy ;-)
|
||||||
|
get := func(n string) *ChanPrivs {
|
||||||
|
if p, ok := test1.Nicks[c.GetNick(n)]; ok {
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify the lack of nicks
|
||||||
|
if len(test1.Nicks) != 2 {
|
||||||
|
t.Errorf("Unexpected number of nicks in test channel before 353.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify that user1 isn't opped yet
|
||||||
|
if p := get("user1"); p == nil || p.Op {
|
||||||
|
t.Errorf("Unexpected permissions for user1 before 353.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send a couple of names replies (complete with trailing space), expect no errors
|
||||||
|
c.h_353(parseLine(":irc.server.org 353 test = #test1 :test @user1 user2 +voice "))
|
||||||
|
c.h_353(parseLine(":irc.server.org 353 test = #test1 :%halfop @op &admin ~owner "))
|
||||||
|
m.ExpectNothing()
|
||||||
|
c.ExpectNoErrors()
|
||||||
|
|
||||||
|
if len(test1.Nicks) != 8 {
|
||||||
|
t.Errorf("Unexpected number of nicks in test channel after 353.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(fluffle): Testing side-effects is starting to get on my tits.
|
||||||
|
// As a result, this makes some assumptions about the implementation of
|
||||||
|
// h_353 that may or may not be valid in the future. Hopefully, I will have
|
||||||
|
// time to rewrite the nick / channel handling soon.
|
||||||
|
if p := get("user1"); p == nil || !p.Op {
|
||||||
|
t.Errorf("353 handler failed to op known nick user1.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p := get("user2");
|
||||||
|
p == nil || p.Voice || p.HalfOp || p.Op || p.Admin || p.Owner {
|
||||||
|
t.Errorf("353 handler set modes on new nick user2.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p := get("voice"); p == nil || !p.Voice {
|
||||||
|
t.Errorf("353 handler failed to parse voice correctly.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p := get("halfop"); p == nil || !p.HalfOp {
|
||||||
|
t.Errorf("353 handler failed to parse halfop correctly.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p := get("op"); p == nil || !p.Op {
|
||||||
|
t.Errorf("353 handler failed to parse op correctly.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p := get("admin"); p == nil || !p.Admin {
|
||||||
|
t.Errorf("353 handler failed to parse admin correctly.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p := get("owner"); p == nil || !p.Owner {
|
||||||
|
t.Errorf("353 handler failed to parse owner correctly.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check unknown channel causes an error
|
||||||
|
c.h_324(parseLine(":irc.server.org 353 test = #test2 :test ~user3"))
|
||||||
|
m.ExpectNothing()
|
||||||
|
c.ExpectError()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue