Exemple #1
0
 def test_add_user(self):
     database = {"users": []}
     api = RestAPI(database)
     payload = json.dumps({'user': '******'})
     response = api.post('/add', payload)
     expected = {'name': 'Adam', 'owes': {}, 'owed_by': {}, 'balance': 0}
     self.assertDictEqual(json.loads(response), expected)
Exemple #2
0
 def test_get_single_user(self):
     database = {
         'users': [{
             'name': 'Adam',
             'owes': {},
             'owed_by': {},
             'balance': 0
         }, {
             'name': 'Bob',
             'owes': {},
             'owed_by': {},
             'balance': 0
         }]
     }
     api = RestAPI(database)
     payload = json.dumps({'users': 'Bob'})
     response = api.get('/users', payload)
     expected = {
         'users': [{
             'name': 'Bob',
             'owes': {},
             'owed_by': {},
             'balance': 0
         }]
     }
     self.assertDictEqual(json.loads(response), expected)
    def test_no_users(self):
        database = {"users": []}
        api = RestAPI(database)

        response = api.get("/users")
        expected = {"users": []}
        self.assertDictEqual(json.loads(response), expected)
 def test_add_user(self):
     database = {"users": []}
     api = RestAPI(database)
     payload = json.dumps({"user": "******"})
     response = api.post("/add", payload)
     expected = {"name": "Adam", "owes": {}, "owed_by": {}, "balance": 0.0}
     self.assertDictEqual(json.loads(response), expected)
 def test_get_single_user(self):
     database = {
         "users": [
             {
                 "name": "Adam",
                 "owes": {},
                 "owed_by": {},
                 "balance": 0.0
             },
             {
                 "name": "Bob",
                 "owes": {},
                 "owed_by": {},
                 "balance": 0.0
             },
         ]
     }
     api = RestAPI(database)
     payload = json.dumps({"users": ["Bob"]})
     response = api.get("/users", payload)
     expected = {
         "users": [{
             "name": "Bob",
             "owes": {},
             "owed_by": {},
             "balance": 0.0
         }]
     }
     self.assertDictEqual(json.loads(response), expected)
Exemple #6
0
 def test_lender_has_negative_balance(self):
     self.skipTest('skip')
     database = {
         "users": [
             {
                 "name": "Adam",
                 "owes": {},
                 "owed_by": {},
                 "balance": 0.0
             },
             {
                 "name": "Bob",
                 "owes": {
                     "Chuck": 3.0
                 },
                 "owed_by": {},
                 "balance": -3.0
             },
             {
                 "name": "Chuck",
                 "owes": {},
                 "owed_by": {
                     "Bob": 3.0
                 },
                 "balance": 3.0
             },
         ]
     }
     api = RestAPI(database)
     payload = json.dumps({
         "lender": "Bob",
         "borrower": "Adam",
         "amount": 3.0
     })
     response = api.post("/iou", payload)
     expected = {
         "users": [
             {
                 "name": "Adam",
                 "owes": {
                     "Bob": 3.0
                 },
                 "owed_by": {},
                 "balance": -3.0
             },
             {
                 "name": "Bob",
                 "owes": {
                     "Chuck": 3.0
                 },
                 "owed_by": {
                     "Adam": 3.0
                 },
                 "balance": 0.0,
             },
         ]
     }
     self.assertDictEqual(json.loads(response), expected)
Exemple #7
0
 def test_lender_has_negative_balance(self):
     database = {
         'users': [{
             'name': 'Adam',
             'owes': {},
             'owed_by': {},
             'balance': 0
         }, {
             'name': 'Bob',
             'owes': {
                 'Chuck': 3
             },
             'owed_by': {},
             'balance': -3
         }, {
             'name': 'Chuck',
             'owes': {},
             'owed_by': {
                 'Bob': 3
             },
             'balance': 3
         }]
     }
     api = RestAPI(database)
     payload = json.dumps({
         'lender': 'Bob',
         'borrower': 'Adam',
         'amount': 3
     })
     response = api.post('/iou', payload)
     expected = {
         'users': [{
             'name': 'Adam',
             'owes': {
                 'Bob': 3
             },
             'owed_by': {},
             'balance': -3
         }, {
             'name': 'Bob',
             'owes': {
                 'Chuck': 3
             },
             'owed_by': {
                 'Adam': 3
             },
             'balance': 0
         }]
     }
     self.assertDictEqual(json.loads(response), expected)
Exemple #8
0
 def test_lender_owes_borrower_less_than_new_loan(self):
     self.skipTest('skip')
     database = {
         "users": [
             {
                 "name": "Adam",
                 "owes": {
                     "Bob": 3.0
                 },
                 "owed_by": {},
                 "balance": -3.0
             },
             {
                 "name": "Bob",
                 "owes": {},
                 "owed_by": {
                     "Adam": 3.0
                 },
                 "balance": 3.0
             },
         ]
     }
     api = RestAPI(database)
     payload = json.dumps({
         "lender": "Adam",
         "borrower": "Bob",
         "amount": 4.0
     })
     response = api.post("/iou", payload)
     expected = {
         "users": [
             {
                 "name": "Adam",
                 "owes": {},
                 "owed_by": {
                     "Bob": 1.0
                 },
                 "balance": 1.0
             },
             {
                 "name": "Bob",
                 "owes": {
                     "Adam": 1.0
                 },
                 "owed_by": {},
                 "balance": -1.0
             },
         ]
     }
     self.assertDictEqual(json.loads(response), expected)
	    def test_both_users_have_0_balance(self):
	        database = {
	            "users": [
	                {"name": "Adam", "owes": {}, "owed_by": {}, "balance": 0.0},
	                {"name": "Bob", "owes": {}, "owed_by": {}, "balance": 0.0},
	            ]
	        }
	        api = RestAPI(database)
	        payload = json.dumps({"lender": "Adam", "borrower": "Bob", "amount": 3.0})
	        response = api.post("/iou", payload)
	        expected = {
	            "users": [
	                {"name": "Adam", "owes": {}, "owed_by": {"Bob": 3.0}, "balance": 3.0},
	                {"name": "Bob", "owes": {"Adam": 3.0}, "owed_by": {}, "balance": -3.0},
	            ]
	        }
	        self.assertDictEqual(json.loads(response), expected)
Exemple #10
0
 def test_lender_owes_borrower_less_than_new_loan(self):
     database = {
         "users": [{
             "name": "Adam",
             "owes": {
                 "Bob": 3.0
             },
             "owed_by": {},
             "balance": -3.0
         }, {
             "name": "Bob",
             "owes": {},
             "owed_by": {
                 "Adam": 3.0
             },
             "balance": 3.0
         }]
     }
     api = RestAPI(database)
     payload = json.dumps({
         'lender': 'Adam',
         'borrower': 'Bob',
         'amount': 4.0
     })
     response = api.post('/iou', payload)
     expected = {
         'users': [{
             "name": "Adam",
             "owes": {},
             "owed_by": {
                 "Bob": 1.0
             },
             "balance": 1.0
         }, {
             "name": "Bob",
             "owes": {
                 "Adam": 1.0
             },
             "owed_by": {},
             "balance": -1.0
         }]
     }
     self.assertDictEqual(json.loads(response), expected)
Exemple #11
0
 def test_no_users(self):
     database = {"users": []}
     api = RestAPI(database)
     response = api.get('/users')
     self.assertDictEqual(json.loads(response), database)
Exemple #12
0
        data = None
        if not os.path.exists(path):
            return None
        try:
            with open(path, "r") as f:
                data = json.load(f)
                f.close()
        except Exception as e:
            logging.exception("Could not read data from file " + path)

        return data


if __name__ == '__main__':
    username = "******"  # Uživatelské jméno pro API.
    password = "******"  # Heslo pro API.
    rest = RestAPI(username, password)
    server = '147.228.124.230'  # IP adresa brokeru.
    topic = 'ite/#'  # Topic, ze ktereho je odebiran obsah brokeru.
    teams = ["black", "blue", "green", "orange", "pink", "red", "yellow"]
    stats = ["prumerna", "maximalni", "minimalni", "posledni"]

    mqtt_subscriber = MQTTSub(
        rest=rest,
        server=server,
        topic=topic,
        teams=teams,
        stats=stats,
    )
    mqtt_subscriber.start()
Exemple #13
0
    def _handle_client(self, client, address):
        """
        Main loop for handling connecting clients and serving files from content_dir
        Parameters:
            - client: socket client from accept()
            - address: socket address from accept()
        """
        packet_size = 1024
        while True:
            print("CLIENT", client)
            data = client.recv(packet_size).decode(
            )  # Receive data packet from client and decode

            if not data: break

            request = data.split(' ')
            request_method = request[0]  # GET
            endpoint = request[1]  # /users

            (req_headers, req_body) = data.split("\r\n\r\n")

            fields = req_headers.split("\r\n")
            fields = fields[
                1:]  # ignore the first line which was already checked: GET / HTTP/1.1

            headers = {}
            for field in fields:
                key, value = field.split(
                    ': ')  # split each line by http field name and value
                headers[key] = value

            print(
                f"Request:\n{[request_method, endpoint]}\nHeaders:\n{headers}\nBody:\n{req_body}\n------\n"
            )

            if request_method == "GET" or request_method == "POST":
                api = RestAPI(DATABASE)
                try:
                    if request_method == "GET" and endpoint == "/users":
                        response_header = self._generate_headers(200)
                        response = response_header.encode()
                        response += api.get(endpoint, req_body)

                    elif request_method == "POST" and data and endpoint in [
                            "/add", "/iou"
                    ]:
                        response_header = self._generate_headers(200)
                        response = response_header.encode()
                        response += api.post(endpoint, req_body)

                except Exception as e:
                    print(e)
                    response_header = self._generate_headers(404)
                    response = response_header.encode()
                    if request_method == "GET" or request_method == "POST":  # General error
                        response_data = f"<html><body><center><h1>Something went wrong</h1></center><p>Error message: {e}</p></body></html>"
                        response += response_data.encode()

                client.send(response)
                client.close()
                break

            else:
                print(f"Unknown HTTP request method: {request_method}")