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")
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.")
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.")
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")
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)
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.")
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)
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)
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)
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)
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"