Esempio n. 1
0
 def test_get_votes_for_user(self):
     vote = Vote()
     self.assertEqual(
         get_expected_votes_data("user_1"), vote.get_votes_for_user("user_1")
     )
     self.assertEqual(
         get_expected_votes_data("user_2"), vote.get_votes_for_user("user_2")
     )
     self.assertEqual([], vote.get_votes_for_user("user_3"))
    def test_get_votes_for_user_private(self, get_user_mock):
        # Define helper functions
        event = lambda user: dict(
            pathParameters=dict(user=user),
            headers=dict(
                Cookie=
                f"user={user}&signature=$2b$12$oGAaQWkNrjCWI0ugg8Go8uZ1ld2828dTeTk2cE/WZAO2yOB4aUxQm"
            ),
        )
        response = lambda user: create_response(
            200,
            body=json.dumps(
                dict(
                    single_voting_projects=[],
                    votes=get_expected_votes_data(user),
                )),
        )

        # Logged in user
        get_user_mock.return_value = dict(is_public=False,
                                          single_voting_projects=[])
        self.assertEqual(response("user_1"),
                         get_votes_for_user(event("user_1"), None))

        # Not logged in user
        get_user_mock.return_value = dict(is_public=False,
                                          single_voting_projects=[])
        self.assertEqual(
            create_response(400, "GET", "Invalid user"),
            get_votes_for_user(event("user_2"), None),
        )
    def test_get_votes_for_user(self, get_user_mock):
        # Define helper functions
        event = lambda user: dict(pathParameters=dict(user=user))
        response = lambda user, svp: create_response(
            200,
            body=json.dumps(
                dict(
                    single_voting_projects=svp,
                    votes=get_expected_votes_data(user),
                )),
        )

        # Good case #1 (with svp)
        get_user_mock.return_value = dict(is_public=True,
                                          single_voting_projects=["project_a"])
        self.assertEqual(response("user_1", ["project_a"]),
                         get_votes_for_user(event("user_1"), None))

        # Good case #2 (without svp)
        get_user_mock.return_value = dict(is_public=True,
                                          single_voting_projects=[])
        self.assertEqual(response("user_2", []),
                         get_votes_for_user(event("user_2"), None))

        # Invalid user
        get_user_mock.return_value = None
        self.assertEqual(
            create_response(400, "GET", "Invalid user"),
            get_votes_for_user(event("user_X"), None),
        )
Esempio n. 4
0
    def test_create_topic(self, _):
        expected_votes_user_2 = get_expected_votes_data("user_2") + [
            dict(
                topic="topic_eee",
                project_name="project_d",
                vote_count=1,
                last_vote="9999",
            ),
        ]

        expected_votes_user_3 = [
            dict(
                topic="topic_fff",
                project_name="project_e",
                vote_count=1,
                last_vote="9999",
            ),
        ]

        vote = Vote()
        vote.create_topic("user_2", "topic_eee", "project_d")
        vote.create_topic("user_3", "topic_fff", "project_e")

        self.assertEqual(expected_votes_user_2, vote.get_votes_for_user("user_2"))
        self.assertEqual(expected_votes_user_3, vote.get_votes_for_user("user_3"))
Esempio n. 5
0
 def test_get_votes_for_project(self):
     vote = Vote()
     self.assertEqual(
         get_expected_votes_data("user_1", "project_a"),
         vote.get_votes_for_project("user_1", "project_a"),
     )
     self.assertEqual(
         get_expected_votes_data("user_1", "project_b"),
         vote.get_votes_for_project("user_1", "project_b"),
     )
     self.assertEqual(
         get_expected_votes_data("user_2", "project_c"),
         vote.get_votes_for_project("user_2", "project_c"),
     )
     self.assertEqual([], vote.get_votes_for_project("user_2", "project_y"))
     self.assertEqual([], vote.get_votes_for_project("user_3", "project_z"))
    def add_vote_helper(self, vote_handler, expected_return_code):
        expected_data_user_2 = get_expected_votes_data("user_2")
        expected_data_user_2[0]["vote_count"] += 1
        expected_data_user_2[0]["last_vote"] = "9999"

        expected_data_user_3 = [
            dict(
                topic="topic_xxx",
                project_name="project_x",
                vote_count=1,
                last_vote="9999",
            ),
        ]

        expected_data_user_4 = [
            dict(
                topic="topic_xxx",
                project_name="project_x",
                vote_count=2,
                last_vote="9999",
            ),
        ]

        # Check existing topic
        event_1 = add_ip_address(
            dict(pathParameters=dict(
                user="******", project="project_c", topic="topic_ddd")))
        response_1 = vote_handler(event_1, None)
        event_2 = add_ip_address(dict(pathParameters=dict(user="******")))
        response_2 = get_votes_for_user(event_2, None)

        self.assertEqual(expected_return_code, response_1["statusCode"])
        self.assertEqual(200, response_2["statusCode"])
        self.assertEqual(expected_data_user_2,
                         json.loads(response_2["body"])["votes"])

        # Check non-existing topic
        event_3 = add_ip_address(
            dict(pathParameters=dict(
                user="******", project="project_x", topic="topic_xxx")))
        response_3 = vote_handler(event_3, None)
        event_4 = add_ip_address(dict(pathParameters=dict(user="******")))
        response_4 = get_votes_for_user(event_4, None)

        self.assertEqual(expected_return_code, response_3["statusCode"])
        self.assertEqual(200, response_4["statusCode"])
        self.assertEqual(expected_data_user_3,
                         json.loads(response_4["body"])["votes"])

        # Check uppercase letters
        event_5 = add_ip_address(
            dict(pathParameters=dict(
                user="******", project="ProJect_X", topic="ToPiC_xXX")))
        response_5 = vote_handler(event_5, None)
        event_6 = add_ip_address(dict(pathParameters=dict(user="******")))
        response_6 = get_votes_for_user(event_6, None)

        self.assertEqual(expected_return_code, response_5["statusCode"])
        self.assertEqual(200, response_6["statusCode"])
        self.assertEqual(expected_data_user_4,
                         json.loads(response_6["body"])["votes"])