Example #1
0
 def setUp(self):
     self.course_id = 'edX/toy/2012_Fall'
     self.student_role = RoleFactory(name='Student',
                                     course_id=self.course_id)
     self.moderator_role = RoleFactory(name='Moderator',
                                       course_id=self.course_id)
     self.community_ta_role = RoleFactory(name='Community TA',
                                          course_id=self.course_id)
     self.student1 = UserFactory(username='******',
                                 email='*****@*****.**')
     self.student1_enrollment = CourseEnrollmentFactory(user=self.student1)
     self.student_role.users.add(self.student1)
     self.student2 = UserFactory(username='******',
                                 email='*****@*****.**')
     self.student2_enrollment = CourseEnrollmentFactory(user=self.student2)
     self.moderator = UserFactory(username='******',
                                  email='*****@*****.**',
                                  is_staff=True)
     self.moderator_enrollment = CourseEnrollmentFactory(
         user=self.moderator)
     self.moderator_role.users.add(self.moderator)
     self.community_ta1 = UserFactory(username='******',
                                      email='*****@*****.**')
     self.community_ta_role.users.add(self.community_ta1)
     self.community_ta2 = UserFactory(username='******',
                                      email='*****@*****.**')
     self.community_ta_role.users.add(self.community_ta2)
    def test_create_user_endpoint_succeeds(self):
        create_user_role('create_user')
        user = UserFactory.create(user_id="user_id_2", is_deleted=True)
        role = RoleFactory(name='test_role')

        location = LocationFactory.create()
        headers = self.headers()
        headers.update({'X-Location': location.id})

        user_data = dict(
            firstName=user.first_name,
            lastName=user.last_name,
            roleId=role.id
        )

        response = self.client().post(
            self.make_url("/users/"),
            headers=headers,
            data=self.encode_to_json_string(user_data))

        response_json = self.decode_from_json_string(response.data.decode('utf-8'))

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response_json['msg'], "OK")
        self.assertEqual(response_json['payload']['user']['firstName'], user.first_name)
        self.assertEqual(response_json['payload']['user']['lastName'], user.last_name)
        self.assertEqual(response_json['payload']['user']['userRoles'][0]['name'], role.name)
        self.assertEqual(response_json['payload']['user']['userRoles'][0]['help'], role.help)
Example #3
0
    def test_create_user_endpoint_succeeds1(self):
        location = LocationFactory()
        create_user_role("create_user", "admin")

        user = UserFactoryFake.build()
        role1 = RoleFactory()
        user_data = dict(
            first_name=user.first_name,
            last_name=user.last_name,
            role_id=role1.id,
            email=user.email,
            gender=user.gender,
            date_of_birth=str(user.date_of_birth),
            location_id=location.id,
            password=user.password,
        )

        headers = self.headers()
        headers.update({"X-Location": location.id})

        response = self.client().post(
            self.make_url("/users/"),
            headers=headers,
            data=self.encode_to_json_string(user_data),
        )

        response_json = self.decode_from_json_string(response.data.decode("utf-8"))

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response_json["msg"], "OK")
        self.assertEqual(
            response_json["payload"]["user"]["first_name"], user.first_name
        )
        self.assertEqual(response_json["payload"]["user"]["last_name"], user.last_name)
Example #4
0
    def test_list_user_succeeds(
        self,
        mock_user_repo_find_first,
    ):
        with self.app.app_context():
            role = RoleFactory()

            UserRoleFactory(user_id=self.mock_user.id, role_id=role.id)
            PermissionFactory.create(keyword="view_users", role=role)
            mock_user_repo_find_first.return_value = self.mock_user
            user_controller = UserController(self.request_context)

            response = user_controller.list_user(id=self.mock_user.id)

            self.assertEqual(response.status_code, 200)
            self.assertEqual(response.get_json()["msg"], "OK")

            self.assertEqual(
                response.get_json()["payload"]["user"]["first_name"],
                self.mock_user.first_name,
            )
            self.assertEqual(
                response.get_json()["payload"]["user"]["last_name"],
                self.mock_user.last_name,
            )
Example #5
0
    def test_update_user_endpoint_with_invalid_role_fails(self):
        create_user_role("update_user", "admin")
        role = RoleFactory()

        user = UserFactory()
        user.save()
        UserRoleFactory(user_id=user.id, role=role)
        user_data = dict(
            first_name="Andela",
            last_name="Eats",
            role_id=100,
            gender="male",
            date_of_birth="2020-10-01",
            employment_date="2020-10-01",
        )

        response = self.client().patch(
            self.make_url(f"/users/{user.id}"),
            headers=self.headers(),
            data=self.encode_to_json_string(user_data),
        )

        response_json = self.decode_from_json_string(response.data.decode("utf-8"))

        self.assertEqual(response.status_code, 400)
        self.assertEqual(response_json["msg"], "Role with id 100 doesnot exist")
Example #6
0
    def test_create_user_method_handles_user_creation_with_non_existent_role_id(
            self, mock_request_params):
        with self.app.app_context():
            user = UserFactory()
            role = RoleFactory(name="test_role")
            UserRoleFactory(role_id=role.id, user_id=user.id)

            non_existent_role_id = 100

            mock_request_params.return_value = [
                "Joseph",
                "Serunjogi",
                "*****@*****.**",
                non_existent_role_id,
                "male",
                str(datetime.now()),
                1,
                "password",
            ]

            user_controller = UserController(self.request_context)

            response = user_controller.create_user()

            self.assertEqual(response.status_code, 400)
            self.assertEqual(
                response.get_json()["msg"],
                "Role with userTypeId(roleId) {} does not exist".format(
                    non_existent_role_id),
            )
    def test_update_user_endpoint_with_invalid_role_fails(self):
        create_user_role('update_user')
        role = RoleFactory()
        user_role = UserRoleFactory(role=role)
        user = UserFactory(user_type=user_role)
        user.save()
        user_data = dict(firstName="Andela", lastName="Eats", roleId=100)

        response = self.client().patch(self.make_url(f'/users/{user.id}'), headers=self.headers(),
                                       data=self.encode_to_json_string(user_data))

        response_json = self.decode_from_json_string(response.data.decode('utf-8'))

        self.assertEqual(response.status_code, 400)
        self.assertEqual(response_json['msg'], 'Role with id 100 doesnot exist')
    def test_list_user_succeeds(self):

        with self.app.app_context():
            role = RoleFactory()
            user_role = UserRoleFactory(role_id=role.id)
            user = UserFactory(slack_id="-LXTuXlk2W4Gskt8KTte", user_type_id=user_role.id)

            user_controller = UserController(self.request_context)

            response = user_controller.list_user(slack_id=user.slack_id)

            self.assertEqual(response.status_code, 200)
            self.assertEqual(response.get_json()['msg'], "OK")
            self.assertEqual(response.get_json()['payload']['user']['slackId'], user.slack_id)
            self.assertEqual(response.get_json()['payload']['user']['firstName'], user.first_name)
            self.assertEqual(response.get_json()['payload']['user']['lastName'], user.last_name)
    def test_autocomplete_endpoint(self):
        role = RoleFactory()
        user_role = UserRoleFactory(role_id=role.id)
        user = UserFactory(slack_id='-LMnsyxrsj_TEYEAHCBk',
                           user_type_id=user_role.id)

        create_user_role('view_user_roles')

        response = self.client().get(self.make_url('/roles/autocomplete'),
                                     query_string={'q': user_role.email[0]},
                                     headers=self.headers())
        response_json = self.decode_from_json_string(
            response.data.decode('utf-8'))
        payload = response_json
        self.assertEqual(response.status_code, 200)
        self.assertTrue(user_role.email in payload['msg'])
    def test_get_user_role_endpoint(self):

        new_role, user_id = create_user_role('view_user_roles')
        new_role.save()
        role = RoleFactory()
        user_role = UserRoleFactory(role=role)
        user = UserFactory(user_type_id=user_role.id)

        response = self.client().get(
            self.make_url(f'/roles/user/{user_role.user_id}'),
            headers=self.headers())
        response_json = self.decode_from_json_string(
            response.data.decode('utf-8'))
        self.assert200(response)
        self.assertEqual(response_json['msg'], 'OK')
        self.assertEqual(response_json['payload']['user_role'][0]['id'],
                         user_role.id)
    def test_list_user_endpoint(self):
        role = RoleFactory()
        user_role = UserRoleFactory(role_id=role.id)
        user = UserFactory(slack_id='-LMnsyxrsj_TEYEAHCBk',
                           user_type_id=user_role.id)

        create_user_role('view_users')

        response = self.client().get(self.make_url(f'/users/{user.slack_id}/'),
                                     headers=self.headers())
        response_json = self.decode_from_json_string(
            response.data.decode('utf-8'))

        self.assertEqual(response_json['msg'], 'OK')
        self.assertEqual(response_json['payload']['user']['firstName'],
                         user.first_name)
        self.assertEqual(response_json['payload']['user']['lastName'],
                         user.last_name)
    def test_create_user_method_handles_user_creation_with_duplicate_user_id(
            self, mock_request_params):
        with self.app.app_context():
            user = UserFactory(user_id="-LXTuXlk2W4Gskt8KTte")
            role = RoleFactory(name='test_role')
            UserRoleFactory(role_id=role.id, user_id=user.id)

            mock_request_params.return_value = [
                "Joseph", "Serunjogi", None, None, user.user_id, role.id
            ]

            user_controller = UserController(self.request_context)

            response = user_controller.create_user()

            self.assertEqual(response.status_code, 400)
            self.assertEqual(
                response.get_json()['msg'],
                "User with userId '{}' already exists".format(user.user_id))
    def test_create_user_succeeds(self, mock_request_params,
                                  mock_get_location):
        location = LocationFactory()
        role = RoleFactory(name='test_role')

        with self.app.app_context():
            mock_get_location.return_value = location.id

            mock_request_params.return_value = [
                "Joseph", "Serunjogi", None, None, "-LXTuXlk2W4Gskt8KTte",
                role.id
            ]
            user_controller = UserController(self.request_context)

            # Act
            result = user_controller.create_user()

            # Assert
            assert result.status_code == 201
            assert result.get_json()['msg'] == 'OK'
    def test_create_user_endpoint_succeeds1(self):
        location = LocationFactory()
        create_user_role('create_user')
        user = UserFactory.build()
        user.save()
        role = RoleFactory()
        user_data = dict(firstName=user.first_name, lastName=user.last_name, roleId=role.id)

        headers = self.headers()
        headers.update({'X-Location': location.id})

        response = self.client().post(self.make_url("/users/"), headers=headers,
                                      data=self.encode_to_json_string(user_data))

        response_json = self.decode_from_json_string(response.data.decode('utf-8'))

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response_json['msg'], 'OK')
        self.assertEqual(response_json['payload']['user']['firstName'], user.first_name)
        self.assertEqual(response_json['payload']['user']['lastName'], user.last_name)
Example #15
0
    def test_create_user_endpoint_succeeds(self):
        create_user_role("create_user", "admin")
        user = UserFactoryFake.build(id=500, is_deleted=True)
        role = RoleFactory(name="test_role")

        location = LocationFactory.create()
        headers = self.headers()
        headers.update({"X-Location": location.id})

        user_data = dict(
            first_name=user.first_name,
            last_name=user.last_name,
            role_id=role.id,
            gender=user.gender,
            date_of_birth=str(user.date_of_birth),
            employment_date=str(user.employment_date),
            password=user.password,
            email=user.email,
            location_id=user.location_id,
        )

        response = self.client().post(
            self.make_url("/users/"),
            headers=headers,
            data=self.encode_to_json_string(user_data),
        )

        response_json = self.decode_from_json_string(response.data.decode("utf-8"))
        print(response_json)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response_json["msg"], "OK")
        self.assertEqual(
            response_json["payload"]["user"]["first_name"], user.first_name
        )
        self.assertEqual(response_json["payload"]["user"]["last_name"], user.last_name)
        self.assertEqual(
            response_json["payload"]["user"]["user_roles"][0]["name"], role.name
        )
        self.assertEqual(
            response_json["payload"]["user"]["user_roles"][0]["help"], role.help
        )
    def test_update_user_endpoint_succeeds(self):

        create_user_role('update_user')
        role = RoleFactory()
        user_role = UserRoleFactory(role=role)
        user_role.save()
        user = UserFactory(user_type=user_role)
        user.save()
        user_data = dict(firstName="Andela", lastName="Eats", roleId=role.id)

        response = self.client().patch(
            self.make_url(f'/users/{user.id}'),
            headers=self.headers(),
            data=self.encode_to_json_string(user_data)
        )

        response_json = self.decode_from_json_string(response.data.decode('utf-8'))

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response_json['msg'], 'OK')
        self.assertEqual(response_json['payload']['user']['firstName'], user.first_name)
        self.assertEqual(response_json['payload']['user']['lastName'], user.last_name)
Example #17
0
    def test_create_user_fails_for_existing_user(
        self,
        mock_user_role_repo_new_user_role,
        # mock_user_repo_new_user,
        mock_user_repo_exists,
        mock_role_repo_find_first,
        mock_request_params,
        mock_get_location,
    ):
        location = LocationFactory()
        role = RoleFactory(name="test_role")

        with self.app.app_context():
            mock_get_location.return_value = location.id
            mock_role_repo_find_first.return_value = self.mock_role
            mock_user_repo_exists.return_value = self.mock_user2
            # mock_user_repo_new_user.return_value = None
            mock_user_role_repo_new_user_role.return_value = self.mock_user_role
            mock_request_params.return_value = [
                "Joseph",
                "Serunjogi",
                self.mock_user2.email,
                role.id,
                "male",
                str(datetime.now()),
                1,
                "password",
            ]
            user_controller = UserController(self.request_context)

            # Act
            result = user_controller.create_user()
            print(result)
            print(result.get_json())
            # Assert
            assert result.status_code == 400
            assert (
                result.get_json()["msg"] ==
                f"User with email '{self.mock_user2.email}' already exists")
    def test_create_user_method_handles_user_creation_with_non_existent_role_id(
            self, mock_request_params):
        with self.app.app_context():
            user = UserFactory(user_id="-LXTuXlk2W4Gskt8KTte")
            role = RoleFactory(name='test_role')
            UserRoleFactory(role_id=role.id, user_id=user.id)

            non_existent_role_id = 100

            mock_request_params.return_value = [
                "Joseph", "Serunjogi", None, None, user.user_id,
                non_existent_role_id
            ]

            user_controller = UserController(self.request_context)

            response = user_controller.create_user()

            self.assertEqual(response.status_code, 400)
            self.assertEqual(
                response.get_json()['msg'],
                "Role with userTypeId(roleId) {} does not exist".format(
                    non_existent_role_id))
Example #19
0
    def test_create_user_succeeds(
        self,
        mock_user_role_repo_new_user_role,
        mock_user_repo_new_user,
        mock_user_repo_exists,
        mock_role_repo_find_first,
        mock_request_params,
        mock_get_location,
    ):
        location = LocationFactory()
        role = RoleFactory(name="test_role")

        with self.app.app_context():
            mock_get_location.return_value = location.id
            mock_role_repo_find_first.return_value = self.mock_role
            mock_user_repo_exists.return_value = None
            mock_user_repo_new_user.return_value = self.mock_user2
            mock_user_role_repo_new_user_role.return_value = self.mock_user_role
            mock_request_params.return_value = [
                "Joseph",
                "Serunjogi",
                "*****@*****.**",
                role.id,
                "male",
                str(datetime.now()),
                1,
                "password",
            ]
            user_controller = UserController(self.request_context)

            # Act
            result = user_controller.create_user()

            # Assert
            assert result.status_code == 201
            assert result.get_json()["msg"] == "OK"