Exemplo n.º 1
0
 def setUp(self):
     self.cookie_handler = MagicMock()
     self.psswd_mngr = ProjectPasswdManager(self.cookie_handler)
     self.project = MagicMock()
Exemplo n.º 2
0
class TestProjectPasswdManager(object):
    """Unit tests for class ProjectPasswdManager methods"""

    def setUp(self):
        self.cookie_handler = MagicMock()
        self.psswd_mngr = ProjectPasswdManager(self.cookie_handler)
        self.project = MagicMock()

    def tearDown(self):
        self.cookie_handler = None
        self.psswd_mngr = None
        self.project = None


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_anon_passwd_no_ip(self, mock_user):
        """Test password_needed should return True for an anonymous user and
        a project with password, if the cookie does not contain the user IP"""
        mock_user.is_anonymous = True
        mock_user.admin = False
        self.cookie_handler.get_cookie_from.return_value = {}
        self.project.needs_password.return_value = True
        user_ip = '127.0.0.1'

        password_needed = self.psswd_mngr.password_needed(self.project, user_ip)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is True, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_anon_passwd_ip(self, mock_user):
        """Test password_needed should return False for an anonymous user and
        a project with password, if the cookie contains the user IP"""
        mock_user.is_anonymous = True
        mock_user.admin = False
        self.cookie_handler.get_cookie_from.return_value = ['127.0.0.1']
        self.project.needs_password.return_value = True
        user_ip = '127.0.0.1'

        password_needed = self.psswd_mngr.password_needed(self.project, user_ip)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_anon_no_passwd(self, mock_user):
        """Test password_needed should return False for an anonymous user and
        a project without password"""
        mock_user.is_anonymous = True
        mock_user.admin = False
        self.project.needs_password.return_value = False
        user_ip = '127.0.0.1'

        password_needed = self.psswd_mngr.password_needed(self.project, user_ip)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_auth_passwd_no_id(self, mock_user):
        """Test password_needed should return True for an authenticated user and
        a project with password, if the cookie does not contain the user id"""
        mock_user.is_anonymous = False
        mock_user.admin = False
        mock_user.subadmin = False
        mock_user.id = 2
        self.cookie_handler.get_cookie_from.return_value = {}
        self.project.needs_password.return_value = True

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is True, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_auth_passwd_ip(self, mock_user):
        """Test password_needed should return False for an authenticated user and
        a project with password, if the cookie contains the user id"""
        mock_user.is_anonymous = False
        mock_user.admin = False
        mock_user.subadmin = False
        mock_user.id = 2
        self.cookie_handler.get_cookie_from.return_value = [2]
        self.project.needs_password.return_value = True

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_auth_no_passwd(self, mock_user):
        """Test password_needed should return False for an authenticated user and
        a project without password"""
        mock_user.is_anonymous = False
        mock_user.admin = False
        mock_user.id = 2
        self.project.needs_password.return_value = False

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_owner_no_passwd(self, mock_user):
        """Test password_needed returns False for project owner if it has no
        password"""
        mock_user.is_anonymous = False
        mock_user.admin = False
        mock_user.id = 2
        self.project.needs_password.return_value = False
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_owner_passwd(self, mock_user):
        """Test password_needed returns False for project owner even it has a
        password"""
        mock_user.is_anonymous = False
        mock_user.admin = False
        mock_user.id = 2
        self.project.needs_password.return_value = True
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_admin_no_passwd(self, mock_user):
        """Test password_needed returns False for admins if project has no
        password"""
        mock_user.is_anonymous = False
        mock_user.admin = True
        mock_user.id = 1
        self.project.needs_password.return_value = False
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_admin_passwd(self, mock_user):
        """Test password_needed returns False for admins even project has
        a password"""
        mock_user.is_anonymous = False
        mock_user.admin = True
        mock_user.id = 1
        self.project.needs_password.return_value = True
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    def test_validates(self):
        """Test validates tells the project to check the password"""
        password = '******'

        self.psswd_mngr.validates(password, self.project)

        self.project.check_password.assert_called_with(password)


    def test_update_response(self):
        """Test update_response tells the cookie handler to update the response
        with the project and user info"""
        user = MagicMock()
        response = MagicMock()

        self.psswd_mngr.update_response(response, self.project, user)

        self.cookie_handler.add_cookie_to.assert_called_with(response, self.project, user)
Exemplo n.º 3
0
class TestProjectPasswdManager(object):
    """Unit tests for class ProjectPasswdManager methods"""

    def setUp(self):
        self.cookie_handler = MagicMock()
        self.psswd_mngr = ProjectPasswdManager(self.cookie_handler)
        self.project = MagicMock()

    def tearDown(self):
        self.cookie_handler = None
        self.psswd_mngr = None
        self.project = None


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_anon_passwd_no_ip(self, mock_user):
        """Test password_needed should return True for an anonymous user and
        a project with password, if the cookie does not contain the user IP"""
        mock_user.is_anonymous.return_value = True
        mock_user.admin = False
        self.cookie_handler.get_cookie_from.return_value = []
        self.project.needs_password.return_value = True
        user_ip = '127.0.0.1'

        password_needed = self.psswd_mngr.password_needed(self.project, user_ip)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is True, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_anon_passwd_ip(self, mock_user):
        """Test password_needed should return False for an anonymous user and
        a project with password, if the cookie contains the user IP"""
        mock_user.is_anonymous.return_value = True
        mock_user.admin = False
        self.cookie_handler.get_cookie_from.return_value = ['127.0.0.1']
        self.project.needs_password.return_value = True
        user_ip = '127.0.0.1'

        password_needed = self.psswd_mngr.password_needed(self.project, user_ip)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_anon_no_passwd(self, mock_user):
        """Test password_needed should return False for an anonymous user and
        a project without password"""
        mock_user.is_anonymous.return_value = True
        mock_user.admin = False
        self.project.needs_password.return_value = False
        user_ip = '127.0.0.1'

        password_needed = self.psswd_mngr.password_needed(self.project, user_ip)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_auth_passwd_no_id(self, mock_user):
        """Test password_needed should return True for an authenticated user and
        a project with password, if the cookie does not contain the user id"""
        mock_user.is_anonymous.return_value = False
        mock_user.admin = False
        mock_user.id = 2
        self.cookie_handler.get_cookie_from.return_value = []
        self.project.needs_password.return_value = True

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is True, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_auth_passwd_ip(self, mock_user):
        """Test password_needed should return False for an authenticated user and
        a project with password, if the cookie contains the user id"""
        mock_user.is_anonymous.return_value = False
        mock_user.admin = False
        mock_user.id = 2
        self.cookie_handler.get_cookie_from.return_value = [2]
        self.project.needs_password.return_value = True

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        self.cookie_handler.get_cookie_from.assert_called_with(self.project)
        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_auth_no_passwd(self, mock_user):
        """Test password_needed should return False for an authenticated user and
        a project without password"""
        mock_user.is_anonymous.return_value = False
        mock_user.admin = False
        mock_user.id = 2
        self.project.needs_password.return_value = False

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_owner_no_passwd(self, mock_user):
        """Test password_needed returns False for project owner if it has no
        password"""
        mock_user.is_anonymous.return_value = False
        mock_user.admin = False
        mock_user.id = 2
        self.project.needs_password.return_value = False
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_owner_passwd(self, mock_user):
        """Test password_needed returns False for project owner even it has a
        password"""
        mock_user.is_anonymous.return_value = False
        mock_user.admin = False
        mock_user.id = 2
        self.project.needs_password.return_value = True
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_admin_no_passwd(self, mock_user):
        """Test password_needed returns False for admins if project has no
        password"""
        mock_user.is_anonymous.return_value = False
        mock_user.admin = True
        mock_user.id = 1
        self.project.needs_password.return_value = False
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    @patch('pybossa.password_manager.current_user')
    def test_password_needed_admin_passwd(self, mock_user):
        """Test password_needed returns False for admins even project has
        a password"""
        mock_user.is_anonymous.return_value = False
        mock_user.admin = True
        mock_user.id = 1
        self.project.needs_password.return_value = True
        self.project.owners_ids = [2]

        password_needed = self.psswd_mngr.password_needed(self.project, mock_user.id)

        assert password_needed is False, password_needed


    def test_validates(self):
        """Test validates tells the project to check the password"""
        password = '******'

        self.psswd_mngr.validates(password, self.project)

        self.project.check_password.assert_called_with(password)


    def test_update_response(self):
        """Test update_response tells the cookie handler to update the response
        with the project and user info"""
        user = MagicMock()
        response = MagicMock()

        self.psswd_mngr.update_response(response, self.project, user)

        self.cookie_handler.add_cookie_to.assert_called_with(response, self.project, user)
Exemplo n.º 4
0
 def setUp(self):
     self.cookie_handler = MagicMock()
     self.psswd_mngr = ProjectPasswdManager(self.cookie_handler)
     self.project = MagicMock()
Exemplo n.º 5
0
def get_pwd_manager(project):
    timeout = project.info.get('timeout')
    cookie_timeout = max(timeout, ContributionsGuard.STAMP_TTL)
    cookie_handler = CookieHandler(request, signer, cookie_timeout)
    pwd_manager = ProjectPasswdManager(cookie_handler)
    return pwd_manager