Ejemplo n.º 1
0
 def test_error_dismarer_is_dead(self):
     """ Attacker is a dead """
     attacker = self.p2b
     params = ["p1a"]
     with self.assertRaises(MeError) as e:
         Disarm.handler(attacker, params)
     self.assertEqual(e.exception.message, "You are DEAD")
Ejemplo n.º 2
0
 def test_error_dismarer_is_dead(self):
     """ Attacker is a dead """
     attacker = self.p2b
     params = ["p1a"]
     with self.assertRaises(MeError) as e:
         Disarm.handler(attacker, params)
     self.assertEqual(e.exception.message, "You are DEAD")
Ejemplo n.º 3
0
 def test_error_target_wrong_team(self):
     """ Target on the wrong team """ 
     attacker = self.p2a
     params = ["p3a"]
     with self.assertRaises(TeamError) as e:
         Disarm.handler(attacker, params)
     self.assertEqual(e.exception.message, "Invalid Team. You cannot do that action to someone on that team.")
Ejemplo n.º 4
0
 def test_error_target_wrong_team(self):
     """ Target on the wrong team """
     attacker = self.p2a
     params = ["p3a"]
     with self.assertRaises(TeamError) as e:
         Disarm.handler(attacker, params)
     self.assertEqual(
         e.exception.message,
         "Invalid Team. You cannot do that action to someone on that team.")
Ejemplo n.º 5
0
 def test_error_target_is_dead(self):
     """ Target is already dead """
     attacker = self.p2a
     params = ["p1a"]
     target = self.p1a
     target.state = "DEAD"
     target.put()
     with self.assertRaises(TargetError) as e:
         Disarm.handler(attacker, params)
     self.assertEqual(e.exception.message, "Your target is DEAD")
Ejemplo n.º 6
0
 def test_error_target_is_dead(self):
     """ Target is already dead """
     attacker = self.p2a
     params = ["p1a"]
     target = self.p1a
     target.state = "DEAD"
     target.put()
     with self.assertRaises(TargetError) as e:
         Disarm.handler(attacker, params)
     self.assertEqual(e.exception.message, "Your target is DEAD")
Ejemplo n.º 7
0
    def inner_handler(cls, message):
        """ Return [(number, msg),...]"""
        action, params = CommandHandler.get_command(message.Body)
        attacker = Util.get_attacker(message.From)

        if action == "KILL":
            return Kill.handler(attacker, params)
        elif action[1:] == "REPLY":
            ref = params.pop(0)[:-1]
            return Reply.handler(ref, params, attacker)
        elif action == "BOMB":
            return Bomb.handler(attacker, params)
        elif action == "INVUL":
            return Invul.handler(attacker, params)
        elif action == "DISARM":
            return Disarm.handler(attacker, params)
        elif action == "SNIPE":
            if message.From != WEI_HAN:
                raise CommandError(action)
            sniper = Player.query(Player.codename == params[0]).get()
            if sniper == None:
                raise DbError(params[0])
            return Snipe.handler(sniper, params[1])
        elif action == "?":
            msg = "Guide for SAMSU Assassins:\n"
            msg += "KILL <target codename>\n"
            msg += "BOMB <mm> <dd> <hour> <min> <place>\n"
            msg += "INVUL <target codename> <mm> <dd> <hour> <min>\n"
            msg += "DISARM <target codename>\n"
            msg += "SNIPE - send message and picture to {}\n".format(WEI_HAN)
            msg += "REPLY - [REPLY <number>] Y or [REPLY <number>] N\n"
            msg += "If you receive an UNKNOWN ERROR or don't get a message that you expect, contact Wei Han at 312-731-0539."
            return [(attacker.key.id(), msg)]
        else:
            raise CommandError(action)
Ejemplo n.º 8
0
 def test_good_disarm(self):
     """ Good disarmer with good target """
     attacker = self.p2a
     params = ["p1a"]
     ret = Disarm.handler(attacker, params)
     self.assertEqual(1, len(ret))
     self.assertEqual("+1", ret[0][0])
     self.assertRegexpMatches(ret[0][1], \
             r"\[REPLY \d*\] player2a claimed to have disarm you. Reply Y\/N.")
Ejemplo n.º 9
0
 def test_good_disarm(self):
     """ Good disarmer with good target """
     attacker = self.p2a
     params = ["p1a"]
     ret = Disarm.handler(attacker, params)
     self.assertEqual(1, len(ret))
     self.assertEqual("+1", ret[0][0])
     self.assertRegexpMatches(ret[0][1], \
             r"\[REPLY \d*\] player2a claimed to have disarm you. Reply Y\/N.")
Ejemplo n.º 10
0
 def test_reply_disarm_n(self):
     """ Test disarm reply n """
     ret = Disarm.reply_handler(self.action, "n")
     self.assertEqual(1, len(ret))
     self.assertEqual(ret[0][0], self.action.attacker)
     self.assertEqual(ret[0][1], "Your DISARM target claims he was not "
             "disarmed by you.")
     self.assertEqual(self.p1a.disarm, False)
     self.assertEqual(len(self.taskqueue_stub.get_filtered_tasks(\
             queue_names='disarm')), 0)
Ejemplo n.º 11
0
 def test_reply_disarm_N(self):
     """ Test disarm reply N """
     ret = Disarm.reply_handler(self.action, "N")
     self.assertEqual(1, len(ret))
     self.assertEqual(ret[0][0], self.action.attacker)
     self.assertEqual(
         ret[0][1], "Your DISARM target claims he was not "
         "disarmed by you.")
     self.assertEqual(self.p1a.disarm, False)
     self.assertEqual(len(self.taskqueue_stub.get_filtered_tasks(\
             queue_names='disarm')), 0)
Ejemplo n.º 12
0
    def test_reply_disarm_y(self):
        """ Test disarm reply y """
        later = Util.utc_to_chi(self.action.datetime + timedelta(hours=1))

        ret = Disarm.reply_handler(self.action, "y")
        self.assertEqual(1, len(ret))
        self.assertEqual(ret[0][0], "+1")
        self.assertEqual(ret[0][1], "You have been DISARM until {}".format(\
                later.strftime("%m-%d %I:%M%p")))
        self.assertEqual(self.p1a.disarm, True)
        self.assertEqual(len(self.taskqueue_stub.get_filtered_tasks(\
                queue_names='disarm')), 1)
Ejemplo n.º 13
0
    def test_reply_disarm_y(self):
        """ Test disarm reply y """
        later = Util.utc_to_chi(self.action.datetime + timedelta(hours=1))

        ret = Disarm.reply_handler(self.action, "y")
        self.assertEqual(1, len(ret))
        self.assertEqual(ret[0][0], "+1")
        self.assertEqual(ret[0][1], "You have been DISARM until {}".format(\
                later.strftime("%m-%d %I:%M%p")))
        self.assertEqual(self.p1a.disarm, True)
        self.assertEqual(len(self.taskqueue_stub.get_filtered_tasks(\
                queue_names='disarm')), 1)
Ejemplo n.º 14
0
    def handler(cls, ref, params, From):
        logging.debug("REPLY {}".format(ref))
        lookup = Action.get_by_id(int(ref))
        if not lookup:
            raise ReplyError("ref num", ref)

        response = params[0]
        if response != "Y" and response != "y" and response != "N" and response != "n":
            raise ReplyError(response, ref)

        if lookup.action == "DISARM":
            return Disarm.reply_handler(lookup, response)
        else:
            output_msg = []
            if lookup.action == "KILL":
                output_msg += Kill.reply_handler(lookup, response)
            elif lookup.action == "BOMB":
                output_msg += Bomb.reply_handler(lookup, response, From)
            """ Generate push if necessary """
            output_msg += Team.push(Team.get_by_id(From.team))
            return output_msg
        raise ReplyError(response, ref)
Ejemplo n.º 15
0
def disarm_worker():
    ''' Get disarm id'''
    req_key = request.form.get("id", "")
    disarm = Disarm.get_by_id(int(req_key))

    ''' No disarm found '''
    if not disarm:
        logging.error("DISARM worker: no DISARM found")
        raise Exception()

    '''Disarm deprecated'''
    if disarm.deprecated:
        logging.info("DISARM Worker: Disarm deprecated. No action.")
        return "DISARM Worker: deprecated"

    client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN)
    disarmed_player = Player.get_by_id(disarm.victim)
    disarmed_player.disarm = False
    disarmed_player.put()

    disarm.deprecated = True
    disarm.put()

    logging.info("DISARM Worker: Turning off disarmed state for {}".format(\
            disarm.victim))

    response = "You are no longer DISARMED. Go ahead and kill people."
    msg = Message(From=SERVER_NUMBER,
                  To=disarm.victim,
                  Body=response)
    msg.put()
    client.messages.create(
        to=disarm.victim,
        from_=SERVER_NUMBER,
        body=response)
    return "DISARM WORKER"