Пример #1
0
    def testPrivateMessage(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        user.transport.clear()
        other.transport.clear()

        user.write('PRIVMSG otheruser :Hello, monkey.\r\n')

        response = self._response(user)
        event = self._response(other)

        self.failIf(response)
        self.assertEquals(len(event), 1)
        self.assertEquals(event[0][0], 'useruser!useruser@realmname')
        self.assertEquals(event[0][1], 'PRIVMSG')
        self.assertEquals(event[0][2], ['otheruser', 'Hello, monkey.'])

        user.write('PRIVMSG nousernamedthis :Hello, monkey.\r\n')

        response = self._response(user)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'realmname')
        self.assertEquals(response[0][1], '401')
        self.assertEquals(
            response[0][2],
            ['useruser', 'nousernamedthis', 'No such nick/channel.'])
Пример #2
0
    def testGroupMessage(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        add = wFD(self.realm.createGroup(u"somechannel"))
        yield add
        somechannel = add.getResult()

        user.write("JOIN #somechannel\r\n")

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.write("JOIN #somechannel\r\n")

        user.transport.clear()
        other.transport.clear()

        user.write('PRIVMSG #somechannel :Hello, world.\r\n')

        response = self._response(user)
        event = self._response(other)

        self.failIf(response)
        self.assertEquals(len(event), 1)
        self.assertEquals(event[0][0], 'useruser!useruser@realmname')
        self.assertEquals(event[0][1], 'PRIVMSG', -1)
        self.assertEquals(event[0][2], ['#somechannel', 'Hello, world.'])
Пример #3
0
    def testGroupMessage(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        add = wFD(self.realm.createGroup(u"somechannel"))
        yield add
        somechannel = add.getResult()

        user.write("JOIN #somechannel\r\n")

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.write("JOIN #somechannel\r\n")

        user.transport.clear()
        other.transport.clear()

        user.write('PRIVMSG #somechannel :Hello, world.\r\n')

        response = self._response(user)
        event = self._response(other)

        self.failIf(response)
        self.assertEquals(len(event), 1)
        self.assertEquals(event[0][0], 'useruser!useruser@realmname')
        self.assertEquals(event[0][1], 'PRIVMSG', -1)
        self.assertEquals(event[0][2], ['#somechannel', 'Hello, world.'])
Пример #4
0
    def testPrivateMessage(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        user.transport.clear()
        other.transport.clear()

        user.write('PRIVMSG otheruser :Hello, monkey.\r\n')

        response = self._response(user)
        event = self._response(other)

        self.failIf(response)
        self.assertEquals(len(event), 1)
        self.assertEquals(event[0][0], 'useruser!useruser@realmname')
        self.assertEquals(event[0][1], 'PRIVMSG')
        self.assertEquals(event[0][2], ['otheruser', 'Hello, monkey.'])

        user.write('PRIVMSG nousernamedthis :Hello, monkey.\r\n')

        response = self._response(user)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'realmname')
        self.assertEquals(response[0][1], '401')
        self.assertEquals(response[0][2], ['useruser', 'nousernamedthis', 'No such nick/channel.'])
Пример #5
0
    def testWhois(self):
        user = wFD(self._loggedInUser(u'someguy'))
        yield user
        user = user.getResult()

        otherguy = service.User("otherguy")
        otherguy.itergroups = lambda: iter([
            service.Group('groupA'),
            service.Group('groupB')])
        otherguy.signOn = 10
        otherguy.lastMessage = time.time() - 15

        add = wFD(self.realm.addUser(otherguy))
        yield add
        add.getResult()

        user.transport.clear()
        user.write('WHOIS otherguy\r\n')
        r = self._response(user)

        self.assertEquals(len(r), 5)
        wuser, wserver, idle, channels, end = r

        self.assertEquals(wuser[0], 'realmname')
        self.assertEquals(wuser[1], '311')
        self.assertEquals(wuser[2][0], 'someguy')
        self.assertEquals(wuser[2][1], 'otherguy')
        self.assertEquals(wuser[2][2], 'otherguy')
        self.assertEquals(wuser[2][3], 'realmname')
        self.assertEquals(wuser[2][4], '*')
        self.assertEquals(wuser[2][5], 'otherguy')

        self.assertEquals(wserver[0], 'realmname')
        self.assertEquals(wserver[1], '312')
        self.assertEquals(wserver[2][0], 'someguy')
        self.assertEquals(wserver[2][1], 'otherguy')
        self.assertEquals(wserver[2][2], 'realmname')
        self.assertEquals(wserver[2][3], 'Hi mom!')

        self.assertEquals(idle[0], 'realmname')
        self.assertEquals(idle[1], '317')
        self.assertEquals(idle[2][0], 'someguy')
        self.assertEquals(idle[2][1], 'otherguy')
        self.assertEquals(idle[2][2], '15')
        self.assertEquals(idle[2][3], '10')
        self.assertEquals(idle[2][4], "seconds idle, signon time")

        self.assertEquals(channels[0], 'realmname')
        self.assertEquals(channels[1], '319')
        self.assertEquals(channels[2][0], 'someguy')
        self.assertEquals(channels[2][1], 'otherguy')
        self.assertEquals(channels[2][2], '#groupA #groupB')

        self.assertEquals(end[0], 'realmname')
        self.assertEquals(end[1], '318')
        self.assertEquals(end[2][0], 'someguy')
        self.assertEquals(end[2][1], 'otherguy')
        self.assertEquals(end[2][2], 'End of WHOIS list.')
Пример #6
0
    def testWhois(self):
        user = wFD(self._loggedInUser(u'someguy'))
        yield user
        user = user.getResult()

        otherguy = service.User("otherguy")
        otherguy.itergroups = lambda: iter(
            [service.Group('groupA'),
             service.Group('groupB')])
        otherguy.signOn = 10
        otherguy.lastMessage = time.time() - 15

        add = wFD(self.realm.addUser(otherguy))
        yield add
        add.getResult()

        user.transport.clear()
        user.write('WHOIS otherguy\r\n')
        r = self._response(user)

        self.assertEquals(len(r), 5)
        wuser, wserver, idle, channels, end = r

        self.assertEquals(wuser[0], 'realmname')
        self.assertEquals(wuser[1], '311')
        self.assertEquals(wuser[2][0], 'someguy')
        self.assertEquals(wuser[2][1], 'otherguy')
        self.assertEquals(wuser[2][2], 'otherguy')
        self.assertEquals(wuser[2][3], 'realmname')
        self.assertEquals(wuser[2][4], '*')
        self.assertEquals(wuser[2][5], 'otherguy')

        self.assertEquals(wserver[0], 'realmname')
        self.assertEquals(wserver[1], '312')
        self.assertEquals(wserver[2][0], 'someguy')
        self.assertEquals(wserver[2][1], 'otherguy')
        self.assertEquals(wserver[2][2], 'realmname')
        self.assertEquals(wserver[2][3], 'Hi mom!')

        self.assertEquals(idle[0], 'realmname')
        self.assertEquals(idle[1], '317')
        self.assertEquals(idle[2][0], 'someguy')
        self.assertEquals(idle[2][1], 'otherguy')
        self.assertEquals(idle[2][2], '15')
        self.assertEquals(idle[2][3], '10')
        self.assertEquals(idle[2][4], "seconds idle, signon time")

        self.assertEquals(channels[0], 'realmname')
        self.assertEquals(channels[1], '319')
        self.assertEquals(channels[2][0], 'someguy')
        self.assertEquals(channels[2][1], 'otherguy')
        self.assertEquals(channels[2][2], '#groupA #groupB')

        self.assertEquals(end[0], 'realmname')
        self.assertEquals(end[1], '318')
        self.assertEquals(end[2][0], 'someguy')
        self.assertEquals(end[2][1], 'otherguy')
        self.assertEquals(end[2][2], 'End of WHOIS list.')
Пример #7
0
    def testJoin(self):
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        somechannel = wFD(self.realm.createGroup(u"somechannel"))
        yield somechannel
        somechannel = somechannel.getResult()

        somechannel.meta['topic'] = 'some random topic'

        # Bring in one user, make sure he gets into the channel sanely
        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser")
        user.transport.clear()
        user.write('JOIN #somechannel\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 5)

        # Join message
        self.assertEquals(response[0][0], 'firstuser!firstuser@realmname')
        self.assertEquals(response[0][1], 'JOIN')
        self.assertEquals(response[0][2], ['#somechannel'])

        # User list
        self.assertEquals(response[1][1], '353')
        self.assertEquals(response[2][1], '366')

        # Topic (or lack thereof, as the case may be)
        self.assertEquals(response[3][1], '332')
        self.assertEquals(response[4][1], '333')

        # Hook up another client!  It is a CHAT SYSTEM!!!!!!!
        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.transport.clear()
        user.transport.clear()
        other.write('JOIN #somechannel\r\n')

        # At this point, both users should be in the channel
        response = self._response(other)

        event = self._response(user)
        self.assertEquals(len(event), 1)
        self.assertEquals(event[0][0], 'otheruser!otheruser@realmname')
        self.assertEquals(event[0][1], 'JOIN')
        self.assertEquals(event[0][2], ['#somechannel'])

        self.assertEquals(response[1][0], 'realmname')
        self.assertEquals(response[1][1], '353')
        self.assertEquals(
            response[1][2],
            ['otheruser', '=', '#somechannel', 'firstuser otheruser'])
Пример #8
0
    def testJoin(self):
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        somechannel = wFD(self.realm.createGroup(u"somechannel"))
        yield somechannel
        somechannel = somechannel.getResult()

        somechannel.meta['topic'] = 'some random topic'

        # Bring in one user, make sure he gets into the channel sanely
        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser")
        user.transport.clear()
        user.write('JOIN #somechannel\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 5)

        # Join message
        self.assertEquals(response[0][0], 'firstuser!firstuser@realmname')
        self.assertEquals(response[0][1], 'JOIN')
        self.assertEquals(response[0][2], ['#somechannel'])

        # User list
        self.assertEquals(response[1][1], '353')
        self.assertEquals(response[2][1], '366')

        # Topic (or lack thereof, as the case may be)
        self.assertEquals(response[3][1], '332')
        self.assertEquals(response[4][1], '333')


        # Hook up another client!  It is a CHAT SYSTEM!!!!!!!
        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.transport.clear()
        user.transport.clear()
        other.write('JOIN #somechannel\r\n')

        # At this point, both users should be in the channel
        response = self._response(other)

        event = self._response(user)
        self.assertEquals(len(event), 1)
        self.assertEquals(event[0][0], 'otheruser!otheruser@realmname')
        self.assertEquals(event[0][1], 'JOIN')
        self.assertEquals(event[0][2], ['#somechannel'])

        self.assertEquals(response[1][0], 'realmname')
        self.assertEquals(response[1][1], '353')
        self.assertEquals(response[1][2], ['otheruser', '=', '#somechannel', 'firstuser otheruser'])
Пример #9
0
    def testGroupAddition(self):
        realm = service.InMemoryWordsRealm("realmname")

        p = service.Group("testgroup")
        d = wFD(realm.addGroup(p))
        yield d
        d.getResult()

        d = wFD(realm.getGroup(u"testGroup"))
        yield d
        group = d.getResult()

        self.assertIdentical(p, group)
Пример #10
0
    def testGroupAddition(self):
        realm = service.InMemoryWordsRealm("realmname")

        p = service.Group("testgroup")
        d = wFD(realm.addGroup(p))
        yield d
        d.getResult()

        d = wFD(realm.getGroup(u"testGroup"))
        yield d
        group = d.getResult()

        self.assertIdentical(p, group)
Пример #11
0
    def testSetTopic(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        add = wFD(self.realm.createGroup(u"somechannel"))
        yield add
        somechannel = add.getResult()

        user.write("JOIN #somechannel\r\n")

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.write("JOIN #somechannel\r\n")

        user.transport.clear()
        other.transport.clear()

        other.write('TOPIC #somechannel :This is the new topic.\r\n')

        response = self._response(other)
        event = self._response(user)

        self.assertEquals(response, event)

        self.assertEquals(response[0][0], 'otheruser!otheruser@realmname')
        self.assertEquals(response[0][1], 'TOPIC')
        self.assertEquals(response[0][2],
                          ['#somechannel', 'This is the new topic.'])

        other.transport.clear()

        somechannel.meta['topic_date'] = 12345
        other.write('TOPIC #somechannel\r\n')

        response = self._response(other)
        self.assertEquals(response[0][1], '332')
        self.assertEquals(
            response[0][2],
            ['otheruser', '#somechannel', 'This is the new topic.'])
        self.assertEquals(response[1][1], '333')
        self.assertEquals(response[1][2],
                          ['otheruser', '#somechannel', 'otheruser', '12345'])

        other.transport.clear()
        other.write('TOPIC #asdlkjasd\r\n')

        response = self._response(other)
        self.assertEquals(response[0][1], '403')
Пример #12
0
    def testLeave(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        somechannel = wFD(self.realm.createGroup(u"somechannel"))
        yield somechannel
        somechannel = somechannel.getResult()

        user.write('JOIN #somechannel\r\n')
        user.transport.clear()

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.write('JOIN #somechannel\r\n')

        user.transport.clear()
        other.transport.clear()

        user.write('PART #somechannel\r\n')

        response = self._response(user)
        event = self._response(other)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'useruser!useruser@realmname')
        self.assertEquals(response[0][1], 'PART')
        self.assertEquals(response[0][2], ['#somechannel', 'leaving'])
        self.assertEquals(response, event)

        # Now again, with a part message
        user.write('JOIN #somechannel\r\n')

        user.transport.clear()
        other.transport.clear()

        user.write('PART #somechannel :goodbye stupidheads\r\n')

        response = self._response(user)
        event = self._response(other)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'useruser!useruser@realmname')
        self.assertEquals(response[0][1], 'PART')
        self.assertEquals(response[0][2],
                          ['#somechannel', 'goodbye stupidheads'])
        self.assertEquals(response, event)
Пример #13
0
    def testGroupUsernameCollision(self):
        """
        Try creating a group with the same name as an existing user and
        assert that it succeeds, since users and groups should not be in the
        same namespace and collisions should be impossible.
        """
        realm = service.InMemoryWordsRealm("realmname")

        d = wFD(realm.createUser(u"test"))
        yield d
        user = d.getResult()

        d = wFD(realm.createGroup(u"test"))
        yield d
        group = d.getResult()
Пример #14
0
    def testGroupUsernameCollision(self):
        """
        Try creating a group with the same name as an existing user and
        assert that it succeeds, since users and groups should not be in the
        same namespace and collisions should be impossible.
        """
        realm = service.InMemoryWordsRealm("realmname")

        d = wFD(realm.createUser(u"test"))
        yield d
        user = d.getResult()

        d = wFD(realm.createGroup(u"test"))
        yield d
        group = d.getResult()
Пример #15
0
    def testLeave(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        somechannel = wFD(self.realm.createGroup(u"somechannel"))
        yield somechannel
        somechannel = somechannel.getResult()

        user.write('JOIN #somechannel\r\n')
        user.transport.clear()

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.write('JOIN #somechannel\r\n')

        user.transport.clear()
        other.transport.clear()

        user.write('PART #somechannel\r\n')

        response = self._response(user)
        event = self._response(other)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'useruser!useruser@realmname')
        self.assertEquals(response[0][1], 'PART')
        self.assertEquals(response[0][2], ['#somechannel', 'leaving'])
        self.assertEquals(response, event)

        # Now again, with a part message
        user.write('JOIN #somechannel\r\n')

        user.transport.clear()
        other.transport.clear()

        user.write('PART #somechannel :goodbye stupidheads\r\n')

        response = self._response(user)
        event = self._response(other)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'useruser!useruser@realmname')
        self.assertEquals(response[0][1], 'PART')
        self.assertEquals(response[0][2], ['#somechannel', 'goodbye stupidheads'])
        self.assertEquals(response, event)
Пример #16
0
    def testGroupRetrieval(self):
        realm = service.InMemoryWordsRealm("realmname")

        d = wFD(realm.createGroup(u"testgroup"))
        yield d
        group = d.getResult()

        d = wFD(realm.getGroup(u"testgroup"))
        yield d
        retrieved = d.getResult()

        self.assertIdentical(group, retrieved)

        d = wFD(realm.getGroup(u"nosuchgroup"))
        yield d
        self.assertRaises(ewords.NoSuchGroup, d.getResult)
Пример #17
0
 def _loggedInUser(self, name):
     d = wFD(self.realm.lookupUser(name))
     yield d
     user = d.getResult()
     agg = TestCaseUserAgg(user, self.realm, self.factory)
     self._login(agg, name)
     yield agg
Пример #18
0
    def testGroupRetrieval(self):
        realm = service.InMemoryWordsRealm("realmname")

        d = wFD(realm.createGroup(u"testgroup"))
        yield d
        group = d.getResult()

        d = wFD(realm.getGroup(u"testgroup"))
        yield d
        retrieved = d.getResult()

        self.assertIdentical(group, retrieved)

        d = wFD(realm.getGroup(u"nosuchgroup"))
        yield d
        self.assertRaises(ewords.NoSuchGroup, d.getResult)
Пример #19
0
 def _loggedInUser(self, name):
     d = wFD(self.realm.lookupUser(name))
     yield d
     user = d.getResult()
     agg = TestCaseUserAgg(user, self.realm, self.factory)
     self._login(agg, name)
     yield agg
Пример #20
0
    def testSetTopic(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        add = wFD(self.realm.createGroup(u"somechannel"))
        yield add
        somechannel = add.getResult()

        user.write("JOIN #somechannel\r\n")

        other = wFD(self._loggedInUser(u'otheruser'))
        yield other
        other = other.getResult()

        other.write("JOIN #somechannel\r\n")

        user.transport.clear()
        other.transport.clear()

        other.write('TOPIC #somechannel :This is the new topic.\r\n')

        response = self._response(other)
        event = self._response(user)

        self.assertEquals(response, event)

        self.assertEquals(response[0][0], 'otheruser!otheruser@realmname')
        self.assertEquals(response[0][1], 'TOPIC')
        self.assertEquals(response[0][2], ['#somechannel', 'This is the new topic.'])

        other.transport.clear()

        somechannel.meta['topic_date'] = 12345
        other.write('TOPIC #somechannel\r\n')

        response = self._response(other)
        self.assertEquals(response[0][1], '332')
        self.assertEquals(response[0][2], ['otheruser', '#somechannel', 'This is the new topic.'])
        self.assertEquals(response[1][1], '333')
        self.assertEquals(response[1][2], ['otheruser', '#somechannel', 'otheruser', '12345'])

        other.transport.clear()
        other.write('TOPIC #asdlkjasd\r\n')

        response = self._response(other)
        self.assertEquals(response[0][1], '403')
Пример #21
0
    def testSetGroupMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        group = wFD(self.realm.createGroup(u"groupname"))
        yield group
        group = group.getResult()

        user.write('JOIN #groupname\r\n')

        user.transport.clear()
        user.write('MODE #groupname +abcd\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '472')
Пример #22
0
    def testWho(self):
        group = service.Group('groupname')
        add = wFD(self.realm.addGroup(group))
        yield add
        add.getResult()

        users = []
        for nick in u'userone', u'usertwo', u'userthree':
            u = wFD(self._loggedInUser(nick))
            yield u
            u = u.getResult()
            users.append(u)
            users[-1].write('JOIN #groupname\r\n')
        for user in users:
            user.transport.clear()

        users[0].write('WHO #groupname\r\n')

        r = self._response(users[0])
        self.failIf(self._response(users[1]))
        self.failIf(self._response(users[2]))

        wantusers = ['userone', 'usertwo', 'userthree']
        for (prefix, code, stuff) in r[:-1]:
            self.assertEquals(prefix, 'realmname')
            self.assertEquals(code, '352')

            (myname, group, theirname, theirhost, theirserver, theirnick, flag,
             extra) = stuff
            self.assertEquals(myname, 'userone')
            self.assertEquals(group, '#groupname')
            self.failUnless(theirname in wantusers)
            self.assertEquals(theirhost, 'realmname')
            self.assertEquals(theirserver, 'realmname')
            wantusers.remove(theirnick)
            self.assertEquals(flag, 'H')
            self.assertEquals(extra, '0 ' + theirnick)
        self.failIf(wantusers)

        prefix, code, stuff = r[-1]
        self.assertEquals(prefix, 'realmname')
        self.assertEquals(code, '315')
        myname, channel, extra = stuff
        self.assertEquals(myname, 'userone')
        self.assertEquals(channel, '#groupname')
        self.assertEquals(extra, 'End of /WHO list.')
Пример #23
0
    def testGetGroupMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        add = wFD(self.realm.createGroup(u"somechannel"))
        yield add
        somechannel = add.getResult()

        user.write('JOIN #somechannel\r\n')

        user.transport.clear()
        user.write('MODE #somechannel\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '324')
Пример #24
0
    def testList(self):
        user = wFD(self._loggedInUser(u"someuser"))
        yield user
        user = user.getResult()
        user.transport.clear()

        somegroup = wFD(self.realm.createGroup(u"somegroup"))
        yield somegroup
        somegroup = somegroup.getResult()
        somegroup.size = lambda: succeed(17)
        somegroup.meta['topic'] = 'this is the topic woo'

        # Test one group
        user.write('LIST #somegroup\r\n')

        r = self._response(user)
        self.assertEquals(len(r), 2)
        resp, end = r

        self.assertEquals(resp[0], 'realmname')
        self.assertEquals(resp[1], '322')
        self.assertEquals(resp[2][0], 'someuser')
        self.assertEquals(resp[2][1], 'somegroup')
        self.assertEquals(resp[2][2], '17')
        self.assertEquals(resp[2][3], 'this is the topic woo')

        self.assertEquals(end[0], 'realmname')
        self.assertEquals(end[1], '323')
        self.assertEquals(end[2][0], 'someuser')
        self.assertEquals(end[2][1], 'End of /LIST')

        user.transport.clear()
        # Test all groups

        user.write('LIST\r\n')
        r = self._response(user)
        self.assertEquals(len(r), 2)

        fg1, end = r

        self.assertEquals(fg1[1], '322')
        self.assertEquals(fg1[2][1], 'somegroup')
        self.assertEquals(fg1[2][2], '17')
        self.assertEquals(fg1[2][3], 'this is the topic woo')

        self.assertEquals(end[1], '323')
Пример #25
0
    def testList(self):
        user = wFD(self._loggedInUser(u"someuser"))
        yield user
        user = user.getResult()
        user.transport.clear()

        somegroup = wFD(self.realm.createGroup(u"somegroup"))
        yield somegroup
        somegroup = somegroup.getResult()
        somegroup.size = lambda: succeed(17)
        somegroup.meta['topic'] = 'this is the topic woo'

        # Test one group
        user.write('LIST #somegroup\r\n')

        r = self._response(user)
        self.assertEquals(len(r), 2)
        resp, end = r

        self.assertEquals(resp[0], 'realmname')
        self.assertEquals(resp[1], '322')
        self.assertEquals(resp[2][0], 'someuser')
        self.assertEquals(resp[2][1], 'somegroup')
        self.assertEquals(resp[2][2], '17')
        self.assertEquals(resp[2][3], 'this is the topic woo')

        self.assertEquals(end[0], 'realmname')
        self.assertEquals(end[1], '323')
        self.assertEquals(end[2][0], 'someuser')
        self.assertEquals(end[2][1], 'End of /LIST')

        user.transport.clear()
        # Test all groups

        user.write('LIST\r\n')
        r = self._response(user)
        self.assertEquals(len(r), 2)

        fg1, end = r

        self.assertEquals(fg1[1], '322')
        self.assertEquals(fg1[2][1], 'somegroup')
        self.assertEquals(fg1[2][2], '17')
        self.assertEquals(fg1[2][3], 'this is the topic woo')

        self.assertEquals(end[1], '323')
Пример #26
0
    def testSetGroupMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        group = wFD(self.realm.createGroup(u"groupname"))
        yield group
        group = group.getResult()

        user.write('JOIN #groupname\r\n')

        user.transport.clear()
        user.write('MODE #groupname +abcd\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '472')
Пример #27
0
    def testEnumeration(self):
        realm = service.InMemoryWordsRealm("realmname")
        d = wFD(realm.createGroup(u"groupone"))
        yield d
        d.getResult()

        d = wFD(realm.createGroup(u"grouptwo"))
        yield d
        d.getResult()

        groups = wFD(realm.itergroups())
        yield groups
        groups = groups.getResult()

        n = [g.name for g in groups]
        n.sort()
        self.assertEquals(n, ["groupone", "grouptwo"])
Пример #28
0
    def testGetGroupMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        add = wFD(self.realm.createGroup(u"somechannel"))
        yield add
        somechannel = add.getResult()

        user.write('JOIN #somechannel\r\n')

        user.transport.clear()
        user.write('MODE #somechannel\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '324')
Пример #29
0
    def testEnumeration(self):
        realm = service.InMemoryWordsRealm("realmname")
        d = wFD(realm.createGroup(u"groupone"))
        yield d
        d.getResult()

        d = wFD(realm.createGroup(u"grouptwo"))
        yield d
        d.getResult()

        groups = wFD(realm.itergroups())
        yield groups
        groups = groups.getResult()

        n = [g.name for g in groups]
        n.sort()
        self.assertEquals(n, ["groupone", "grouptwo"])
Пример #30
0
    def testGroups(self):
        mindone = TestMind()
        one = wFD(self._loggedInAvatar(u"one", "p1", mindone))
        yield one
        one = one.getResult()

        mindtwo = TestMind()
        two = wFD(self._loggedInAvatar(u"two", "p2", mindtwo))
        yield two
        two = two.getResult()

        add = wFD(self.realm.createGroup(u"foobar"))
        yield add
        add.getResult()

        groupone = wFD(one.join(u"foobar"))
        yield groupone
        groupone = groupone.getResult()

        grouptwo = wFD(two.join(u"foobar"))
        yield grouptwo
        grouptwo = grouptwo.getResult()

        msg = wFD(groupone.send({"text": "hello, monkeys"}))
        yield msg
        msg = msg.getResult()

        leave = wFD(groupone.leave())
        yield leave
        leave = leave.getResult()
Пример #31
0
    def testWho(self):
        group = service.Group('groupname')
        add = wFD(self.realm.addGroup(group))
        yield add
        add.getResult()

        users = []
        for nick in u'userone', u'usertwo', u'userthree':
            u = wFD(self._loggedInUser(nick))
            yield u
            u = u.getResult()
            users.append(u)
            users[-1].write('JOIN #groupname\r\n')
        for user in users:
            user.transport.clear()

        users[0].write('WHO #groupname\r\n')

        r = self._response(users[0])
        self.failIf(self._response(users[1]))
        self.failIf(self._response(users[2]))

        wantusers = ['userone', 'usertwo', 'userthree']
        for (prefix, code, stuff) in r[:-1]:
            self.assertEquals(prefix, 'realmname')
            self.assertEquals(code, '352')

            (myname, group, theirname, theirhost, theirserver, theirnick, flag, extra) = stuff
            self.assertEquals(myname, 'userone')
            self.assertEquals(group, '#groupname')
            self.failUnless(theirname in wantusers)
            self.assertEquals(theirhost, 'realmname')
            self.assertEquals(theirserver, 'realmname')
            wantusers.remove(theirnick)
            self.assertEquals(flag, 'H')
            self.assertEquals(extra, '0 ' + theirnick)
        self.failIf(wantusers)

        prefix, code, stuff = r[-1]
        self.assertEquals(prefix, 'realmname')
        self.assertEquals(code, '315')
        myname, channel, extra = stuff
        self.assertEquals(myname, 'userone')
        self.assertEquals(channel, '#groupname')
        self.assertEquals(extra, 'End of /WHO list.')
Пример #32
0
    def testGroups(self):
        mindone = TestMind()
        one = wFD(self._loggedInAvatar(u"one", "p1", mindone))
        yield one
        one = one.getResult()

        mindtwo = TestMind()
        two = wFD(self._loggedInAvatar(u"two", "p2", mindtwo))
        yield two
        two = two.getResult()

        add = wFD(self.realm.createGroup(u"foobar"))
        yield add
        add.getResult()

        groupone = wFD(one.join(u"foobar"))
        yield groupone
        groupone = groupone.getResult()

        grouptwo = wFD(two.join(u"foobar"))
        yield grouptwo
        grouptwo = grouptwo.getResult()

        msg = wFD(groupone.send({"text": "hello, monkeys"}))
        yield msg
        msg = msg.getResult()

        leave = wFD(groupone.leave())
        yield leave
        leave = leave.getResult()
Пример #33
0
    def testGetTopic(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        group = service.Group("somechannel")
        group.meta["topic"] = "This is a test topic."
        group.meta["topic_author"] = "some_fellow"
        group.meta["topic_date"] = 77777777

        add = wFD(self.realm.addGroup(group))
        yield add
        add.getResult()

        user.transport.clear()
        user.write("JOIN #somechannel\r\n")

        response = self._response(user)

        self.assertEquals(response[3][0], 'realmname')
        self.assertEquals(response[3][1], '332')

        # XXX Sigh.  irc.parsemsg() is not as correct as one might hope.
        self.assertEquals(
            response[3][2],
            ['useruser', '#somechannel', 'This is a test topic.'])
        self.assertEquals(response[4][1], '333')
        self.assertEquals(
            response[4][2],
            ['useruser', '#somechannel', 'some_fellow', '77777777'])

        user.transport.clear()

        user.write('TOPIC #somechannel\r\n')

        response = self._response(user)

        self.assertEquals(response[0][1], '332')
        self.assertEquals(
            response[0][2],
            ['useruser', '#somechannel', 'This is a test topic.'])
        self.assertEquals(response[1][1], '333')
        self.assertEquals(
            response[1][2],
            ['useruser', '#somechannel', 'some_fellow', '77777777'])
Пример #34
0
    def testFailedLogin(self):
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser", "wrongpass")
        response = self._response(user, "PRIVMSG")
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][2], ['firstuser', 'Login failed.  Goodbye.'])
Пример #35
0
    def testSetUserMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        user.transport.clear()
        user.write('MODE useruser +abcd\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '472')
Пример #36
0
    def testFailedLogin(self):
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser", "wrongpass")
        response = self._response(user, "PRIVMSG")
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][2],
                          ['firstuser', 'Login failed.  Goodbye.'])
Пример #37
0
    def testOper(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        user.transport.clear()
        user.write('OPER user pass\r\n')
        response = self._response(user)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '491')
Пример #38
0
    def testLogout(self):
        logout = []
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser")
        user.protocol.logout = lambda: logout.append(True)
        user.write('QUIT\r\n')
        self.assertEquals(logout, [True])
Пример #39
0
    def testLogout(self):
        logout = []
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser")
        user.protocol.logout = lambda: logout.append(True)
        user.write('QUIT\r\n')
        self.assertEquals(logout, [True])
Пример #40
0
    def testSetUserMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        user.transport.clear()
        user.write('MODE useruser +abcd\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '472')
Пример #41
0
    def testOper(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        user.transport.clear()
        user.write('OPER user pass\r\n')
        response = self._response(user)

        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][1], '491')
Пример #42
0
    def testUserAddition(self):
        realm = service.InMemoryWordsRealm("realmname")

        # Create and manually add a user to the realm
        p = service.User("testuser")
        d = wFD(realm.addUser(p))
        yield d
        user = d.getResult()
        self.assertIdentical(p, user)

        # Make sure getting that user returns the same object
        d = wFD(realm.getUser(u"testuser"))
        yield d
        retrieved = d.getResult()
        self.assertIdentical(user, retrieved)

        # Make sure looking up that user returns the same object
        d = wFD(realm.lookupUser(u"testuser"))
        yield d
        lookedUp = d.getResult()
        self.assertIdentical(retrieved, lookedUp)
Пример #43
0
    def testUserAddition(self):
        realm = service.InMemoryWordsRealm("realmname")

        # Create and manually add a user to the realm
        p = service.User("testuser")
        d = wFD(realm.addUser(p))
        yield d
        user = d.getResult()
        self.assertIdentical(p, user)

        # Make sure getting that user returns the same object
        d = wFD(realm.getUser(u"testuser"))
        yield d
        retrieved = d.getResult()
        self.assertIdentical(user, retrieved)

        # Make sure looking up that user returns the same object
        d = wFD(realm.lookupUser(u"testuser"))
        yield d
        lookedUp = d.getResult()
        self.assertIdentical(retrieved, lookedUp)
Пример #44
0
    def _entityCreationTest(self, kind):
        # Kind is "user" or "group"
        realm = service.InMemoryWordsRealm("realmname")

        name = u'test' + kind.lower()
        create = getattr(realm, 'create' + kind.title())
        get = getattr(realm, 'get' + kind.title())
        flag = 'create' + kind.title() + 'OnRequest'
        dupExc = getattr(ewords, 'Duplicate' + kind.title())
        noSuchExc = getattr(ewords, 'NoSuch' + kind.title())

        # Creating should succeed
        d = wFD(create(name))
        yield d
        p = d.getResult()
        self.assertEquals(p.name, name)

        # Creating the same user again should not
        d = wFD(create(name))
        yield d
        self.assertRaises(dupExc, d.getResult)

        # Getting a non-existent user should succeed if createUserOnRequest is True
        setattr(realm, flag, True)
        d = wFD(get(u"new" + kind.lower()))
        yield d
        p = d.getResult()
        self.assertEquals(p.name, "new" + kind.lower())

        # Getting that user again should return the same object
        d = wFD(get(u"new" + kind.lower()))
        yield d
        newp = d.getResult()
        self.assertIdentical(p, newp)

        # Getting a non-existent user should fail if createUserOnRequest is False
        setattr(realm, flag, False)
        d = wFD(get(u"another" + kind.lower()))
        yield d
        self.assertRaises(noSuchExc, d.getResult)
Пример #45
0
    def _entityCreationTest(self, kind):
        # Kind is "user" or "group"
        realm = service.InMemoryWordsRealm("realmname")

        name = u'test' + kind.lower()
        create = getattr(realm, 'create' + kind.title())
        get = getattr(realm, 'get' + kind.title())
        flag = 'create' + kind.title() + 'OnRequest'
        dupExc = getattr(ewords, 'Duplicate' + kind.title())
        noSuchExc = getattr(ewords, 'NoSuch' + kind.title())

        # Creating should succeed
        d = wFD(create(name))
        yield d
        p = d.getResult()
        self.assertEquals(p.name, name)

        # Creating the same user again should not
        d = wFD(create(name))
        yield d
        self.assertRaises(dupExc, d.getResult)

        # Getting a non-existent user should succeed if createUserOnRequest is True
        setattr(realm, flag, True)
        d = wFD(get(u"new" + kind.lower()))
        yield d
        p = d.getResult()
        self.assertEquals(p.name, "new" + kind.lower())

        # Getting that user again should return the same object
        d = wFD(get(u"new" + kind.lower()))
        yield d
        newp = d.getResult()
        self.assertIdentical(p, newp)

        # Getting a non-existent user should fail if createUserOnRequest is False
        setattr(realm, flag, False)
        d = wFD(get(u"another" + kind.lower()))
        yield d
        self.assertRaises(noSuchExc, d.getResult)
Пример #46
0
    def testGetUserMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        user.transport.clear()
        user.write('MODE useruser\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'realmname')
        self.assertEquals(response[0][1], '221')
        self.assertEquals(response[0][2], ['useruser', '+'])
Пример #47
0
    def testGetUserMode(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        user.transport.clear()
        user.write('MODE useruser\r\n')

        response = self._response(user)
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], 'realmname')
        self.assertEquals(response[0][1], '221')
        self.assertEquals(response[0][2], ['useruser', '+'])
Пример #48
0
    def test_joinTopicless(self):
        """
        When a user joins a group without a topic, no topic information is
        sent to that user.
        """
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        somechannel = wFD(self.realm.createGroup(u"somechannel"))
        yield somechannel
        somechannel = somechannel.getResult()

        # Bring in one user, make sure he gets into the channel sanely
        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser")
        user.transport.clear()
        user.write('JOIN #somechannel\r\n')

        response = self._response(user)
        responseCodes = [r[1] for r in response]
        self.assertNotIn('332', responseCodes)
        self.assertNotIn('333', responseCodes)
Пример #49
0
    def test_joinTopicless(self):
        """
        When a user joins a group without a topic, no topic information is
        sent to that user.
        """
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        somechannel = wFD(self.realm.createGroup(u"somechannel"))
        yield somechannel
        somechannel = somechannel.getResult()

        # Bring in one user, make sure he gets into the channel sanely
        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        self._login(user, "firstuser")
        user.transport.clear()
        user.write('JOIN #somechannel\r\n')

        response = self._response(user)
        responseCodes = [r[1] for r in response]
        self.assertNotIn('332', responseCodes)
        self.assertNotIn('333', responseCodes)
Пример #50
0
    def testGetTopic(self):
        user = wFD(self._loggedInUser(u'useruser'))
        yield user
        user = user.getResult()

        group = service.Group("somechannel")
        group.meta["topic"] = "This is a test topic."
        group.meta["topic_author"] = "some_fellow"
        group.meta["topic_date"] = 77777777

        add = wFD(self.realm.addGroup(group))
        yield add
        add.getResult()

        user.transport.clear()
        user.write("JOIN #somechannel\r\n")

        response = self._response(user)

        self.assertEquals(response[3][0], 'realmname')
        self.assertEquals(response[3][1], '332')

        # XXX Sigh.  irc.parsemsg() is not as correct as one might hope.
        self.assertEquals(response[3][2], ['useruser', '#somechannel', 'This is a test topic.'])
        self.assertEquals(response[4][1], '333')
        self.assertEquals(response[4][2], ['useruser', '#somechannel', 'some_fellow', '77777777'])

        user.transport.clear()

        user.write('TOPIC #somechannel\r\n')

        response = self._response(user)

        self.assertEquals(response[0][1], '332')
        self.assertEquals(response[0][2], ['useruser', '#somechannel', 'This is a test topic.'])
        self.assertEquals(response[1][1], '333')
        self.assertEquals(response[1][2], ['useruser', '#somechannel', 'some_fellow', '77777777'])
Пример #51
0
    def testUserRetrieval(self):
        realm = service.InMemoryWordsRealm("realmname")

        # Make a user to play around with
        d = wFD(realm.createUser(u"testuser"))
        yield d
        user = d.getResult()

        # Make sure getting the user returns the same object
        d = wFD(realm.getUser(u"testuser"))
        yield d
        retrieved = d.getResult()
        self.assertIdentical(user, retrieved)

        # Make sure looking up the user also returns the same object
        d = wFD(realm.lookupUser(u"testuser"))
        yield d
        lookedUp = d.getResult()
        self.assertIdentical(retrieved, lookedUp)

        # Make sure looking up a user who does not exist fails
        d = wFD(realm.lookupUser(u"nosuchuser"))
        yield d
        self.assertRaises(ewords.NoSuchUser, d.getResult)
Пример #52
0
    def testUserRetrieval(self):
        realm = service.InMemoryWordsRealm("realmname")

        # Make a user to play around with
        d = wFD(realm.createUser(u"testuser"))
        yield d
        user = d.getResult()

        # Make sure getting the user returns the same object
        d = wFD(realm.getUser(u"testuser"))
        yield d
        retrieved = d.getResult()
        self.assertIdentical(user, retrieved)

        # Make sure looking up the user also returns the same object
        d = wFD(realm.lookupUser(u"testuser"))
        yield d
        lookedUp = d.getResult()
        self.assertIdentical(retrieved, lookedUp)

        # Make sure looking up a user who does not exist fails
        d = wFD(realm.lookupUser(u"nosuchuser"))
        yield d
        self.assertRaises(ewords.NoSuchUser, d.getResult)
Пример #53
0
    def test_nickServLogin(self):
        """
        Sending NICK without PASS will prompt the user for their password.
        When the user sends their password to NickServ, it will respond with a
        Greeting.
        """
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        user.write('NICK firstuser extrainfo\r\n')
        response = self._response(user, 'PRIVMSG')
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], service.NICKSERV)
        self.assertEquals(response[0][1], 'PRIVMSG')
        self.assertEquals(response[0][2], ['firstuser', 'Password?'])
        user.transport.clear()

        user.write('PRIVMSG nickserv firstuser_password\r\n')
        self._assertGreeting(user)
Пример #54
0
    def test_nickServLogin(self):
        """
        Sending NICK without PASS will prompt the user for their password.
        When the user sends their password to NickServ, it will respond with a
        Greeting.
        """
        firstuser = wFD(self.realm.lookupUser(u'firstuser'))
        yield firstuser
        firstuser = firstuser.getResult()

        user = TestCaseUserAgg(firstuser, self.realm, self.factory)
        user.write('NICK firstuser extrainfo\r\n')
        response = self._response(user, 'PRIVMSG')
        self.assertEquals(len(response), 1)
        self.assertEquals(response[0][0], service.NICKSERV)
        self.assertEquals(response[0][1], 'PRIVMSG')
        self.assertEquals(response[0][2], ['firstuser', 'Password?'])
        user.transport.clear()

        user.write('PRIVMSG nickserv firstuser_password\r\n')
        self._assertGreeting(user)
Пример #55
0
 def testPASSLogin(self):
     user = wFD(self._loggedInUser(u'firstuser'))
     yield user
     user = user.getResult()
     self._assertGreeting(user)
Пример #56
0
 def testPASSLogin(self):
     user = wFD(self._loggedInUser(u'firstuser'))
     yield user
     user = user.getResult()
     self._assertGreeting(user)