Ejemplo n.º 1
0
    def test_handle_player_connect_allows_connect_with_right_privacy_settings(
            self):
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")
        self.setup_balance_playerprivacy([(connecting_player, "public")])

        result = self.qlstats_response()
        when(result).json().thenReturn({
            "playerinfo": {
                str(connecting_player.steam_id): {
                    "privacy": "public"
                }
            }
        })

        self.setup_qlstats_response(result)

        returned = self.plugin.handle_player_connect(connecting_player)

        assert_that(returned, is_(minqlx.RET_NONE))
Ejemplo n.º 2
0
    def test_handle_player_connect_disallows_connect_with_wrong_privacy_settings(
            self):
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")

        result = self.qlstats_response()
        when(result).json().thenReturn({
            "playerinfo": {
                str(connecting_player.steam_id): {
                    "privacy": "private"
                }
            }
        })

        self.setup_qlstats_response(result)

        returned = self.plugin.handle_player_connect(connecting_player)

        assert_that(
            returned,
            is_("Error: Open qlstats.net, click Login/Sign-up, set privacy settings to "
                "public, anonymous, click save and reconnect!"))
    def setUp(self):
        setup_plugin()

        setup_cvars({
            "qlx_owner": "1234567890",
            "qlx_discordBotToken": "bottoken",
            "qlx_discordRelayChannelIds": "1234",
            "qlx_discordTriggeredChannelIds": "456, 789",
            "qlx_discordUpdateTopicOnTriggeredChannels": "1",
            "qlx_discordKeepTopicSuffixChannelIds": "1234, 456",
            "qlx_discordKeptTopicSuffixes": "{1234: '', 456: ''}",
            "qlx_discordUpdateTopicInterval": "305",
            "qlx_discordTriggerTriggeredChannelChat": "trigger",
            "qlx_discordCommandPrefix": "%",
            "qlx_discordTriggerStatus": "minqlx",
            "qlx_discordMessagePrefix": "[DISCORD]",
            "qlx_discordEnableHelp": "1",
            "qlx_discordEnableVersion": "1",
            "qlx_displayChannelForDiscordRelayChannels": "0",
            "qlx_discordReplaceMentionsForRelayedMessages": "0",
            "qlx_discordReplaceMentionsForTriggeredMessages": "1",
            "qlx_discordAdminPassword": "******",
            "qlx_discordAuthCommand": "auth",
            "qlx_discordExecPrefix": "exec",
            "qlx_discordLogToSeparateLogfile": "0",
            "qlx_discordTriggeredChatMessagePrefix": "",
            "qlx_discordRelayTeamchatChannelIds": "242",
            "qlx_discord_extensions": ""
        })

        self.logger = mock(spec=logging.Logger, strict=False)
        self.discord = SimpleAsyncDiscord("version information", self.logger)

        self.setup_discord_library()
    def test_handle_client_command_allows_readyup_when_configured_with_too_few_players(
            self):
        setup_cvars({
            "zmq_stats_enable": "1",
            "qlx_autoready_min_players": "10",
            "qlx_autoready_autostart_delay": "180",
            "qlx_autoready_min_seconds": "30",
            "qlx_autoready_timer_visible": "60",
            "qlx_autoready_disable_manual_readyup": "1"
        })

        self.plugin = autoready.autoready()

        player = fake_player(1, "Readying Player", team="red")
        connected_players(player, fake_player(2, "Other Player", team="blue"),
                          fake_player(3, "Other Player", team="red"),
                          fake_player(4, "Other Player", team="blue"),
                          fake_player(5, "Other Player", team="red"),
                          fake_player(6, "Other Player", team="blue"),
                          fake_player(7, "Other Player", team="red"),
                          fake_player(8, "Other Player", team="blue"))

        return_val = self.plugin.handle_client_command(player, "readyup")

        assert_that(return_val, is_(True))
Ejemplo n.º 5
0
    def test_handle_player_connect_logs_error_if_privacy_information_not_included(
            self):
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")

        result = self.qlstats_response()
        when(result).json().thenReturn(
            {"playerinfo": {
                str(connecting_player.steam_id): {}
            }})

        self.setup_qlstats_response(result)

        self.plugin.handle_player_connect(connecting_player)

        verify(minqlx).console_command(
            matches(".*QLStatsPrivacyError.*Response.*"
                    "did not include.*privacy information.*"))
Ejemplo n.º 6
0
 def setUp(self):
     setup_plugin()
     setup_cvars({
         "qlx_balanceUseLocal": "0",
     })
     setup_game_in_progress()
     connected_players()
     self.plugin = balance()
 def setUp(self):
     setup_plugin()
     setup_game_in_warmup("ca")
     connected_players()
     self.discord = mock(spec=SimpleAsyncDiscord, strict=False)
     setup_cvars({
         "qlx_discordQuakeRelayMessageFilters": r"^\!s$, ^\!p$"
     })
     self.plugin = mydiscordbot(discord_client=self.discord)
Ejemplo n.º 8
0
    def setUp(self):
        setup_cvars({"qlx_fastvoteParticipationPercentage": "0.67"})
        self.strategy = ParticipationFastVoteStrategy()

        connected_players(fake_player(123, "Player1"),
                          fake_player(456, "Player2"),
                          fake_player(789, "Player3"),
                          fake_player(321, "Player4"),
                          fake_player(654, "Player5"),
                          fake_player(987, "Player6"))
Ejemplo n.º 9
0
 def setUp(self):
     setup_plugin()
     setup_cvars({
         "qlx_rebalanceScoreDiffThreshold": "3",
         "qlx_rebalanceWinningStreakThreshold": "3",
         "qlx_rebalanceNumAnnouncements": "2"
     })
     setup_game_in_progress()
     connected_players()
     self.plugin = auto_rebalance()
Ejemplo n.º 10
0
 def setUp(self):
     setup_plugin()
     setup_cvars({
         "qlx_qlstatsPrivacyKick": "0",
         "qlx_qlstatsPrivacyBlock": "0",
         "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
         "qlx_qlstatsPrivacyJoinAttempts": "5"
     })
     setup_game_in_progress()
     self.setup_balance_playerprivacy([])
     self.plugin = qlstats_privacy_policy()
    def setUp(self):
        setup_plugin()

        setup_cvars({
            "qlx_modeVoteNewMapDefault": "vql",
        })
        spy2(Plugin.callvote)
        spy2(minqlx.console_command)
        spy2(minqlx.client_command)

        self.plugin = custom_modes_vote()
Ejemplo n.º 12
0
    def setUp(self):
        setup_plugin()
        setup_cvars({
            "qlx_fastvoteTypes": "map",
            "qlx_fastvoteStrategy": "threshold",
            "qlx_fastvoteThresholdFastPassDiff": "6",
            "qlx_fastvoteThresholdFastFailDiff": "5",
            "qlx_fastvoteParticipationPercentage": "0.67"
        })
        spy2(Plugin.force_vote)
        spy2(Plugin.current_vote_count)

        self.plugin = fastvotes()
Ejemplo n.º 13
0
    def setUp(self):
        setup_plugin()
        setup_cvars({"qlx_fragstats_toplimit": "10"})
        setup_game_in_progress()

        self.plugin = frag_stats()
        self.reply_channel = mocked_channel()

        self.plugin.database = Redis
        self.db = mock(StrictRedis)
        self.plugin._db_instance = self.db  # pylint: disable=protected-access

        when(self.db).zincrby(any_, any_, any_).thenReturn(None)
        when(self.db).zincrby(any_, any_, any_).thenReturn(None)
        when(self.db).set(any_, any_).thenReturn(None)
Ejemplo n.º 14
0
    def test_handle_player_connect_postpones_connect_if_there_is_no_result(
            self):
        self.setup_qlstats_response(None)
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")

        result = self.plugin.handle_player_connect(connecting_player)

        assert_that(result, is_("Fetching your qlstats settings..."))
Ejemplo n.º 15
0
    def test_handle_player_connect_dispatches_fetching_of_privacy_settings_from_qlstats(
            self):
        self.setup_qlstats_response(None)
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")

        self.plugin.handle_player_connect(connecting_player)

        verify(requests).get(
            f"http://qlstats.net/belo/{connecting_player.steam_id}")
Ejemplo n.º 16
0
    def test_handle_player_connect_logs_error_if_result_status_not_ok(self):
        result = self.qlstats_response(status_code=500)

        self.setup_qlstats_response(result)
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")

        self.plugin.handle_player_connect(connecting_player)

        verify(minqlx).console_command(
            matches(".*QLStatsPrivacyError.*Invalid response code.*"))
Ejemplo n.º 17
0
    def test_handle_player_connect_fetches_elos_from_qlstats_connect_thread_still_alive(
            self):
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")

        connect_thread = mock(ConnectThread)
        when(connect_thread).is_alive().thenReturn(True)
        self.plugin.connectthreads[connecting_player.steam_id] = connect_thread

        result = self.plugin.handle_player_connect(connecting_player)

        assert_that(result, is_("Fetching your qlstats settings..."))
Ejemplo n.º 18
0
    def test_handle_player_connect_logs_error_if_playerinfo_not_included(self):
        result = self.qlstats_response()
        when(result).json().thenReturn({})

        self.setup_qlstats_response(result)
        setup_cvars({
            "qlx_qlstatsPrivacyKick": "0",
            "qlx_qlstatsPrivacyBlock": "1",
            "qlx_qlstatsPrivacyWhitelist": "public, anonymous",
            "qlx_qlstatsPrivacyJoinAttempts": "5",
            "qlx_balanceApi": "belo"
        })

        connecting_player = fake_player(123, "Connecting Player")

        self.plugin.handle_player_connect(connecting_player)

        verify(minqlx).console_command(
            matches(".*QLStatsPrivacyError.*Invalid response content.*"))
Ejemplo n.º 19
0
    def setUp(self):
        setup_plugin()
        setup_cvars({
            "zmq_stats_enable": "1",
            "qlx_autoready_min_players": "10",
            "qlx_autoready_autostart_delay": "180",
            "qlx_autoready_min_seconds": "30",
            "qlx_autoready_timer_visible": "60",
            "qlx_autoready_disable_manual_readyup": "0"
        })

        self.mapname = "campgrounds"
        setup_game_in_warmup(game_type="ca", mapname=self.mapname)
        self.plugin = autoready.autoready()

        self.timer = mock(CountdownThread)
        when(self.timer).start().thenReturn(None)
        when(self.timer).stop().thenReturn(None)
        when(autoready).CountdownThread(
            any_(int), timed_actions=any_(dict)).thenReturn(self.timer)
Ejemplo n.º 20
0
 def setUp(self):
     setup_plugin()
     self.warner = thirtysecwarn()
     setup_cvars({"qlx_thirtySecondWarnAnnouncer": "standard"})