aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGravatar Leon Sandøy <[email protected]>2018-07-28 20:17:54 +0200
committerGravatar Leon Sandøy <[email protected]>2018-07-28 20:17:54 +0200
commitb4d024dc69e9084184f628daeb48d6601a3996e2 (patch)
tree06e5ca6f40dc57b0b90a12b2a20592e1b748ccf9 /tests
parentNow doing role colorization instead of random colors for the cleanlog template. (diff)
parentFix typo in infractions table definition (diff)
Merge branch 'master' into clean_command
Diffstat (limited to 'tests')
-rw-r--r--tests/test_api_bot_infractions.py134
-rw-r--r--tests/test_api_bot_users.py6
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)