diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php
index 4ed10d61e..623cb9c4d 100644
--- a/app/Http/Controllers/PageController.php
+++ b/app/Http/Controllers/PageController.php
@@ -369,10 +369,13 @@ class PageController extends Controller
     public function showRevision($bookSlug, $pageSlug, $revisionId)
     {
         $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
-        $revision = $this->entityRepo->getById('page_revision', $revisionId, false);
+        $revision = $page->revisions()->where('id', '=', $revisionId)->first();
+        if ($revision === null) {
+            abort(404);
+        }
 
         $page->fill($revision->toArray());
-        $this->setPageTitle(trans('entities.pages_revision_named', ['pageName'=>$page->getShortName()]));
+        $this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
         
         return view('pages/revision', [
             'page' => $page,
@@ -390,7 +393,10 @@ class PageController extends Controller
     public function showRevisionChanges($bookSlug, $pageSlug, $revisionId)
     {
         $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
-        $revision = $this->entityRepo->getById('page_revision', $revisionId);
+        $revision = $page->revisions()->where('id', '=', $revisionId)->first();
+        if ($revision === null) {
+            abort(404);
+        }
 
         $prev = $revision->getPrevious();
         $prevContent = ($prev === null) ? '' : $prev->html;
diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php
index 8a8740d76..7b262c3de 100644
--- a/app/Repos/EntityRepo.php
+++ b/app/Repos/EntityRepo.php
@@ -86,8 +86,7 @@ class EntityRepo
         $this->entities = [
             'page' => $this->page,
             'chapter' => $this->chapter,
-            'book' => $this->book,
-            'page_revision' => $this->pageRevision
+            'book' => $this->book
         ];
         $this->viewService = $viewService;
         $this->permissionService = $permissionService;
diff --git a/tests/Entity/PageContentTest.php b/tests/Entity/PageContentTest.php
index 4f65d3406..6f07b9626 100644
--- a/tests/Entity/PageContentTest.php
+++ b/tests/Entity/PageContentTest.php
@@ -1,33 +1,56 @@
 <?php namespace Tests;
 
-class PageContentTest extends BrowserKitTest
+use BookStack\Page;
+use BookStack\Repos\EntityRepo;
+
+class PageContentTest extends TestCase
 {
 
     public function test_page_includes()
     {
-        $page = \BookStack\Page::first();
-        $secondPage = \BookStack\Page::all()->get(2);
+        $page = Page::first();
+        $secondPage = Page::all()->get(2);
 
         $secondPage->html = "<p id='section1'>Hello, This is a test</p><p id='section2'>This is a second block of content</p>";
         $secondPage->save();
 
-        $this->asAdmin()->visit($page->getUrl())
-            ->dontSee('Hello, This is a test');
+        $this->asEditor();
+
+        $pageContent = $this->get($page->getUrl());
+        $pageContent->assertDontSee('Hello, This is a test');
 
         $originalHtml = $page->html;
         $page->html .= "{{@{$secondPage->id}}}";
         $page->save();
 
-        $this->asAdmin()->visit($page->getUrl())
-            ->see('Hello, This is a test')
-            ->see('This is a second block of content');
+        $pageContent = $this->get($page->getUrl());
+        $pageContent->assertSee('Hello, This is a test');
+        $pageContent->assertSee('This is a second block of content');
 
         $page->html = $originalHtml . " Well {{@{$secondPage->id}#section2}}";
         $page->save();
 
-        $this->asAdmin()->visit($page->getUrl())
-            ->dontSee('Hello, This is a test')
-            ->see('Well This is a second block of content');
+        $pageContent = $this->get($page->getUrl());
+        $pageContent->assertDontSee('Hello, This is a test');
+        $pageContent->assertSee('Well This is a second block of content');
+    }
+
+    public function test_page_revision_views_viewable()
+    {
+        $this->asEditor();
+
+        $entityRepo = $this->app[EntityRepo::class];
+        $page = Page::first();
+        $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
+        $pageRevision = $page->revisions->last();
+
+        $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
+        $revisionView->assertStatus(200);
+        $revisionView->assertSee('new content');
+
+        $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id . '/changes');
+        $revisionView->assertStatus(200);
+        $revisionView->assertSee('new content');
     }
 
 }
diff --git a/tests/PublicActionTest.php b/tests/PublicActionTest.php
index 62a321b5e..6f8590d4b 100644
--- a/tests/PublicActionTest.php
+++ b/tests/PublicActionTest.php
@@ -84,7 +84,7 @@ class PublicActionTest extends BrowserKitTest
     {
         $page = \BookStack\Page::first();
         $this->asAdmin()->visit($page->getUrl());
-        Auth::logout();
+        \Auth::logout();
         view()->share('pageTitle', '');
         $this->forceVisit('/cats/dogs/hippos');
         $this->dontSee($page->name);
diff --git a/tests/TestCase.php b/tests/TestCase.php
index d64aef3db..f3f36ca1c 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -13,6 +13,7 @@ abstract class TestCase extends BaseTestCase
     use DatabaseTransactions;
 
     protected $admin;
+    protected $editor;
 
     /**
      * Set the current user context to be an admin.
@@ -35,6 +36,28 @@ abstract class TestCase extends BaseTestCase
         return $this->admin;
     }
 
+    /**
+     * Set the current user context to be an editor.
+     * @return $this
+     */
+    public function asEditor()
+    {
+        return $this->actingAs($this->getEditor());
+    }
+
+
+    /**
+     * Get a editor user.
+     * @return mixed
+     */
+    public function getEditor() {
+        if($this->editor === null) {
+            $editorRole = Role::getRole('editor');
+            $this->editor = $editorRole->users->first();
+        }
+        return $this->editor;
+    }
+
     /**
      * Create and return a new book.
      * @param array $input