Example #1
0
    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
Example #3
0
 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
Example #4
0
    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)
Example #7
0
 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
Example #8
0
    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
Example #9
0
    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)
Example #10
0
    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