diff --git a/lib/Drupal/profile2/Tests/ProfileAccessTest.php b/lib/Drupal/profile2/Tests/ProfileAccessTest.php
new file mode 100644
index 0000000..2104750
--- /dev/null
+++ b/lib/Drupal/profile2/Tests/ProfileAccessTest.php
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\profile2\Tests\ProfileAccessTest.
+ */
+
+namespace Drupal\profile2\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests profile access handling.
+ */
+class ProfileAccessTest extends WebTestBase {
+
+  public static $modules = array('profile2', 'text');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Profile access',
+      'description' => 'Tests profile access handling.',
+      'group' => 'Profile2',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    $this->type = entity_create('profile2_type', array(
+      'id' => 'test',
+      'label' => 'Test profile',
+      'weight' => 0,
+      'registration' => TRUE,
+    ));
+    $this->type->save();
+    $id = $this->type->id();
+
+    $this->field = array(
+      'field_name' => 'profile_fullname',
+      'type' => 'text',
+      'cardinality' => 1,
+      'translatable' => FALSE,
+    );
+    field_create_field($this->field);
+    $this->instance = array(
+      'entity_type' => 'profile2',
+      'field_name' => $this->field['field_name'],
+      'bundle' => $this->type->id(),
+      'label' => 'Full name',
+      'widget' => array(
+        'type' => 'text_textfield',
+      ),
+    );
+    field_create_instance($this->instance);
+
+    $this->checkPermissions(array(), TRUE);
+
+    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access user profiles'));
+    $this->admin_user = $this->drupalCreateUser(array(
+      'administer profile types',
+      "view any $id profile",
+      "edit any $id profile",
+      "delete any $id profile",
+    ));
+  }
+
+  /**
+   * Tests administrative-only profiles.
+   */
+  function testAdminOnlyProfiles() {
+    $id = $this->type->id();
+    $field_name = $this->field['field_name'];
+
+    // Create a test user account.
+    $web_user = $this->drupalCreateUser(array('access user profiles'));
+    $uid = $web_user->id();
+    $value = $this->randomName();
+
+    // Administratively enter profile field values for the new account.
+    $this->drupalLogin($this->admin_user);
+    $edit = array(
+      "{$field_name}[und][0][value]" => $value,
+    );
+    $this->drupalPost("user/$uid/edit/$id", $edit, t('Save'));
+
+    // Verify that the administrator can see the profile.
+    $this->drupalGet("user/$uid");
+    $this->assertText($this->type->label());
+    $this->assertText($value);
+
+    // Verify that the user can not access or edit the profile.
+    $this->drupalLogin($web_user);
+    $this->drupalGet("user/$uid");
+    $this->assertNoText($this->type->label());
+    $this->assertNoText($value);
+    $this->drupalGet("user/$uid/edit/$id");
+    $this->assertResponse(403);
+
+    // Allow users to edit own profiles.
+    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array("edit own $id profile"));
+
+    // Verify that the user is able to edit the own profile.
+    $value = $this->randomName();
+    $edit = array(
+      "{$field_name}[und][0][value]" => $value,
+    );
+    $this->drupalPost("user/$uid/edit/$id", $edit, t('Save'));
+    $this->assertText(t('Your profile has been saved.'));
+
+    // Verify that the own profile is still not visible on the account page.
+    $this->drupalGet("user/$uid");
+    $this->assertNoText($this->type->label());
+    $this->assertNoText($value);
+
+    // Allow users to view own profiles.
+    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array("view own $id profile"));
+
+    // Verify that the own profile is visible on the account page.
+    $this->drupalGet("user/$uid");
+    $this->assertText($this->type->label());
+    $this->assertText($value);
+
+    // Allow users to delete own profiles.
+    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array("delete own $id profile"));
+
+    // Verify that the user can delete the own profile.
+    $this->drupalPost("user/$uid/edit/$id", array(), t('Delete'));
+    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->assertRaw(t('Your %label profile has been deleted.', array('%label' => $this->type->label())));
+    $this->assertUrl("user/$uid");
+
+    // Verify that the profile is gone.
+    $this->drupalGet("user/$uid");
+    $this->assertNoText($this->type->label());
+    $this->assertNoText($value);
+    $this->drupalGet("user/$uid/edit/$id");
+    $this->assertNoText($value);
+  }
+
+}
diff --git a/lib/Drupal/profile2/Tests/ProfileAttachTest.php b/lib/Drupal/profile2/Tests/ProfileAttachTest.php
index 9d325ee..42b53c9 100644
--- a/lib/Drupal/profile2/Tests/ProfileAttachTest.php
+++ b/lib/Drupal/profile2/Tests/ProfileAttachTest.php
@@ -48,7 +48,6 @@ class ProfileAttachTest extends WebTestBase {
       'bundle' => $this->type->id(),
       'label' => 'Full name',
       'required' => TRUE,
-      'description' => 'Specify your first and last name.',
       'widget' => array(
         'type' => 'text_textfield',
       ),
diff --git a/lib/Drupal/profile2/Tests/ProfileEditTest.php b/lib/Drupal/profile2/Tests/ProfileEditTest.php
deleted file mode 100644
index 898b39d..0000000
--- a/lib/Drupal/profile2/Tests/ProfileEditTest.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains Drupal\profile2\Tests\ProfileEditTest.
- */
-
-namespace Drupal\profile2\Tests;
-
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Tests creating and editing of profiles.
- */
-class ProfileEditTest extends WebTestBase {
-
-  public static $modules = array('profile2', 'text');
-
-  public static function getInfo() {
-    return array(
-      'name' => 'Profile editing',
-      'description' => 'Tests creating and editing of profiles.',
-      'group' => 'Profile2',
-    );
-  }
-
-  function setUp() {
-    parent::setUp();
-
-    $type = entity_create('profile2_type', array(
-      'id' => 'test',
-      'label' => 'label',
-      'weight' => 0,
-      'registration' => TRUE,
-    ));
-    $type->save();
-    $type = entity_create('profile2_type', array(
-      'id' => 'test2',
-      'label' => 'label2',
-      'weight' => 2,
-    ));
-    $type->save();
-
-    $field = array(
-      'field_name' => 'profile_fullname',
-      'type' => 'text',
-      'cardinality' => 1,
-      'translatable' => FALSE,
-    );
-    field_create_field($field);
-    $instance = array(
-      'entity_type' => 'profile2',
-      'field_name' => 'profile_fullname',
-      'bundle' => 'test',
-      'label' => 'Full name',
-      'description' => 'Specify your first and last name.',
-      'widget' => array(
-        'type' => 'text_textfield',
-        'weight' => 0,
-      ),
-    );
-    field_create_instance($instance);
-
-    $this->checkPermissions(array(), TRUE);
-  }
-
-  /**
-   * Tests CRUD for a profile related to a user and one unrelated to a user.
-   */
-  function testCRUD() {
-    $user1 = $this->drupalCreateUser();
-    // Create profiles for the user1 and unrelated to a user.
-    entity_create('profile2', array('type' => 'test', 'uid' => $user1->uid))->save();
-    entity_create('profile2', array('type' => 'test2', 'uid' => $user1->uid))->save();
-    $profile = entity_create('profile2', array('type' => 'test', 'uid' => NULL));
-    $profile->save();
-
-    $entities = entity_load_multiple_by_properties('profile2', array(
-      'uid' => $user1->uid,
-    ));
-    $profiles = array();
-    foreach ($entities as $item) {
-      $profiles[$item->type] = $item;
-    }
-
-    $this->assertEqual($profiles['test']->label(), 'label', 'Created and loaded profile 1.');
-    $this->assertEqual($profiles['test2']->label(), 'label2', 'Created and loaded profile 2.');
-
-    $loaded = entity_load('profile2', $profile->pid);
-    $this->assertEqual($loaded->pid, $profile->pid, 'Loaded profile unrelated to a user.');
-
-    $profiles['test']->delete();
-    $entities = entity_load_multiple_by_properties('profile2', array(
-      'uid' => $user1->uid,
-    ));
-    $profiles2 = array();
-    foreach ($entities as $item) {
-      $profiles2[$item->type] = $item;
-    }
-
-    $this->assertEqual(array_keys($profiles2), array('test2'), 'Profile successfully deleted.');
-
-    $profiles2['test2']->save();
-    $this->assertEqual($profiles['test2']->pid, $profiles2['test2']->pid, 'Profile successfully updated.');
-
-    // Delete a profile type.
-    entity_load('profile2_type', 'test')->delete();
-
-    // Try deleting multiple profiles by deleting all existing profiles.
-    $pids = array_keys(entity_load_multiple('profile2'));
-    $this->assertTrue($pids);
-    entity_delete_multiple('profile2', $pids);
-  }
-
-  /**
-   * Test basic edit and display.
-   */
-  function testEditAndDisplay() {
-    user_role_revoke_permissions(DRUPAL_AUTHENTICATED_RID, array('edit own test profile', 'view own test profile'));
-    $user1 = $this->drupalCreateUser();
-    $this->drupalLogin($user1);
-
-    // Make sure access is denied to the profile.
-    $this->drupalGet('user/' . $user1->uid . '/edit/test');
-    $this->assertText(t('Access denied'), 'Access has been denied.');
-
-    // Test creating a profile manually (e.g. by an admin) and ensure the user
-    // may not see it.
-    entity_create('profile2', array('type' => 'test', 'uid' => $user1->uid))->save();
-    $this->drupalGet('user/' . $user1->uid);
-    $this->assertNoText('label', 'Profile data is not visible to the owner.');
-
-    $user2 = $this->drupalCreateUser(array('edit own test profile', 'view own test profile'));
-    $this->drupalLogin($user2);
-
-    // Create profiles for the user2.
-    $edit['profile_fullname[und][0][value]'] = $this->randomName();
-    $this->drupalPost('user/' . $user2->uid . '/edit/test', $edit, t('Save'));
-    $this->assertText(t('Your profile has been saved.'), 'Profile saved.');
-
-    $profiles = entity_load_multiple_by_properties('profile2', array(
-      'uid' => $user2->uid,
-      'type' => 'test',
-    ));
-    $profile = reset($profiles);
-    $this->assertEqual($profile->profile_fullname[LANGUAGE_NOT_SPECIFIED][0]['value'], $edit['profile_fullname[und][0][value]'], 'Profile edited.');
-
-    $this->drupalGet('user/' . $user2->uid);
-    $this->assertText(check_plain($edit['profile_fullname[und][0][value]']), 'Profile displayed.');
-  }
-
-}
diff --git a/profile2.module b/profile2.module
index 1c9bbd1..9306999 100644
--- a/profile2.module
+++ b/profile2.module
@@ -161,7 +161,8 @@ function profile2_menu_load($type_id, $map, $op = '') {
     'uid' => $account->id(),
     'type' => $type_id,
   ));
-  if ($op == 'edit' && !$profile = reset($profiles)) {
+  $profile = reset($profiles);
+  if ($op == 'edit' && !$profile) {
     $profile = entity_create('profile2', array(
       'type' => $type_id,
       'uid' => $account->id(),
