def test_get_list(self):
        # add dummy data
        add_test_users()

        response, response_data = self.get_response(
            method="GET",
            token=self.login_as_user("user_1"),
        )

        expected = [
            {
                "id": 1,
                "login": "******",
                "name": "Test User 1",
                "email": "*****@*****.**",
                "created_at": response_data[0].get("created_at"),
                "updated_at": response_data[0].get("updated_at"),
                "is_active": True,
                "is_admin": True,
            },
            {
                "id": 2,
                "login": "******",
                "name": "Test User 2",
                "email": "*****@*****.**",
                "created_at": response_data[1].get("created_at"),
                "updated_at": response_data[1].get("updated_at"),
                "is_active": True,
                "is_admin": False,
            },
            {
                "id": 3,
                "login": "******",
                "name": "Test User 3",
                "email": "*****@*****.**",
                "created_at": response_data[2].get("created_at"),
                "updated_at": response_data[2].get("updated_at"),
                "is_active": True,
                "is_admin": False,
            },
        ]

        self.assertEqual(200, response.status_code)
        self.assertListEqual(expected, response_data)

        # clear db
        User.query.delete()
        self.db.session.commit()
    def test_pagination(self):
        # add dummy data
        add_test_users()

        user_token = self.login_as_user("user_1")

        response, response_data = self.get_response(
            url=url_for("api_v1.users_list", page=1, limit=3),
            method="GET",
            token=user_token,
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(3, len(response_data))

        response, response_data = self.get_response(
            url=url_for("api_v1.users_list", page=2, limit=2),
            method="GET",
            token=user_token,
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response_data))

        response, response_data = self.get_response(
            url=url_for("api_v1.users_list", page=5, limit=2),
            method="GET",
            token=user_token,
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(USERS_NOT_FOUND, response_data.get("message"))

        # clear db
        User.query.delete()
        self.db.session.commit()
    def setUp(self) -> None:
        super().setUp()

        # add dummy data
        add_test_users()
 def setUpClass(cls):
     super().setUpClass()
     # add dummy data
     add_test_users()
    def test_registration_validation(self):
        # data without login field
        payload = self.payload.copy()

        del payload["login"]
        expected = {
            "message": {
                "login": [MISSING_DATA_FOR_REQUIRED],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # data without password
        payload = self.payload.copy()
        del payload["password"]
        expected = {
            "message": {
                "password": [MISSING_DATA_FOR_REQUIRED],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # data without name
        payload = self.payload.copy()
        del payload["name"]
        expected = {
            "message": {
                "name": [MISSING_DATA_FOR_REQUIRED],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # data without email
        payload = self.payload.copy()
        del payload["email"]
        expected = {
            "message": {
                "email": [MISSING_DATA_FOR_REQUIRED],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # add dummy users
        add_test_users()

        # data with existed login
        payload = self.payload.copy()
        payload["login"] = "******"
        expected = {
            "message": {
                "_schema": [USER_ALREADY_EXIST],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # data with existed email
        payload = self.payload.copy()
        payload["email"] = "*****@*****.**"
        expected = {
            "message": {
                "_schema": [USER_ALREADY_EXIST],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # data with invalid email
        payload = self.payload.copy()
        payload["login"] = "******"
        payload["email"] = "123"
        expected = {
            "message": {
                "email": [
                    "Not a valid email address.",
                    "Shorter than minimum length 5.",
                ],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # data with empty email
        payload = self.payload.copy()
        payload["login"] = "******"
        payload["email"] = ""
        expected = {
            "message": {
                "email": [
                    "Not a valid email address.",
                    "Shorter than minimum length 5.",
                ],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        # data with empty login
        payload = self.payload.copy()
        payload["login"] = ""
        expected = {
            "message": {
                "login": [
                    "Shorter than minimum length 4.",
                ],
            },
        }
        self.register_and_check_with_expected(payload, expected)

        User.query.delete()
        self.db.session.commit()