Index: tests/xmlrpc/wp/editPost.php
===================================================================
--- tests/xmlrpc/wp/editPost.php	(revision 1007)
+++ tests/xmlrpc/wp/editPost.php	(working copy)
@@ -221,4 +221,63 @@
 		$this->assertFalse( is_sticky( $post_id ) );
 	}
 
+	function test_only_if_modified_since() {
+		$editor_id = $this->make_user_by_role( 'editor' );
+
+		$post = array(
+			'post_title' => 'Post Revision Test',
+			'post_author' => $editor_id,
+			'post_status' => 'publish',
+			'post_date'  => strftime("%Y-%m-%d %H:%M:%S", strtotime( '-1 day' ) ),
+		);
+		$post_id = wp_insert_post( $post );
+
+		$revision_date = new IXR_Date( mysql2date( 'Ymd\TH:i:s', 'now', false ) );
+		$post2 = array( 'post_content' => 'Edit #3', 'only_if_modified_since' => $revision_date );
+		$result = $this->myxmlrpcserver->wp_editPost( array( 1, 'editor', 'editor', $post_id, $post2 ) );
+		$this->assertNotInstanceOf( 'IXR_Error', $result );
+
+		$revision_date = new IXR_Date( mysql2date( 'Ymd\TH:i:s', $post['post_date'], false ) );
+		$post2 = array( 'post_content' => 'Edit #4', 'only_if_modified_since' => $revision_date );
+		$result = $this->myxmlrpcserver->wp_editPost( array( 1, 'editor', 'editor', $post_id, $post2 ) );
+		$this->assertInstanceOf( 'IXR_Error', $result );
+		$this->assertEquals( 409, $result->code );
+	}
 }
Index: tests/xmlrpc/wp/restoreRevision.php
===================================================================
--- tests/xmlrpc/wp/restoreRevision.php	(revision 0)
+++ tests/xmlrpc/wp/restoreRevision.php	(revision 0)
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @group xmlrpc
+ */
+class Tests_XMLRPC_wp_restoreRevision extends WP_XMLRPC_UnitTestCase {
+	var $post_id;
+	var $revision_id;
+
+	function setUp() {
+		parent::setUp();
+
+		$post_data = array(
+			'post_title' => rand_str(),
+			'post_content' => 'edit1'
+		);
+		$this->post_id = wp_insert_post( $post_data );
+		$post_data = get_post( $this->post_id, ARRAY_A );
+		$post_data['post_content'] = 'edit2';
+		wp_update_post( $post_data );
+		$revisions = wp_get_post_revisions( $this->post_id );
+		$revision = array_shift( $revisions );
+		$this->revision_id = $revision->ID;
+
+	}
+
+	function test_invalid_username_password() {
+		$result = $this->myxmlrpcserver->wp_restoreRevision( array( 1, 'username', 'password', $this->revision_id ) );
+		$this->assertInstanceOf( 'IXR_Error', $result );
+		$this->assertEquals( 403, $result->code );
+	}
+
+	function test_incapable_user() {
+		$this->make_user_by_role( 'subscriber' );
+
+		$result = $this->myxmlrpcserver->wp_restoreRevision( array( 1, 'subscriber', 'subscriber', $this->revision_id ) );
+		$this->assertInstanceOf( 'IXR_Error', $result );
+		$this->assertEquals( 401, $result->code );
+	}
+
+	function test_capable_user() {
+		$this->make_user_by_role( 'editor' );
+
+		$result = $this->myxmlrpcserver->wp_restoreRevision( array( 1, 'editor', 'editor', $this->revision_id ) );
+		$this->assertNotInstanceOf( 'IXR_Error', $result );
+	}
+
+	function test_revision_restored() {
+		$this->make_user_by_role( 'editor' );
+
+		$result = $this->myxmlrpcserver->wp_restoreRevision( array( 1, 'editor', 'editor', $this->revision_id ) );
+		$post = get_post( $this->post_id, ARRAY_A );
+		$this->assertEquals( true, $result );
+		$this->assertEquals( 'edit1', $post['post_content'] );
+	}
+}
+
+
Index: tests/xmlrpc/wp/getRevisions.php
===================================================================
--- tests/xmlrpc/wp/getRevisions.php	(revision 0)
+++ tests/xmlrpc/wp/getRevisions.php	(revision 0)
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @group xmlrpc
+ */
+class Tests_XMLRPC_wp_getRevisions extends WP_XMLRPC_UnitTestCase {
+
+	function test_invalid_username_password() {
+		$result = $this->myxmlrpcserver->wp_getRevisions( array( 1, 'username', 'password', 0 ) );
+		$this->assertInstanceOf( 'IXR_Error', $result );
+		$this->assertEquals( 403, $result->code );
+	}
+
+	function test_incapable_user() {
+		$this->make_user_by_role( 'subscriber' );
+
+		$result = $this->myxmlrpcserver->wp_getRevisions( array( 1, 'subscriber', 'subscriber', 0 ) );
+		$this->assertInstanceOf( 'IXR_Error', $result );
+		$this->assertEquals( 401, $result->code );
+	}
+
+	function test_capable_user() {
+		$this->make_user_by_role( 'editor' );
+
+		$result = $this->myxmlrpcserver->wp_getRevisions( array( 1, 'editor', 'editor', 0 ) );
+		$this->assertNotInstanceOf( 'IXR_Error', $result );
+	}
+
+	function test_revision_count() {
+		$this->make_user_by_role( 'editor' );
+
+		$post = array( 'post_title' => 'Post test' );
+		$post_id = wp_insert_post( $post );
+
+		$result = $this->myxmlrpcserver->wp_getRevisions( array( 1, 'editor', 'editor', $post_id ) );
+		$this->assertInternalType( 'array', $result );
+		$this->assertEquals( 0, count( $result ) );
+
+		$post = get_post( $post_id, ARRAY_A );
+		$post['post_content'] = 'Edit #1';
+		wp_update_post( $post );
+
+		$result = $this->myxmlrpcserver->wp_getRevisions( array( 1, 'editor', 'editor', $post_id ) );
+		$this->assertInternalType( 'array', $result );
+		$this->assertEquals( 1, count( $result ) );
+	}
+}
+
