diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/__init__.py | 1 | ||||
| -rw-r--r-- | tests/test_api_bot_off_topic_names.py | 32 | ||||
| -rw-r--r-- | tests/test_api_bot_snake.py | 62 | ||||
| -rw-r--r-- | tests/test_api_bot_tags.py | 2 | ||||
| -rw-r--r-- | tests/test_clean_logs.py | 74 | ||||
| -rw-r--r-- | tests/test_roots.py | 1 | ||||
| -rw-r--r-- | tests/test_staff.py | 3 | 
7 files changed, 151 insertions, 24 deletions
diff --git a/tests/__init__.py b/tests/__init__.py index 84e69105..1f3ca1a4 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,4 +1,3 @@ -import json  import os  from flask import Blueprint diff --git a/tests/test_api_bot_off_topic_names.py b/tests/test_api_bot_off_topic_names.py index f0d0fe3e..6227ddef 100644 --- a/tests/test_api_bot_off_topic_names.py +++ b/tests/test_api_bot_off_topic_names.py @@ -100,3 +100,35 @@ class RandomSampleEndpointTests(SiteTest):          )          self.assert200(response)          self.assertEqual(len(response.json), 1) + + +class DeletingANameEndpointTests(SiteTest): +    """Tests deleting a name from the database using DELETE.""" + +    CHANNEL_NAME = 'duck-goes-meow' + +    def setUp(self): +        response = self.client.post( +            f'/bot/off-topic-names?name={self.CHANNEL_NAME}', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        ) +        self.assert200(response) + +    def test_deleting_random_name_returns_deleted_0(self): +        response = self.client.delete( +            '/bot/off-topic-names?name=my-totally-random-name', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        ) +        self.assert200(response) +        self.assertEqual(response.json['deleted'], 0) + +    def test_deleting_channel_name_returns_deleted_1(self): +        response = self.client.delete( +            f'/bot/off-topic-names?name={self.CHANNEL_NAME}', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        ) +        self.assert200(response) +        self.assertEqual(response.json['deleted'], 1) diff --git a/tests/test_api_bot_snake.py b/tests/test_api_bot_snake.py index b5aa3bab..fcc18409 100644 --- a/tests/test_api_bot_snake.py +++ b/tests/test_api_bot_snake.py @@ -1,42 +1,64 @@ -import os +"""Tests the `/api/bot/snake_` endpoints.""" +  from tests import SiteTest, app -class ApiBotSnakeEndpoints(SiteTest): -    """ -    Tests the following endpoints: -        - snake_movies -        - snake_quiz -        - snake_names -        - snake_idioms -        - snake_facts -    """ + +class TestSnakeFactsAPI(SiteTest): +    """GET method - get snake fact"""      def test_snake_facts(self): -        # GET method - get snake fact -        response = self.client.get('/bot/snake_facts', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']) +        response = self.client.get( +            '/bot/snake_facts', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        )          self.assertEqual(response.status_code, 200)          self.assertEqual(type(response.json), str) + +class TestSnakeIdiomAPI(SiteTest): +    """GET method - get snake idiom""" +      def test_snake_idiom(self): -        # GET method - get snake idiom -        response = self.client.get('/bot/snake_idioms', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']) +        response = self.client.get( +            '/bot/snake_idioms', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        )          self.assertEqual(response.status_code, 200)          self.assertEqual(type(response.json), str) + +class TestSnakeQuizAPI(SiteTest): +    """GET method - get snake quiz""" +      def test_snake_quiz(self): -        # GET method - get snake quiz -        response = self.client.get('/bot/snake_quiz', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']) +        response = self.client.get( +            '/bot/snake_quiz', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        )          self.assertEqual(response.status_code, 200)          self.assertEqual(type(response.json), dict) + +class TestSnakeNameAPI(SiteTest): +    """GET method - get a single snake name, or all of them.""" +      def test_snake_names(self): -        # GET method - get snake name -        response = self.client.get('/bot/snake_names', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']) +        response = self.client.get( +            '/bot/snake_names', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        )          self.assertEqual(response.status_code, 200)          self.assertEqual(type(response.json), dict)      def test_snake_names_all(self): -        # GET method - get all snake names -        response = self.client.get('/bot/snake_names?get_all=True', app.config['API_SUBDOMAIN'], headers=app.config['TEST_HEADER']) +        response = self.client.get( +            '/bot/snake_names?get_all=True', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'] +        )          self.assertEqual(response.status_code, 200)          self.assertEqual(type(response.json), list) diff --git a/tests/test_api_bot_tags.py b/tests/test_api_bot_tags.py index 66940f7e..fa06e0fa 100644 --- a/tests/test_api_bot_tags.py +++ b/tests/test_api_bot_tags.py @@ -1,7 +1,7 @@ -import os  import json  from tests import SiteTest, app +  class ApiBotTagsEndpoint(SiteTest):      def test_api_tags(self): diff --git a/tests/test_clean_logs.py b/tests/test_clean_logs.py new file mode 100644 index 00000000..1c3449b4 --- /dev/null +++ b/tests/test_clean_logs.py @@ -0,0 +1,74 @@ +"""Tests the `/api/bot/clean` endpoint.""" +import json + +from tests import SiteTest, app + + +class TestCleanLogAPI(SiteTest): +    """ +    Tests submitting a clean log and +    verifies that we get a UUID in return. + +    Also ensures that we get a 400 if we send in bad data. +    """ + +    def test_returns_400_on_bad_data(self): +        bad_data = json.dumps({ +            "scubfire": "testiclaes" +        }) + +        response = self.client.post( +            '/bot/clean', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'], +            data=bad_data +        ) +        self.assert400(response) + +    def test_submit_clean_log(self): +        good_data = json.dumps({ +            "log_data": [ +                { +                    "author": "something", +                    "user_id": "12345151", +                    "role_id": "4818413", +                    "content": "testy", +                    "timestamp": "this way comes", +                    "embeds": [{"fire":"nanny"}], +                    "attachments": ["<Attachment>"], +                } +            ] +        }) + +        response = self.client.post( +            '/bot/clean', +            app.config['API_SUBDOMAIN'], +            headers=app.config['TEST_HEADER'], +            data=good_data +        ) + +        log_id = response.json.get("log_id") + +        self.assert200(response) +        self.assertIsNotNone(log_id) +        self.assertGreater(len(log_id), 2) +        self.assertEqual(type(log_id), str) + + +class TestCleanLogFrontEnd(SiteTest): +    """ +    Tests the frontend for +    viewing the clean logs. + +    Best I can do with our current +    system is check if I'm redirected, +    since this is behind OAuth. +    """ + +    def test_clean_log_frontend_returns_302(self): +        response = self.client.get( +            f'/bot/clean_logs/1', +            'http://pytest.local' +        ) + +        self.assertEqual(response.status_code, 302)
\ No newline at end of file diff --git a/tests/test_roots.py b/tests/test_roots.py index 0b7b129c..1b270178 100644 --- a/tests/test_roots.py +++ b/tests/test_roots.py @@ -3,6 +3,7 @@ from pysite.constants import DISCORD_OAUTH_REDIRECT  from pysite.constants import DISCORD_OAUTH_AUTHORIZED  from pysite.constants import ERROR_DESCRIPTIONS +  class RootEndpoint(SiteTest):      """ Test cases for the root endpoint and error handling """ diff --git a/tests/test_staff.py b/tests/test_staff.py index 68c182b5..bc911b0c 100644 --- a/tests/test_staff.py +++ b/tests/test_staff.py @@ -1,7 +1,6 @@ -import os -import json  from tests import SiteTest, app +  class StaffEndpoints(SiteTest):      """ Test cases for staff subdomain """  |