class TestProjectRegistrationProvider(object): def setUp(self): self.provider = ProjectRegistrationProvider() @patch('allura.lib.security.has_access') def test_validate_project_15char_user(self, has_access): has_access.return_value = TruthyCallable(lambda: True) nbhd = M.Neighborhood() self.provider.validate_project( neighborhood=nbhd, shortname='u/' + ('a' * 15), project_name='15 char username', user=MagicMock(), user_project=True, private_project=False, ) @patch('allura.model.Project') def test_shortname_validator(self, Project): Project.query.get.return_value = None nbhd = Mock() v = self.provider.shortname_validator.to_python v('thisislegit', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'not valid', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'this-is-valid-but-too-long', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'this is invalid and too long', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'end-dash-', neighborhood=nbhd) Project.query.get.return_value = Mock() assert_raises(ProjectConflict, v, 'thisislegit', neighborhood=nbhd)
class TestProjectRegistrationProvider(object): def setUp(self): self.provider = ProjectRegistrationProvider() @patch('allura.lib.security.has_access') def test_validate_project_15char_user(self, has_access): has_access.return_value = TruthyCallable(lambda: True) nbhd = M.Neighborhood() self.provider.validate_project( neighborhood=nbhd, shortname='u/' + ('a' * 15), project_name='15 char username', user=MagicMock(), user_project=True, private_project=False, ) @patch('allura.model.Project') def test_shortname_validator(self, Project): Project.query.get.return_value = None nbhd = Mock() v = self.provider.shortname_validator.to_python v('thisislegit', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'not valid', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'this-is-valid-but-too-long', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'this is invalid and too long', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'end-dash-', neighborhood=nbhd) Project.query.get.return_value = Mock() assert_raises(ProjectConflict, v, 'thisislegit', neighborhood=nbhd)
def test_validate_project_15char_user(self, has_access): has_access.return_value = TruthyCallable(lambda: True) provider = ProjectRegistrationProvider() nbhd = M.Neighborhood() provider.validate_project( neighborhood=nbhd, shortname='u/' + ('a' * 15), project_name='15 char username', user=MagicMock(), user_project=True, private_project=False, )
class TestProjectRegistrationProvider(object): def setUp(self): self.provider = ProjectRegistrationProvider() @patch('allura.lib.security.has_access') def test_validate_project_15char_user(self, has_access): has_access.return_value = TruthyCallable(lambda: True) nbhd = M.Neighborhood() self.provider.validate_project( neighborhood=nbhd, shortname='u/' + ('a' * 15), project_name='15 char username', user=MagicMock(), user_project=True, private_project=False, ) def test_suggest_name(self): f = self.provider.suggest_name assert_equals(f('A More Than Fifteen Character Name', Mock()), 'amorethanfifteencharactername') def test_valid_project_shortname(self): f = self.provider.valid_project_shortname p = Mock() valid = (True, None) invalid = (False, 'Please use only letters, numbers, and dashes ' '3-15 characters long.') assert_equals(f('thisislegit', p), valid) assert_equals(f('not valid', p), invalid) assert_equals(f('this-is-valid-but-too-long', p), invalid) assert_equals(f('this is invalid and too long', p), invalid) def test_allowed_project_shortname(self): allowed = valid = (True, None) invalid = (False, 'invalid') taken = (False, 'This project name is taken.') cases = [ (valid, False, allowed), (invalid, False, invalid), (valid, True, taken), ] p = Mock() vps = self.provider.valid_project_shortname = Mock() nt = self.provider._name_taken = Mock() f = self.provider.allowed_project_shortname for vps_v, nt_v, result in cases: vps.return_value = vps_v nt.return_value = nt_v assert_equals(f('project', p), result)
class TestProjectRegistrationProvider(object): def setUp(self): self.provider = ProjectRegistrationProvider() @patch('allura.lib.security.has_access') def test_validate_project_15char_user(self, has_access): has_access.return_value = TruthyCallable(lambda: True) nbhd = M.Neighborhood() self.provider.validate_project( neighborhood=nbhd, shortname='u/' + ('a' * 15), project_name='15 char username', user=MagicMock(), user_project=True, private_project=False, ) def test_suggest_name(self): f = self.provider.suggest_name assert_equals(f('Foo Bar', Mock()), 'foo-bar') assert_equals(f('A More Than Fifteen Character Name', Mock()), 'a-more-than-fifteen-character-name') assert_equals(f('foo! bar?.. the great!!', Mock()), 'foo-bar-the-great') @patch('allura.model.Project') def test_shortname_validator(self, Project): Project.query.get.return_value = None nbhd = Mock() v = self.provider.shortname_validator.to_python v('thisislegit', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'not valid', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'this-is-valid-but-too-long', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'this is invalid and too long', neighborhood=nbhd) assert_raises(ProjectShortnameInvalid, v, 'end-dash-', neighborhood=nbhd) Project.query.get.return_value = Mock() assert_raises(ProjectConflict, v, 'thisislegit', neighborhood=nbhd)