added more tests
include img in manifest disclaimer in root cli script add blinker to dev tools version file included in package cli bug fixes
This commit is contained in:
parent
38e5ef85c0
commit
bf3b3d3d74
13 changed files with 178 additions and 120 deletions
|
@ -20,7 +20,7 @@ def cname_to_filename(cname):
|
|||
:return: str -- Filename
|
||||
|
||||
"""
|
||||
return cname.lower() + ".md"
|
||||
return cname + ".md"
|
||||
|
||||
|
||||
def filename_to_cname(filename):
|
||||
|
@ -71,25 +71,26 @@ class Wiki(HookMixin):
|
|||
|
||||
return username, email
|
||||
|
||||
def revert_page(self, name, commit_sha, message, username):
|
||||
def revert_page(self, name, commit_sha, message, username, email):
|
||||
"""Revert page to passed commit sha1
|
||||
|
||||
:param name: Name of page to revert.
|
||||
:param commit_sha: Commit Sha1 to revert to.
|
||||
:param message: Commit message.
|
||||
:param username:
|
||||
:param username: Committer name.
|
||||
:param email: Committer email.
|
||||
:return: Git commit sha1
|
||||
|
||||
"""
|
||||
page = self.get_page(name, commit_sha)
|
||||
if not page:
|
||||
raise PageNotFound()
|
||||
raise PageNotFound('Commit not found')
|
||||
|
||||
if not message:
|
||||
commit_info = gittle.utils.git.commit_info(self.gittle[commit_sha.encode('latin-1')])
|
||||
message = commit_info['message']
|
||||
|
||||
return self.write_page(name, page['data'], message=message, username=username)
|
||||
return self.write_page(name, page['data'], message=message, username=username, email=email)
|
||||
|
||||
def write_page(self, name, content, message=None, create=False, username=None, email=None):
|
||||
"""Write page to git repo
|
||||
|
|
|
@ -1,39 +1,72 @@
|
|||
import json
|
||||
from nose.tools import *
|
||||
from flask import url_for
|
||||
from realms.modules.wiki.models import Wiki, cname_to_filename, filename_to_cname
|
||||
from realms.modules.wiki.models import cname_to_filename, filename_to_cname
|
||||
from realms.lib.test import BaseTest
|
||||
|
||||
|
||||
class WikiTest(BaseTest):
|
||||
class WikiBaseTest(BaseTest):
|
||||
def write_page(self, name, message=None, content=None):
|
||||
return self.client.post(url_for('wiki.page_write', name=name),
|
||||
data=dict(message=message, content=content))
|
||||
|
||||
def test_wiki_routes(self):
|
||||
|
||||
self.assert_200(self.client.get(url_for("wiki.create")))
|
||||
|
||||
""" Create a test page first!
|
||||
for route in ['page', 'edit', 'history', 'index']:
|
||||
rv = self.client.get(url_for("wiki.%s" % route, name='test'))
|
||||
self.assert_200(rv, "wiki.%s: %s" % (route, rv.status_code))
|
||||
"""
|
||||
|
||||
def test_write_page(self):
|
||||
self.assert_200(
|
||||
self.client.post(url_for('wiki.page_write', name='test'), data=dict(
|
||||
content='testing',
|
||||
message='test message'
|
||||
)))
|
||||
|
||||
self.assert_200(self.client.get(url_for('wiki.page', name='test')))
|
||||
|
||||
def test_delete_page(self):
|
||||
self.assert_200(self.client.delete(url_for('wiki.page_write', name='test')))
|
||||
self.assert_status(self.client.get(url_for('wiki.page', name='test')), 302)
|
||||
|
||||
def test_revert(self):
|
||||
pass
|
||||
|
||||
class UtilTest(WikiBaseTest):
|
||||
def test_cname_to_filename(self):
|
||||
eq_(cname_to_filename('test'), 'test.md')
|
||||
|
||||
def test_filename_to_cname(self):
|
||||
eq_(filename_to_cname('test-1-2-3.md'), 'test-1-2-3')
|
||||
eq_(filename_to_cname('test-1-2-3.md'), 'test-1-2-3')
|
||||
|
||||
|
||||
class WikiTest(WikiBaseTest):
|
||||
def test_routes(self):
|
||||
self.assert_200(self.client.get(url_for("wiki.create")))
|
||||
self.write_page('test', message='test message', content='testing')
|
||||
|
||||
for route in ['page', 'edit', 'history']:
|
||||
rv = self.client.get(url_for("wiki.%s" % route, name='test'))
|
||||
self.assert_200(rv, "wiki.%s: %s" % (route, rv.status_code))
|
||||
|
||||
self.assert_200(self.client.get(url_for('wiki.index')))
|
||||
|
||||
def test_write_page(self):
|
||||
self.assert_200(self.write_page('test', message='test message', content='testing'))
|
||||
|
||||
rv = self.client.get(url_for('wiki.page', name='test'))
|
||||
self.assert_200(rv)
|
||||
|
||||
self.assert_context('name', 'test')
|
||||
eq_(self.get_context_variable('page')['info']['message'], 'test message')
|
||||
eq_(self.get_context_variable('page')['data'], 'testing')
|
||||
|
||||
def test_history(self):
|
||||
self.assert_200(self.client.get(url_for('wiki.history', name='test')))
|
||||
|
||||
def test_delete_page(self):
|
||||
self.app.config['WIKI_LOCKED_PAGES'] = ['test']
|
||||
self.assert_403(self.client.delete(url_for('wiki.page_write', name='test')))
|
||||
self.app.config['WIKI_LOCKED_PAGES'] = []
|
||||
|
||||
self.assert_200(self.client.delete(url_for('wiki.page_write', name='test')))
|
||||
|
||||
rv = self.client.get(url_for('wiki.page', name='test'))
|
||||
self.assert_status(rv, 302)
|
||||
|
||||
def test_revert(self):
|
||||
rv1 = self.write_page('test', message='test message', content='testing_old')
|
||||
self.write_page('test', message='test message', content='testing_new')
|
||||
data = json.loads(rv1.data)
|
||||
self.client.post(url_for('wiki.revert'), data=dict(name='test', commit=data['sha']))
|
||||
self.client.get(url_for('wiki.page', name='test'))
|
||||
eq_(self.get_context_variable('page')['data'], 'testing_old')
|
||||
self.assert_404(self.client.post(url_for('wiki.revert'), data=dict(name='test', commit='does not exist')))
|
||||
|
||||
self.app.config['WIKI_LOCKED_PAGES'] = ['test']
|
||||
self.assert_403(self.client.post(url_for('wiki.revert'), data=dict(name='test', commit=data['sha'])))
|
||||
self.app.config['WIKI_LOCKED_PAGES'] = []
|
||||
|
||||
|
||||
class RelativePathTest(WikiTest):
|
||||
def configure(self):
|
||||
return dict(RELATIVE_PATH='wiki')
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from flask import abort, g, render_template, request, redirect, Blueprint, flash, url_for, current_app
|
||||
from flask.ext.login import login_required, current_user
|
||||
from realms.lib.util import to_canonical, remove_ext
|
||||
|
||||
from .models import PageNotFound
|
||||
|
||||
blueprint = Blueprint('wiki', __name__)
|
||||
|
||||
|
@ -28,19 +28,22 @@ def compare(name, fsha, dots, lsha):
|
|||
@blueprint.route("/_revert", methods=['POST'])
|
||||
@login_required
|
||||
def revert():
|
||||
name = request.form.get('name')
|
||||
cname = to_canonical(request.form.get('name'))
|
||||
commit = request.form.get('commit')
|
||||
cname = to_canonical(name)
|
||||
message = request.form.get('message', "Reverting %s" % cname)
|
||||
|
||||
if cname in current_app.config.get('WIKI_LOCKED_PAGES'):
|
||||
return dict(error=True, message="Page is locked")
|
||||
return dict(error=True, message="Page is locked"), 403
|
||||
|
||||
try:
|
||||
sha = g.current_wiki.revert_page(cname,
|
||||
commit,
|
||||
message=message,
|
||||
username=current_user.username,
|
||||
email=current_user.email)
|
||||
except PageNotFound as e:
|
||||
return dict(error=True, message=e.message), 404
|
||||
|
||||
sha = g.current_wiki.revert_page(name,
|
||||
commit,
|
||||
message=message,
|
||||
username=current_user.username,
|
||||
email=current_user.email)
|
||||
if sha:
|
||||
flash("Page reverted")
|
||||
|
||||
|
@ -104,7 +107,7 @@ def page_write(name):
|
|||
if request.method == 'POST':
|
||||
# Create
|
||||
if cname in current_app.config.get('WIKI_LOCKED_PAGES'):
|
||||
return dict(error=True, message="Page is locked")
|
||||
return dict(error=True, message="Page is locked"), 403
|
||||
|
||||
sha = g.current_wiki.write_page(cname,
|
||||
request.form['content'],
|
||||
|
@ -117,7 +120,7 @@ def page_write(name):
|
|||
edit_cname = to_canonical(request.form['name'])
|
||||
|
||||
if edit_cname in current_app.config.get('WIKI_LOCKED_PAGES'):
|
||||
return dict(error=True, message="Page is locked")
|
||||
return dict(error=True, message="Page is locked"), 403
|
||||
|
||||
if edit_cname != cname.lower():
|
||||
g.current_wiki.rename_page(cname, edit_cname)
|
||||
|
@ -132,6 +135,9 @@ def page_write(name):
|
|||
|
||||
else:
|
||||
# DELETE
|
||||
if cname in current_app.config.get('WIKI_LOCKED_PAGES'):
|
||||
return dict(error=True, message="Page is locked"), 403
|
||||
|
||||
sha = g.current_wiki.delete_page(name,
|
||||
username=current_user.username,
|
||||
email=current_user.email)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue