コード例 #1
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)
コード例 #2
0
    def test_no_users(self):
        database = {"users": []}
        api = RestAPI(database)

        response = api.get("/users")
        expected = {"users": []}
        self.assertDictEqual(json.loads(response), expected)
コード例 #3
0
 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)
コード例 #4
0
ファイル: rest_api_test.py プロジェクト: rootulp/exercism
 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)
コード例 #5
0
 def test_no_users(self):
     database = {"users": []}
     api = RestAPI(database)
     response = api.get('/users')
     self.assertDictEqual(json.loads(response), database)
コード例 #6
0
ファイル: rest_api_test.py プロジェクト: rootulp/exercism
 def test_no_users(self):
     database = {"users": []}
     api = RestAPI(database)
     response = api.get('/users')
     self.assertDictEqual(json.loads(response), database)
コード例 #7
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}")