Exemple #1
0
    def test_user(self):
        user_dict = dict(name="test_user_name", email="*****@*****.**", password="******")

        # Registers an user.
        form_data = dict(confirm_password=user_dict["password"])
        form_data.update(user_dict)
        response = self.post_json("/user/rest/register", data=form_data)
        response_dict = json.loads(response.data)
        user_dict["id"] = response_dict["user"]["id"]
        assert (
            response_dict["success"] == True
            and response_dict["user"]["email"] == user_dict["email"]
            and response_dict["message"] == "You have been registered into the system successfuly."
        )

        # User log in failure.
        response = self.post_json("/user/rest/login", data=dict(email="email", password="******"))
        response_dict = json.loads(response.data)
        assert response_dict["success"] == False and response_dict["message"] == "Wrong authentication data."

        # Logs in a user.
        response = self.post_json("/user/rest/login", data=user_dict)
        response_dict = json.loads(response.data)
        assert (
            response_dict["success"] == True
            and response_dict["user"]["id"] == user_dict["id"]
            and response_dict["user"]["email"] == user_dict["email"]
        )

        # Email does not exist.
        response = self.post_json("/user/rest/email_is_free", data=dict(email="*****@*****.**"))
        response_user_dict = json.loads(response.data)
        assert response_user_dict["success"] == True

        # Email exists.
        response = self.post_json("/user/rest/email_is_free", data=dict(email=user_dict["email"]))
        response_user_dict = json.loads(response.data)
        assert response_user_dict["success"] == False

        # Failure - a user has been alredy authenticated. It can be used only by anonymouse users.
        response = self.post_json("/user/rest/login", data=user_dict)
        assert response.status_code == 401

        # The current user is returned.
        response = self.client.get("/user/rest/current")
        response_user_dict = json.loads(response.data)
        assert response_user_dict["name"] == user_dict["name"] and response.status_code == 200

        # The user profile is returned.
        response = self.client.get("/user/profile/get")
        response_profile_dict = json.loads(response.data)
        assert (
            response_profile_dict["name"] == user_dict["name"]
            and response_profile_dict["email"] == user_dict["email"]
            and response.status_code == 200
        )

        # The user profile is returned.
        response_profile_dict["name"] = "%s - changed" % response_profile_dict["name"]
        response = self.post_json("/user/profile/update", data=response_profile_dict)
        response_dict = json.loads(response.data)
        user_model = UserModel.load_by_id(user_dict["id"])
        assert response_dict["success"] and user_model.name == response_profile_dict["name"]

        # Logout.
        response = self.client.get("/user/rest/logout")
        response_dict = json.loads(response.data)
        assert response_dict["success"] == True

        # The current user is not returned. It needs authentication.
        response = self.client.get("/user/rest/current")
        assert response.status_code == 401