def test_allspam(handle_spam): try: msg = Fake({ "owner": { "name": "El'endia Starman", "id": 1, "is_moderator": False }, "room": { "id": 11540, "name": "Charcoal HQ", "_client": { "host": "stackexchange.com" } }, "_client": { "host": "stackexchange.com" }, "id": 1337 }) assert chatcommands.allspam( "test", original_msg=msg) == "That doesn't look like a valid user URL." # If this code lasts long enough to fail, I'll be happy assert chatcommands.allspam("http://stackexchange.com/users/10000000000", original_msg=msg) == \ "The specified user does not appear to exist." assert chatcommands.allspam( "http://stackexchange.com/users/5869449", original_msg=msg ) == ( "The specified user has an abnormally high number of accounts. Please consider flagging for moderator " "attention, otherwise use !!/report on the user's posts individually." ) assert chatcommands.allspam( "http://stackexchange.com/users/11683", original_msg=msg ) == ( "The specified user's reputation is abnormally high. Please consider flagging for moderator attention, " "otherwise use !!/report on the posts individually.") assert chatcommands.allspam( "http://stackoverflow.com/users/22656", original_msg=msg ) == ( "The specified user's reputation is abnormally high. Please consider flagging for moderator attention, " "otherwise use !!/report on the posts individually.") assert chatcommands.allspam("http://stackexchange.com/users/12108751", original_msg=msg) == \ "The specified user hasn't posted anything." assert chatcommands.allspam("http://stackoverflow.com/users/8846458", original_msg=msg) == \ "The specified user has no posts on this site." # This test is for users with <100rep but >15 posts # If this breaks in the future because the below user eventually gets 100 rep (highly unlikely), use the following # data.SE query to find a new target. Alternatively, get a sock to post 16 answers in the sandbox. # https://stackoverflow.com/users/7052649/vibin (look for low rep but >1rep users, 1rep users are usually suspended) assert chatcommands.allspam( "http://stackoverflow.com/users/7052649", original_msg=msg ) == ( "The specified user has an abnormally high number of spam posts. Please consider flagging for moderator " "attention, otherwise use !!/report on the posts individually.") # Valid user for allspam command assert chatcommands.allspam("http://stackexchange.com/users/12108974", original_msg=msg) is None assert handle_spam.call_count == 1 _, call = handle_spam.call_args_list[0] assert isinstance(call["post"], Post) assert call["reasons"] == ["Manually reported answer"] assert call[ "why"] == "User manually reported by *El'endia Starman* in room *Charcoal HQ*.\n" handle_spam.reset_mock() assert chatcommands.allspam( "http://meta.stackexchange.com/users/373807", original_msg=msg) is None assert handle_spam.call_count == 1 _, call = handle_spam.call_args_list[0] assert isinstance(call["post"], Post) assert call["reasons"] == ["Manually reported answer"] assert call[ "why"] == "User manually reported by *El'endia Starman* in room *Charcoal HQ*.\n" finally: GlobalVars.blacklisted_users.clear()
def test_allspam(handle_spam): try: msg = Fake({ "owner": { "name": "ArtOfCode", "id": 121520, "is_moderator": False }, "room": { "id": 11540, "name": "Charcoal HQ", "_client": { "host": "stackexchange.com" } }, "_client": { "host": "stackexchange.com" }, "id": 1337 }) assert chatcommands.allspam("test", original_msg=msg) == "That doesn't look like a valid user URL." # If this code lasts long enough to fail, I'll be happy assert chatcommands.allspam("http://stackexchange.com/users/10000000000", original_msg=msg) == \ "The specified user does not appear to exist." assert chatcommands.allspam("http://stackexchange.com/users/5869449", original_msg=msg) == ( "The specified user has an abnormally high number of accounts. Please consider flagging for moderator " "attention, otherwise use !!/report on the user's posts individually." ) assert chatcommands.allspam("http://stackexchange.com/users/11683", original_msg=msg) == ( "The specified user's reputation is abnormally high. Please consider flagging for moderator attention, " "otherwise use !!/report on the posts individually." ) assert chatcommands.allspam("http://stackoverflow.com/users/22656", original_msg=msg) == ( "The specified user's reputation is abnormally high. Please consider flagging for moderator attention, " "otherwise use !!/report on the posts individually." ) assert chatcommands.allspam("http://stackexchange.com/users/12108751", original_msg=msg) == \ "The specified user hasn't posted anything." assert chatcommands.allspam("http://stackoverflow.com/users/8846458", original_msg=msg) == \ "The specified user has no posts on this site." # This test is for users with <100rep but >15 posts # If this breaks in the future because the below user eventually gets 100 rep (highly unlikely), use the following # data.SE query to find a new target. Alternatively, get a sock to post 16 answers in the sandbox. # https://stackoverflow.com/users/7052649/vibin (look for low rep but >1rep users, 1rep users are usually suspended) assert chatcommands.allspam("http://stackoverflow.com/users/7052649", original_msg=msg) == ( "The specified user has an abnormally high number of spam posts. Please consider flagging for moderator " "attention, otherwise use !!/report on the posts individually." ) # Valid user for allspam command assert chatcommands.allspam("http://stackexchange.com/users/12108974", original_msg=msg) is None assert handle_spam.call_count == 1 _, call = handle_spam.call_args_list[0] assert isinstance(call["post"], Post) assert call["reasons"] == ["Manually reported answer"] assert call["why"] == "User manually reported by *ArtOfCode* in room *Charcoal HQ*.\n" handle_spam.reset_mock() assert chatcommands.allspam("http://meta.stackexchange.com/users/373807", original_msg=msg) is None assert handle_spam.call_count == 1 _, call = handle_spam.call_args_list[0] assert isinstance(call["post"], Post) assert call["reasons"] == ["Manually reported answer"] assert call["why"] == "User manually reported by *ArtOfCode* in room *Charcoal HQ*.\n" finally: GlobalVars.blacklisted_users.clear()