Esempio n. 1
0
    def test_with_bad_colour(self):
        """Test it rejects a bogus colour."""
        client = app.test_client()
        data = json.dumps({"colour": [400, -35, 127], "mode": "sweep"})
        response = client.post("/desk/light", headers=headers, data=data)

        self.assertEqual(response.status_code, 422)
        self.assertEqual(
            json.loads(response.data),
            {"error": "`[400, -35, 127]` is not a valid RGB colour"},
        )
Esempio n. 2
0
    def test_with_no_colour(self):
        """Test it rejects a payload with no colour."""
        client = app.test_client()
        data = json.dumps({})
        response = client.post("/desk/light", headers=headers, data=data)

        self.assertEqual(response.status_code, 422)
        self.assertEqual(
            json.loads(response.data),
            {"error": "`colour` must be supplied"},
        )
Esempio n. 3
0
    def test_get_no_colour(self):
        """Test it's OK when there's no colour recorded."""
        app.redis.delete("colours/desk")

        client = app.test_client()
        response = client.get("/desk/colour")

        self.assertEqual(response.status_code, 404)
        self.assertEqual(
            json.loads(response.data),
            {"error": "no data for that"},
        )
Esempio n. 4
0
    def test_with_no_data(self):
        """Test it rejects an empty payload."""
        client = app.test_client()
        data = None
        response = client.post(
            "/desk/light",
            headers=headers,
            data=data,
        )

        self.assertEqual(response.status_code, 422)
        self.assertEqual(json.loads(response.data), {"error": "no data"})
Esempio n. 5
0
    def test_no_mode(self):
        """Test it rejects a payload with no mode."""
        client = app.test_client()
        response = client.post(
            "/desk/light",
            headers=headers,
            data=json.dumps({"colour": [123, 123, 0]}),
        )

        self.assertEqual(response.status_code, 422)
        self.assertEqual(response.get_json(),
                         {"error": "`mode` must be supplied"})
Esempio n. 6
0
    def test_easy_sweep(self):
        """Test the simple case."""
        client = app.test_client()
        data = json.dumps({"colour": [123, 123, 0], "mode": "sweep"})
        response = client.post("/desk/light", headers=headers, data=data)

        worker.poll()

        self.assertEqual(response.status_code, 200)
        self.assertEqual(
            json.loads(response.data), {"colour": [123, 123, 0], "status": "OK"}
        )
Esempio n. 7
0
    def test_with_bad_delay(self):
        """Test it rejects a bogus `delay` parameter."""
        client = app.test_client()
        data = json.dumps({
            "colour": [10, 20, 30],
            "mode": "sweep",
            "delay": "two days"
        })
        response = client.post("/desk/light", headers=headers, data=data)

        self.assertEqual(response.status_code, 422)
        self.assertEqual(
            json.loads(response.data),
            {"error": "`two days` is not a valid delay interval"},
        )
Esempio n. 8
0
    def test_with_bad_direction(self):
        """Test it rejects a bogus `direction` parameter."""
        client = app.test_client()
        data = json.dumps({
            "colour": [10, 20, 30],
            "mode": "sweep",
            "direction": "up"
        })
        response = client.post("/desk/light", headers=headers, data=data)

        self.assertEqual(response.status_code, 422)
        self.assertEqual(
            json.loads(response.data),
            {"error": "`direction` must be one of [forwards, backwards]"},
        )
Esempio n. 9
0
    def test_bad_mode(self):
        """Test it rejects an unknown mode."""
        client = app.test_client()
        response = client.post(
            "/desk/light",
            headers=headers,
            data=json.dumps({
                "colour": [123, 123, 0],
                "mode": "phony-mode"
            }),
        )

        self.assertEqual(response.status_code, 422)
        self.assertEqual(response.get_json(),
                         {"error": "`phony-mode` is not a recognised mode"})
Esempio n. 10
0
    def test_get_colour(self):
        """Test it records and returns the colour."""
        client = app.test_client()
        data = json.dumps({"colour": [12, 34, 56], "mode": "sweep"})
        client.post("/desk/light", headers=headers, data=data)
        response = client.get("/desk/colour")

        self.assertEqual(response.status_code, 200)
        self.assertEqual(
            json.loads(response.data),
            {
                "colour": [12, 34, 56],
                "status": "OK"
            },
        )
    def test_with_parameters(self):
        """Test with params."""
        client = app.test_client()
        data = json.dumps({
            "colour": [10, 20, 30],
            "mode": "spot-fill",
            "delay": 0.1
        })
        response = client.post("/desk/light", headers=headers, data=data)

        worker.poll()

        self.assertEqual(response.status_code, 200)
        self.assertEqual(json.loads(response.data), {
            "colour": [10, 20, 30],
            "status": "OK"
        })
Esempio n. 12
0
    def test_with_non_number_caterpillar_length(self):
        """Test it rejects a non-numeric `caterpillar-length` parameter."""
        client = app.test_client()
        data = json.dumps({
            "colour": [10, 20, 30],
            "mode": "caterpillar",
            "caterpillar-length": "seven",
        })
        response = client.post("/desk/light", headers=headers, data=data)

        self.assertEqual(response.status_code, 422)
        self.assertEqual(
            json.loads(response.data),
            {
                "error": ("`caterpillar-length` must be something "
                          "that can be cast to an `int`")
            },
        )
Esempio n. 13
0
    def test_with_out_of_range_caterpillar_length(self):
        """Test it rejects an out-of-range `caterpillar-length` parameter."""
        client = app.test_client()
        data = json.dumps({
            "colour": [10, 20, 30],
            "mode": "caterpillar",
            "caterpillar-length": 21,
        })
        response = client.post("/desk/light", headers=headers, data=data)

        self.assertEqual(response.status_code, 422)
        self.assertEqual(
            json.loads(response.data),
            {
                "error":
                ("`caterpillar-length` must be a number between 1 and 2")
            },
        )
Esempio n. 14
0
    def test_with_parameters(self):
        """Test with params."""
        client = app.test_client()
        data = json.dumps({
            "colour": [10, 20, 30],
            "mode": "caterpillar",
            "direction": "backwards",
            "caterpillar-length": 1,
        })
        response = client.post("/desk/light", headers=headers, data=data)

        worker.poll()

        self.assertEqual(response.status_code, 200)
        self.assertEqual(json.loads(response.data), {
            "colour": [10, 20, 30],
            "status": "OK"
        })
Esempio n. 15
0
    def test_turning_off(self):
        """Test turning it off."""
        client = app.test_client()
        worker = Worker()

        # preload the queue
        data = json.dumps({"colour": [123, 123, 0], "mode": "spot-fill"})
        for _ in range(100):
            client.post("/desk/light", headers=headers, data=data)

        response = client.post("/desk/off", headers=headers)
        worker.poll()

        self.assertEqual(response.status_code, 200)
        self.assertEqual(json.loads(response.data), {
            "colour": [0, 0, 0],
            "status": "OK"
        })
Esempio n. 16
0
# -*- coding: utf-8 -*-

import unittest
import json

from webserver import app

app = app.test_client()


class FunctionalTest(unittest.TestCase):
    def parse(self, response_data):
        """ Try to load JSON. Returns None if no JSON can be decoded """

        try:
            data = json.loads(response_data)
        except ValueError:
            log.debug('No JSON object could be decoded : %s', response_data)
            data = None

        return data

    def __open(self, url, method, user=None, data=None):
        """ Open a HTTP Request for testing """

        params = dict()
        params['method'] = method

        if data is not None:
            params['data'] = json.dumps(data)
            params['content_type'] = "application/json"
Esempio n. 17
0
def client():
    test_client = app.test_client()
    return test_client
Esempio n. 18
0
# -*- coding: utf-8 -*-

import unittest
import json

from webserver import app

app = app.test_client()


class FunctionalTest(unittest.TestCase):
    def parse(self, response_data):
        """ Try to load JSON. Returns None if no JSON can be decoded """

        try:
            data = json.loads(response_data)
        except ValueError:
            log.debug("No JSON object could be decoded : %s", response_data)
            data = None

        return data

    def __open(self, url, method, user=None, data=None):
        """ Open a HTTP Request for testing """

        params = dict()
        params["method"] = method

        if data is not None:
            params["data"] = json.dumps(data)
            params["content_type"] = "application/json"
Esempio n. 19
0
def client():
    test_client = app.test_client()
    create(test_client)
    login(test_client)
    return test_client
Esempio n. 20
0
def client(app):
    return app.test_client()
Esempio n. 21
0
 def test_root(self):
     """Test '/'."""
     client = app.test_client()
     response = client.get("/", headers=headers)
     self.assertEqual(response.get_json(), {"status": "OK"})
 def setUp(self):
     self.app = app.test_client()
     self.app.testing = True
Esempio n. 23
0
 def test_root_html(self):
     """Test '/'."""
     client = app.test_client()
     response = client.get("/", headers={"Accept": "text/html"})
     self.assertEqual(response.data.decode().split("\n")[0],
                      "<!DOCTYPE HTML>")