diff --git a/core/modules/user/lib/Drupal/user/Tests/UserActionsTest.php b/core/modules/user/lib/Drupal/user/Tests/UserActionsTest.php
new file mode 100644
index 0000000..a397633
--- /dev/null
+++ b/core/modules/user/lib/Drupal/user/Tests/UserActionsTest.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\user\Tests\UserActionsTest.
+ */
+
+namespace Drupal\user\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests actions provided by the User module.
+ */
+class UserActionsTest extends WebTestBase {
+  public static function getInfo() {
+    return array(
+      'name' => 'User actions',
+      'description' => 'Test actions provided by the user module.',
+      'group' => 'User',
+    );
+  }
+
+ function setUp() {
+    parent::setUp();
+  }
+
+  /**
+   * Tests user block and unblock actions.
+   */
+  function testUserBlockUnBlockActions() {
+    $blocked_user = $this->drupalCreateUser();
+
+    // Block a user
+    user_block_user_action($blocked_user);
+    $this->assertWatchdogMessage('Blocked user %name.', array('%name' => $blocked_user->name), t('Found watchdog message'));
+    $this->clearWatchdog();
+
+    // Unblock a user
+    user_unblock_user_action($blocked_user);
+    $this->assertWatchdogMessage('Unblocked user %name.', array('%name' => $blocked_user->name), t('Found watchdog message'));
+    $this->clearWatchdog();
+  }
+
+  /**
+   * Verifies that a watchdog message has been entered.
+   *
+   * @param $watchdog_message
+   *   The watchdog message.
+   * @param $variables
+   *   The array of variables passed to watchdog().
+   * @param $message
+   *   The assertion message.
+   */
+  function assertWatchdogMessage($watchdog_message, $variables, $message) {
+    $status = (bool) db_query_range("SELECT 1 FROM {watchdog} WHERE message = :message AND variables = :variables", 0, 1, array(':message' => $watchdog_message, ':variables' => serialize($variables)))->fetchField();
+    return $this->assert($status, $message);
+  }
+
+  /**
+   * Clears watchdog.
+   */
+  function clearWatchdog() {
+    db_truncate('watchdog')->execute();
+  }
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 01934b4..9dc7526 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -3408,6 +3408,12 @@ function user_action_info() {
       'configurable' => FALSE,
       'triggers' => array('any'),
     ),
+    'user_unblock_user_action' => array(
+      'label' => t('Unblock current user'),
+      'type' => 'user',
+      'configurable' => FALSE,
+      'triggers' => array('any'),
+    ),
   );
 }
 
@@ -3436,6 +3442,26 @@ function user_block_user_action(&$entity, $context = array()) {
 }
 
 /**
+ * Unblocks the current user.
+ *
+ * @ingroup actions
+ */
+function user_unblock_user_action(&$entity, $context = array()) {
+  // First priority: If there is a $entity->uid, unblock that user.
+  // This is most likely a user object or the author if a node or comment.
+  if (isset($entity->uid)) {
+    $uid = $entity->uid;
+  }
+  elseif (isset($context['uid'])) {
+    $uid = $context['uid'];
+  }
+  $account = user_load($uid);
+  $account->status = 1;
+  $account->save();
+  watchdog('action', 'Unblocked user %name.', array('%name' => $account->name));
+}
+
+/**
  * Implements hook_form_FORM_ID_alter().
  *
  * Add a checkbox for the 'user_register_form' instance settings on the 'Edit
