def test_response_200(self, session): import_error = ImportError( filename="Lorem_ipsum.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) session.add(import_error) session.commit() response = self.client.get( f"/api/v1/importErrors/{import_error.id}", environ_overrides={'REMOTE_USER': "******"} ) assert response.status_code == 200 response_data = response.json response_data["import_error_id"] = 1 self.assertEqual( { "filename": "Lorem_ipsum.py", "import_error_id": 1, "stack_trace": "Lorem ipsum", "timestamp": "2020-06-10T12:00:00+00:00", }, response_data, )
def test_get_import_errors(self, session): import_error = [ ImportError( filename="Lorem_ipsum.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) for _ in range(2) ] session.add_all(import_error) session.commit() response = self.client.get("/api/v1/importErrors", environ_overrides={'REMOTE_USER': "******"}) assert response.status_code == 200 response_data = response.json self._normalize_import_errors(response_data['import_errors']) assert { "import_errors": [ { "filename": "Lorem_ipsum.py", "import_error_id": 1, "stack_trace": "Lorem ipsum", "timestamp": "2020-06-10T12:00:00+00:00", }, { "filename": "Lorem_ipsum.py", "import_error_id": 2, "stack_trace": "Lorem ipsum", "timestamp": "2020-06-10T12:00:00+00:00", }, ], "total_entries": 2, } == response_data
def test_serialize(self, session): import_error = [ ImportError( filename="Lorem_ipsum.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) for i in range(2) ] session.add_all(import_error) session.commit() query = session.query(ImportError) query_list = query.all() serialized_data = import_error_collection_schema.dump( ImportErrorCollection(import_errors=query_list, total_entries=2)) # To maintain consistency in the key sequence across the db in tests serialized_data["import_errors"][0]["import_error_id"] = 1 serialized_data["import_errors"][1]["import_error_id"] = 2 assert { "import_errors": [ { "filename": "Lorem_ipsum.py", "import_error_id": 1, "stack_trace": "Lorem ipsum", "timestamp": "2020-06-10T12:02:44+00:00", }, { "filename": "Lorem_ipsum.py", "import_error_id": 2, "stack_trace": "Lorem ipsum", "timestamp": "2020-06-10T12:02:44+00:00", }, ], "total_entries": 2, } == serialized_data
def test_should_raises_401_unauthenticated(self, session): import_error = ImportError( filename="Lorem_ipsum.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) session.add(import_error) session.commit() response = self.client.get(f"/api/v1/importErrors/{import_error.id}") assert_401(response)
def test_should_return_conf_max_if_req_max_above_conf(self, session): import_errors = [ ImportError( filename=f"/tmp/file_{i}.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) for i in range(200) ] session.add_all(import_errors) session.commit() response = self.client.get("/api/v1/importErrors?limit=180") assert response.status_code == 200 self.assertEqual(len(response.json['import_errors']), 150)
def test_should_respect_page_size_limit_default(self, session): import_errors = [ ImportError( filename=f"/tmp/file_{i}.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) for i in range(1, 110) ] session.add_all(import_errors) session.commit() response = self.client.get("/api/v1/importErrors") assert response.status_code == 200 self.assertEqual(len(response.json['import_errors']), 100)
def test_serialize(self, session): import_error = ImportError( filename="lorem.py", stacktrace="Lorem Ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) session.add(import_error) session.commit() serialized_data = import_error_schema.dump(import_error) serialized_data["import_error_id"] = 1 assert { "filename": "lorem.py", "import_error_id": 1, "stack_trace": "Lorem Ipsum", "timestamp": "2020-06-10T12:02:44+00:00", } == serialized_data
def test_order_by_raises_400_for_invalid_attr(self, session): import_error = [ ImportError( filename="Lorem_ipsum.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) for _ in range(2) ] session.add_all(import_error) session.commit() response = self.client.get("/api/v1/importErrors?order_by=timest", environ_overrides={'REMOTE_USER': "******"}) assert response.status_code == 400 msg = "Ordering with 'timest' is disallowed or the attribute does not exist on the model" assert response.json['detail'] == msg
def test_limit_and_offset(self, url, expected_import_error_ids, session): import_errors = [ ImportError( filename=f"/tmp/file_{i}.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC"), ) for i in range(1, 110) ] session.add_all(import_errors) session.commit() response = self.client.get(url, environ_overrides={'REMOTE_USER': "******"}) assert response.status_code == 200 import_ids = [pool["filename"] for pool in response.json["import_errors"]] self.assertEqual(import_ids, expected_import_error_ids)
def test_get_import_errors_order_by(self, session): import_error = [ ImportError( filename=f"Lorem_ipsum{i}.py", stacktrace="Lorem ipsum", timestamp=timezone.parse(self.timestamp, timezone="UTC") + timedelta(days=-i), ) for i in range(1, 3) ] session.add_all(import_error) session.commit() response = self.client.get("/api/v1/importErrors?order_by=-timestamp", environ_overrides={'REMOTE_USER': "******"}) assert response.status_code == 200 response_data = response.json self._normalize_import_errors(response_data['import_errors']) assert { "import_errors": [ { "filename": "Lorem_ipsum1.py", "import_error_id": 1, # id normalized with self._normalize_import_errors "stack_trace": "Lorem ipsum", "timestamp": "2020-06-09T12:00:00+00:00", }, { "filename": "Lorem_ipsum2.py", "import_error_id": 2, "stack_trace": "Lorem ipsum", "timestamp": "2020-06-08T12:00:00+00:00", }, ], "total_entries": 2, } == response_data