def test_files_should_have_correct_attributes(self): """Files should have url and filename params""" self.installer.content = json.dumps( {'files': [{ 'file1': { 'foo': 'bar' } }, { 'file2': 'http://bar' }]}) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid) self.installer.content = json.dumps({ 'files': [{ 'file1': { 'url': 'http://foo', 'filename': 'foo' } }, { 'file2': 'http://bar' }] }) is_valid, _errors = validate_installer(self.installer) self.assertTrue(is_valid)
def test_task_have_names(self): self.installer.content = json.dumps({ 'installer': [{ 'task': { 'name': 'create_prefix' } }, { 'task': { 'name': 'winetricks', 'app': 'directx9' } }] }) is_valid, _errors = validate_installer(self.installer) self.assertTrue(is_valid) self.installer.content = json.dumps({ 'installer': [{ 'task': { 'name': 'create_prefix' } }, { 'task': { 'app': 'directx9' } }] }) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid) self.assertIn('name', _errors[0])
def test_game_should_be_a_dict(self): self.installer.content = json.dumps({'game': ['foo', 'bar']}) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid) self.installer.content = json.dumps({'game': {'foo': 'bar', 'bar': 'foo'}}) is_valid, _errors = validate_installer(self.installer) self.assertTrue(is_valid)
def test_game_should_be_a_dict(self): self.installer.content = json.dumps({'game': ['foo', 'bar']}) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid) self.installer.content = json.dumps( {'game': { 'foo': 'bar', 'bar': 'foo' }}) is_valid, _errors = validate_installer(self.installer) self.assertTrue(is_valid)
def test_task_have_names(self): self.installer.content = json.dumps({'installer': [ {'task': {'name': 'create_prefix'}}, {'task': {'name': 'winetricks', 'app': 'directx9'}} ]}) is_valid, _errors = validate_installer(self.installer) self.assertTrue(is_valid) self.installer.content = json.dumps({'installer': [ {'task': {'name': 'create_prefix'}}, {'task': {'app': 'directx9'}} ]}) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid) self.assertIn('name', _errors[0])
def test_files_should_have_correct_attributes(self): """Files should have url and filename params""" self.installer.content = json.dumps({'files': [ {'file1': {'foo': 'bar'}}, {'file2': 'http://bar'} ]}) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid) self.installer.content = json.dumps({'files': [ {'file1': {'url': 'http://foo', 'filename': 'foo'}}, {'file2': 'http://bar'} ]}) is_valid, _errors = validate_installer(self.installer) self.assertTrue(is_valid)
def test_files_should_be_unique(self): self.installer.content = json.dumps({'files': [ {'file1': 'http://foo'}, {'file1': 'http://bar'}, ]}) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid, 'Files should be unique')
def test_scummvm_script_requires_game_id(self): script = json.dumps({'game': {}}) installer = Installer(runner=Runner(name="ScummVM", slug='scummvm'), content=script) is_valid, errors = validate_installer(installer) self.assertFalse(is_valid, errors) self.assertIn( "ScummVM game should have a " "game identifier in the 'game' section", errors)
def test_scummvm_script_requires_game_id(self): script = json.dumps({'game': {}}) installer = Installer( runner=Runner(name="ScummVM", slug='scummvm'), content=script ) is_valid, errors = validate_installer(installer) self.assertFalse(is_valid, errors) self.assertIn("ScummVM game should have a " "game identifier in the 'game' section", errors)
def test_files_should_be_unique(self): self.installer.content = json.dumps( {'files': [ { 'file1': 'http://foo' }, { 'file1': 'http://bar' }, ]}) is_valid, _errors = validate_installer(self.installer) self.assertFalse(is_valid, 'Files should be unique')
def clean(self): dummy_installer = models.Installer(game=self.instance.game, **self.cleaned_data) is_valid, errors = validate_installer(dummy_installer) if not is_valid: if "content" not in self.errors: self.errors["content"] = [] for error in errors: self.errors["content"].append(error) raise forms.ValidationError("Invalid installer script") # Draft status depends on the submit button clicked self.cleaned_data["draft"] = "save" in self.data return self.cleaned_data
def clean(self): dummy_installer = models.Installer(game=self.instance.game, **self.cleaned_data) is_valid, errors = validate_installer(dummy_installer) if not is_valid: if "content" not in self.errors: self.errors["content"] = [] for error in errors: self.errors["content"].append(error) raise forms.ValidationError("Invalid installer script") else: # Draft status depends on the submit button clicked self.cleaned_data["draft"] = "save" in self.data return self.cleaned_data
def test_files_should_be_list(self): self.installer.content = json.dumps({'files': []}) is_valid, errors = validate_installer(self.installer) self.assertTrue(is_valid, errors)
def test_files_must_not_be_dict(self): self.installer.content = json.dumps({'files': {}}) is_valid, errors = validate_installer(self.installer) self.assertFalse(is_valid, errors)