##// END OF EJS Templates
codingstyle: trivial whitespace fixes...
codingstyle: trivial whitespace fixes Reported by flake8.

File last commit:

r6789:76912908 default
r6789:76912908 default
Show More
test_admin_gists.py
171 lines | 7.4 KiB | text/x-python | PythonLexer
from kallithea.tests.base import *
from kallithea.model.gist import GistModel
from kallithea.model.meta import Session
from kallithea.model.db import User, Gist
def _create_gist(f_name, content='some gist', lifetime=-1,
description=u'gist-desc', gist_type='public',
owner=TEST_USER_ADMIN_LOGIN):
gist_mapping = {
f_name: {'content': content}
}
owner = User.get_by_username(owner)
gist = GistModel().create(description, owner=owner,
gist_mapping=gist_mapping, gist_type=gist_type,
lifetime=lifetime)
Session().commit()
return gist
class TestGistsController(TestController):
def teardown_method(self, method):
for g in Gist.query():
GistModel().delete(g)
Session().commit()
def test_index(self):
self.log_user()
response = self.app.get(url('gists'))
# Test response...
response.mustcontain('There are no gists yet')
g1 = _create_gist('gist1').gist_access_id
g2 = _create_gist('gist2', lifetime=1400).gist_access_id
g3 = _create_gist('gist3', description=u'gist3-desc').gist_access_id
g4 = _create_gist('gist4', gist_type='private').gist_access_id
response = self.app.get(url('gists'))
# Test response...
response.mustcontain('gist: %s' % g1)
response.mustcontain('gist: %s' % g2)
response.mustcontain('Expires: in 23 hours') # we don't care about the end
response.mustcontain('gist: %s' % g3)
response.mustcontain('gist3-desc')
response.mustcontain(no=['gist: %s' % g4])
def test_index_private_gists(self):
self.log_user()
gist = _create_gist('gist5', gist_type='private')
response = self.app.get(url('gists', private=1))
# Test response...
# and privates
response.mustcontain('gist: %s' % gist.gist_access_id)
def test_create_missing_description(self):
self.log_user()
response = self.app.post(url('gists'),
params={'lifetime': -1, '_authentication_token': self.authentication_token()},
status=200)
response.mustcontain('Missing value')
def test_create(self):
self.log_user()
response = self.app.post(url('gists'),
params={'lifetime': -1,
'content': 'gist test',
'filename': 'foo',
'public': 'public',
'_authentication_token': self.authentication_token()},
status=302)
response = response.follow()
response.mustcontain('added file: foo')
response.mustcontain('gist test')
response.mustcontain('<div class="label label-success">Public Gist</div>')
def test_create_with_path_with_dirs(self):
self.log_user()
response = self.app.post(url('gists'),
params={'lifetime': -1,
'content': 'gist test',
'filename': '/home/foo',
'public': 'public',
'_authentication_token': self.authentication_token()},
status=200)
response.mustcontain('Filename cannot be inside a directory')
def test_access_expired_gist(self):
self.log_user()
gist = _create_gist('never-see-me')
gist.gist_expires = 0 # 1970
Session().commit()
response = self.app.get(url('gist', gist_id=gist.gist_access_id), status=404)
def test_create_private(self):
self.log_user()
response = self.app.post(url('gists'),
params={'lifetime': -1,
'content': 'private gist test',
'filename': 'private-foo',
'private': 'private',
'_authentication_token': self.authentication_token()},
status=302)
response = response.follow()
response.mustcontain('added file: private-foo<')
response.mustcontain('private gist test')
response.mustcontain('<div class="label label-warning">Private Gist</div>')
def test_create_with_description(self):
self.log_user()
response = self.app.post(url('gists'),
params={'lifetime': -1,
'content': 'gist test',
'filename': 'foo-desc',
'description': 'gist-desc',
'public': 'public',
'_authentication_token': self.authentication_token()},
status=302)
response = response.follow()
response.mustcontain('added file: foo-desc')
response.mustcontain('gist test')
response.mustcontain('gist-desc')
response.mustcontain('<div class="label label-success">Public Gist</div>')
def test_new(self):
self.log_user()
response = self.app.get(url('new_gist'))
def test_delete(self):
self.log_user()
gist = _create_gist('delete-me')
response = self.app.post(url('gist_delete', gist_id=gist.gist_id),
params={'_authentication_token': self.authentication_token()})
def test_delete_normal_user_his_gist(self):
self.log_user(TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
gist = _create_gist('delete-me', owner=TEST_USER_REGULAR_LOGIN)
response = self.app.post(url('gist_delete', gist_id=gist.gist_id),
params={'_authentication_token': self.authentication_token()})
def test_delete_normal_user_not_his_own_gist(self):
self.log_user(TEST_USER_REGULAR_LOGIN, TEST_USER_REGULAR_PASS)
gist = _create_gist('delete-me')
response = self.app.post(url('gist_delete', gist_id=gist.gist_id), status=403,
params={'_authentication_token': self.authentication_token()})
def test_show(self):
gist = _create_gist('gist-show-me')
response = self.app.get(url('gist', gist_id=gist.gist_access_id))
response.mustcontain('added file: gist-show-me<')
response.mustcontain('%s - created' % TEST_USER_ADMIN_LOGIN)
response.mustcontain('gist-desc')
response.mustcontain('<div class="label label-success">Public Gist</div>')
def test_show_as_raw(self):
gist = _create_gist('gist-show-me', content='GIST CONTENT')
response = self.app.get(url('formatted_gist',
gist_id=gist.gist_access_id, format='raw'))
assert response.body == 'GIST CONTENT'
def test_show_as_raw_individual_file(self):
gist = _create_gist('gist-show-me-raw', content='GIST BODY')
response = self.app.get(url('formatted_gist_file',
gist_id=gist.gist_access_id, format='raw',
revision='tip', f_path='gist-show-me-raw'))
assert response.body == 'GIST BODY'
def test_edit(self):
response = self.app.get(url('edit_gist', gist_id=1))