diff options
| author | 2018-07-28 20:17:54 +0200 | |
|---|---|---|
| committer | 2018-07-28 20:17:54 +0200 | |
| commit | b4d024dc69e9084184f628daeb48d6601a3996e2 (patch) | |
| tree | 06e5ca6f40dc57b0b90a12b2a20592e1b748ccf9 /tests | |
| parent | Now doing role colorization instead of random colors for the cleanlog template. (diff) | |
| parent | Fix typo in infractions table definition (diff) | |
Merge branch 'master' into clean_command
Diffstat (limited to '')
| -rw-r--r-- | tests/test_api_bot_infractions.py | 134 | ||||
| -rw-r--r-- | tests/test_api_bot_users.py | 6 | 
2 files changed, 137 insertions, 3 deletions
diff --git a/tests/test_api_bot_infractions.py b/tests/test_api_bot_infractions.py new file mode 100644 index 00000000..58453e9b --- /dev/null +++ b/tests/test_api_bot_infractions.py @@ -0,0 +1,134 @@ +import json + +from tests import SiteTest, app + +TEST_USER_ID = "test" + + +class ApiBotInfractionsEndpoint(SiteTest): + +    def test_infraction_create_invalid(self): +        # Invalid infraction type +        post_data_invalid_type = json.dumps( +            {"type": "not_a_type", "reason": "test", "user_id": TEST_USER_ID, "actor_id": TEST_USER_ID} +        ) +        response = self.client.post("/bot/infractions", app.config["API_SUBDOMAIN"], +                                    headers=app.config["TEST_HEADER"], +                                    data=post_data_invalid_type) +        self.assert400(response) + +    def test_infraction_kick(self): +        post_data_valid = json.dumps( +            {"type": "kick", "reason": "test", "user_id": TEST_USER_ID, "actor_id": TEST_USER_ID} +        ) +        response = self.client.post("/bot/infractions", app.config["API_SUBDOMAIN"], +                                    headers=app.config["TEST_HEADER"], +                                    data=post_data_valid) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertTrue("id" in response.json["infraction"]) +        infraction_id = response.json["infraction"]["id"] +        response = self.client.get(f"/bot/infractions/id/{infraction_id}", app.config["API_SUBDOMAIN"], +                                   headers=app.config["TEST_HEADER"]) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertTrue("id" in response.json["infraction"]) +        self.assertEqual(response.json["infraction"]["id"], infraction_id) +        self.assertTrue("active" in response.json["infraction"]) +        self.assertFalse(response.json["infraction"]["active"]) + +    def test_infraction_ban(self): +        post_data_valid = json.dumps( +            {"type": "ban", "reason": "baddie", "user_id": TEST_USER_ID, "actor_id": TEST_USER_ID} +        ) +        response = self.client.post("/bot/infractions", app.config["API_SUBDOMAIN"], +                                    headers=app.config["TEST_HEADER"], +                                    data=post_data_valid) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertTrue("id" in response.json["infraction"]) +        infraction_id = response.json["infraction"]["id"] + +        # Check if the ban is currently applied +        response = self.client.get(f"/bot/infractions/user/{TEST_USER_ID}/ban/current", app.config["API_SUBDOMAIN"], +                                   headers=app.config["TEST_HEADER"]) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertIsNotNone(response.json["infraction"]) +        self.assertTrue("id" in response.json["infraction"]) +        self.assertEqual(response.json["infraction"]["id"], infraction_id) +        self.assertIsNone(response.json["infraction"]["expires_at"]) +        self.assertTrue(response.json["infraction"]["active"]) + +        # Update the expiration to 1d +        patch_data_valid = json.dumps( +            {"id": infraction_id, "duration": "1d"} +        ) +        response = self.client.patch("/bot/infractions", app.config["API_SUBDOMAIN"], +                                     headers=app.config["TEST_HEADER"], +                                     data=patch_data_valid) +        self.assert200(response) +        self.assertTrue("success" in response.json) +        self.assertTrue("infraction" in response.json) +        self.assertTrue(response.json["success"]) +        self.assertIsNotNone(response.json["infraction"]["expires_at"]) +        self.assertTrue(response.json["infraction"]["active"]) + +        # Disable the ban +        patch_data_valid = json.dumps( +            {"id": infraction_id, "active": False} +        ) +        response = self.client.patch("/bot/infractions", app.config["API_SUBDOMAIN"], +                                     headers=app.config["TEST_HEADER"], +                                     data=patch_data_valid) +        self.assert200(response) +        self.assertTrue("success" in response.json) +        self.assertTrue("infraction" in response.json) +        self.assertTrue(response.json["success"]) +        self.assertFalse(response.json["infraction"]["active"]) + +        # Check if there is no active ban anymore +        response = self.client.get(f"/bot/infractions/user/{TEST_USER_ID}/ban/current", app.config["API_SUBDOMAIN"], +                                   headers=app.config["TEST_HEADER"]) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertIsNone(response.json["infraction"]) + +        # Re-activate the ban +        patch_data_valid = json.dumps( +            {"id": infraction_id, "active": True} +        ) +        response = self.client.patch("/bot/infractions", app.config["API_SUBDOMAIN"], +                                     headers=app.config["TEST_HEADER"], +                                     data=patch_data_valid) +        self.assert200(response) +        self.assertTrue("success" in response.json) +        self.assertTrue("infraction" in response.json) +        self.assertTrue(response.json["success"]) +        self.assertTrue(response.json["infraction"]["active"]) + +        # Create a new ban +        post_data_valid = json.dumps( +            {"type": "ban", "reason": "baddie v2.0", "user_id": TEST_USER_ID, "actor_id": TEST_USER_ID} +        ) +        response = self.client.post("/bot/infractions", app.config["API_SUBDOMAIN"], +                                    headers=app.config["TEST_HEADER"], +                                    data=post_data_valid) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertTrue("id" in response.json["infraction"]) +        new_infraction_id = response.json["infraction"]["id"] + +        # Check if the old ban is now disabled +        response = self.client.get(f"/bot/infractions/id/{infraction_id}", app.config["API_SUBDOMAIN"], +                                   headers=app.config["TEST_HEADER"]) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertFalse(response.json["infraction"]["active"]) + +        # Check if the current ban infraction is the new infraction +        response = self.client.get(f"/bot/infractions/user/{TEST_USER_ID}/ban/current", app.config["API_SUBDOMAIN"], +                                   headers=app.config["TEST_HEADER"]) +        self.assert200(response) +        self.assertTrue("infraction" in response.json) +        self.assertEqual(response.json["infraction"]["id"], new_infraction_id) diff --git a/tests/test_api_bot_users.py b/tests/test_api_bot_users.py index 9ad46071..eda3713e 100644 --- a/tests/test_api_bot_users.py +++ b/tests/test_api_bot_users.py @@ -1,7 +1,7 @@ -import os  import json  from tests import SiteTest, app +  class ApiBotUsersEndpoint(SiteTest):      def test_api_user(self):          """ Check insert user """ @@ -12,8 +12,8 @@ class ApiBotUsersEndpoint(SiteTest):              {'user_id': "1234", 'roles': ["5678"], "username": "test", "discriminator": "0000", "avatar": "http://some/url"}          ]) -        response = self.client.get('/bot/users', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']) -        self.assertEqual(response.status_code, 405) +        response = self.client.get('/bot/users?user_id=1234', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']) +        self.assertTrue("data" in response.json)          response = self.client.post('/bot/users', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER'], data=single_data)          self.assertTrue("success" in response.json)  |