aboutsummaryrefslogtreecommitdiffstats
path: root/tests (follow)
Commit message (Collapse)AuthorAgeLines
* Incidents: relay incidents as embeds rather than raw contentGravatar kwzrd2020-07-01-21/+11
| | | | | | | | | This applies the previously defined `make_embed` function. As the `archive` function is now simpler, I decided to reduce the amount of whitespace ~ it's a lot more compact now. Tests are adjusted as appropriate.
* Incidents: implement `make_embed` helper & testsGravatar kwzrd2020-07-01-0/+26
| | | | | | | See `make_embed` docstring for further information. The tests are fairly loose and should be easily adjustable in the future should changes be made.
* Incidents: pass `actioned_by` to `archive`Gravatar kwzrd2020-06-30-3/+5
| | | | This is an important piece of information that shall be relayed.
* Incidents: revert latest 2 commitsGravatar kwzrd2020-06-30-46/+6
| | | | | | | | | | Decision was made to use embeds to archive incidents instead of webhooking the raw message. As such, we're reverting the branch to a state from which the adjustments will be easier to make. Reverted commits: * a8d179d9b04f54b20c5e870bcfa85c78c42c8dca * 6fa8caed037b247a7c194f58a4635de7dae21fd2
* Incidents: append `actioned_by` to webhook usernameGravatar kwzrd2020-06-21-6/+17
| | | | | | | Incident author and the moderator who actioned report are now passed through `make_username` to create the webhook username. Tests adjusted as appropriate.
* Incidents: implement `make_username` helperGravatar kwzrd2020-06-21-0/+29
| | | | | | | | | | | | | | | The justification is to incorporate the `actioned_by` name into the username in some way, and so the logical thing to do is to abstract this process into a helper so that it can easily be adjusted in the future. For now, I've chosen to separate the names by a pipe. Discord webhook username cannot exceed 80 characters in length, and so we cap it at this length by default. This is seen as more of an edge-case, but it should be accounted for, as we're not joining two names. The `max_length` param is configurable primarily for testing purposes, it probably should never be passed explicitly. This commit also provides two tests for the function.
* Incidents tests: assert webhook username is de-clydedGravatar kwzrd2020-06-20-0/+19
| | | | See: a8b4e394d9da57287cd9497cd9bb0a97fa467e84
* Merge branch 'origin/master' into kwzrd/incidentsGravatar kwzrd2020-06-20-9/+50
|\ | | | | | | Adds the `sub_clyde` function, which we'll apply to our webhook.
| * Merge branch 'master' into bug/mod/bot-2a/webhook-clydeGravatar kwzrd2020-06-20-10/+26
| |\
| | * Merge branch 'master' into bug/filters/bot-58/removers-ignore-dmsGravatar Dennis Pham2020-06-19-1/+3
| | |\
| | * | Token remover: exit early if message already deletedGravatar MarkKoz2020-06-15-1/+14
| | | |
| | * | Token remover: move bot check to on_messageGravatar MarkKoz2020-06-15-16/+7
| | | | | | | | | | | | | | | | | | | | It just makes more sense to me to filter out messages at an earlier stage.
| | * | Token remover: ignore DMsGravatar MarkKoz2020-06-15-0/+10
| | | | | | | | | | | | | | | | | | | | It's a private channel so there's no risk of a token "leaking". Furthermore, messages cannot be deleted in DMs.
| * | | Write unit test for `sub_clyde`Gravatar kwzrd2020-06-20-0/+27
| |/ /
* | | Incidents tests: remove unnecessary patchGravatar kwzrd2020-06-20-1/+0
| | | | | | | | | | | | This is already being patched at class-level.
* | | Incidents: try-except Signal creationGravatar kwzrd2020-06-20-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Suggested by Mark during review. This follows the "ask for forgiveness rather than permission" paradigm, ends up being less code to read, and may be seen as more logical / safer. The `ALLOWED_EMOJI` set was renamed to `ALL_SIGNALS` as this now better communicates the set's purpose. Tests adjusted as appropriate. Co-authored-by: MarkKoz <[email protected]>
* | | Incidents tests: write tests for `on_raw_reaction_add`Gravatar kwzrd2020-06-19-0/+128
| | |
* | | Incidents tests: write tests for `crawl_incidents`Gravatar kwzrd2020-06-19-0/+58
| | |
* | | Incidents tests: add helper for mocking async for-loopsGravatar kwzrd2020-06-19-0/+37
| | | | | | | | | | | | | | | | | | See the docstring. This does not make the ambition to be powerful enough to be included in `tests.helpers`, and is only intended for local purposes.
* | | Merge branch 'origin/master' into kwzrd/incidentsGravatar kwzrd2020-06-19-107/+302
|\ \ \ | | |/ | |/|
| * | Merge branch 'master' into help_channel_rediscacheGravatar Kieran Siek2020-06-16-167/+361
| |\|
| | * Merge pull request #937 from python-discord/bug/filters/928/non-ascii-tokenGravatar Mark2020-06-12-102/+285
| | |\ | | | | | | | | Make token detection more robust and completely rewrite its tests
| | | * Merge remote-tracking branch 'origin/master' into ↵Gravatar MarkKoz2020-06-02-40/+645
| | | |\ | | | | | | | | | | | | | | | bug/filters/928/non-ascii-token
| | | * | Token remover: remove the `delete_message` functionGravatar MarkKoz2020-06-02-12/+7
| | | | | | | | | | | | | | | | | | | | | | | | | It's redundant; there's no benefit here in abstracting two lines of code into a function.
| | | * | Test find_token_in_message returns None for invalid matchesGravatar MarkKoz2020-05-28-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | This covers the case when a token is matched, but its user ID and timestamp turn out to be invalid.
| | | * | Adjust find_token_in_message tests for the recent cog changesGravatar MarkKoz2020-05-28-19/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It now supports the changes that switched to finditer, added match groups, and added the Token NamedTuple. It also accounts for the is_maybe_token function being removed. For the sake of simplicity, call assertions on is_valid_user_id and is_valid_timestamp were not made.
| | | * | Remove is_maybe_token testsGravatar MarkKoz2020-05-28-33/+0
| | | | | | | | | | | | | | | | | | | | | | | | | The function was removed due to redundancy. Therefore, its tests are obsolete.
| | | * | Add more thorough and realistic inputs for token ID and timestamp testsGravatar MarkKoz2020-05-27-18/+52
| | | | | | | | | | | | | | | | | | | | | | | | | The tests for valid inputs and invalid inputs were split to make them more readable.
| | | * | Adjust token remover tests to use the Token NamedTupleGravatar MarkKoz2020-05-27-6/+8
| | | | |
| | | * | Switch findall to finditer in assertionsGravatar MarkKoz2020-05-27-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | `find_token_in_message` now uses the latter so the tests should adjust accordingly.
| | | * | Use real token values for testing multiple matches in regexGravatar MarkKoz2020-05-25-3/+4
| | | | |
| | | * | Fix multiple match text for token regexGravatar MarkKoz2020-05-25-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It has to account for the addition of groups. It's easiest to compare the entire string so `finditer` is used to return re.Match objects; the tuples of `findall` would be cumbersome. Also threw in a change to use `assertCountEqual` cause the order doesn't really matter.
| | | * | Fix valid token regex testGravatar MarkKoz2020-05-25-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was broken due to the addition of groups. Rather than returning the full match, `findall` returns groups if any exist. The test was comparing a tuple of groups to the token string, which was of course failing. Now `fullmatch` is used cause it's simpler - just check for `None` and don't worry about iterating matches to search.
| | | * | Add more valid tokens to test the regex withGravatar MarkKoz2020-05-25-3/+5
| | | | |
| | | * | Test token regex won't match non-base64 charactersGravatar MarkKoz2020-05-25-4/+3
| | | | |
| | | * | Fix a test needlessly being a coroutineGravatar MarkKoz2020-05-13-1/+1
| | | | |
| | | * | Use subtests for valid ID/timestamp tests and test non-ASCII inputsGravatar MarkKoz2020-05-11-18/+25
| | | | |
| | | * | Clean up token remover test importsGravatar MarkKoz2020-05-11-16/+12
| | | | |
| | | * | Replace deprecated assertion methodsGravatar MarkKoz2020-05-11-2/+2
| | | | |
| | | * | Refactor `TokenRemoverSetupTests` and add a more thorough testGravatar MarkKoz2020-05-11-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | The test now ensures the cog is instantiated and that the instance is passed as an argument to `add_cog`.
| | | * | Test TokenRemover.take_actionGravatar MarkKoz2020-05-11-43/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove `bot.get_cog` mocks in `setUp` * Mock the logger cause it's easier to assert logs * Remove subtests * Assert helper functions were called * Create an autospec for ModLog
| | | * | Test TokenRemover.format_log_messageGravatar MarkKoz2020-05-11-0/+16
| | | | |
| | | * | Test token remover's message deletionGravatar MarkKoz2020-05-11-0/+9
| | | | |
| | | * | Simplify token remover's message mockGravatar MarkKoz2020-05-11-9/+3
| | | | | | | | | | | | | | | | | | | | | | | | | * Rely on default values for the author * Set the content to a non-empty string
| | | * | Avoid instantiating the cog when testing static/class methodsGravatar MarkKoz2020-05-11-10/+5
| | | | |
| | | * | Correct the return type annotation for the autospec decoratorGravatar MarkKoz2020-05-11-2/+2
| | | | |
| | | * | Test token regex matches valid tokensGravatar MarkKoz2020-05-11-0/+21
| | | | |
| | | * | Test is_maybe_tokenGravatar MarkKoz2020-05-11-7/+24
| | | | |
| | | * | Test `is_maybe_token` returns False for missing partsGravatar MarkKoz2020-05-11-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In practice, this won't ever happen since the regex wouldn't match strings with missing parts. However, the function does check it so may as well test it. It's not necessarily bound to always use inputs from the regex either I suppose.
| | | * | Fix autospec decorator when used with multiple attributesGravatar MarkKoz2020-05-11-16/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original approach of messing with the `attribute_name` didn't work for reasons I won't discuss here (would require knowledge of patcher internals). The new approach doesn't use patch.multiple but mimics it by applying multiple patch decorators to the function. As a consequence, this can no longer be used as a context manager.