diff --git a/core/modules/language/src/Tests/LanguageEntityFormTest.php b/core/modules/language/src/Tests/LanguageEntityFormTest.php
new file mode 100644
index 0000000..96728e0
--- /dev/null
+++ b/core/modules/language/src/Tests/LanguageEntityFormTest.php
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Tests\LanguageEntityFormTest.
+ */
+
+namespace Drupal\language\Tests;
+
+use Drupal\language\Entity\ContentLanguageSettings;
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests entity form with language module.
+ *
+ * This is to ensure that an entity form by default does not show the language
+ * select, but it does so when it's enabled from the content language settings
+ * page.
+ * In this test we test it with the particular cases of the contact messages
+ * and with node.
+ *
+ * @group contact
+ */
+class LanguageEntityFormTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array(
+    'contact',
+    'language',
+    'contact_test',
+    'node',
+  );
+
+  /**
+   * Tests configuration options with language.
+   */
+  public function testContactLanguage() {
+    // Create and login administrative user.
+    $admin_user = $this->drupalCreateUser(array(
+      'access site-wide contact form',
+      'administer languages',
+    ));
+    $this->drupalLogin($admin_user);
+
+    // Create a node which empty langcode.
+    $this->createContentType('ctund', '');
+    $node = $this->createNode('ctund');
+
+    // Ensure that contact form by default does not show the language select.
+    $this->drupalGet('contact');
+    $this->assertNoField('edit-langcode-0-value');
+    // Check the same for node.
+    $this->drupalGet('node/1');
+    $this->assertNoField('edit-langcode-0-value');
+
+    // Enable language select from content language settings page and node.
+    $settings_path = 'admin/config/regional/content-language';
+    $edit['entity_types[contact_message]'] = TRUE;
+    $edit['settings[contact_message][feedback][settings][language][language_alterable]'] = TRUE;
+    $this->drupalPostForm($settings_path, $edit, t('Save configuration'));
+
+    // Ensure that contact form now shows the language select.
+    $this->drupalGet('contact');
+    $this->assertField('edit-langcode-0-value');
+    // Check the same for node.
+    $this->drupalGet('contact');
+    $this->assertField('edit-langcode-0-value');
+  }
+
+  /**
+   * Creates a new node content type.
+   *
+   * @param string $name
+   *   The content type name.
+   * @param string $langcode
+   *   Default language code of the nodes of this type.
+   */
+  protected function createContentType($name, $langcode) {
+    $content_type = $this->container->get('entity.manager')->getStorage('node_type')->create(array(
+      'name' => 'Test ' . $name,
+      'title_label' => 'Title',
+      'type' => $name,
+      'create_body' => FALSE,
+    ));
+    $content_type->save();
+    ContentLanguageSettings::loadByEntityTypeBundle('node', $name)
+      ->setLanguageAlterable(FALSE)
+      ->setDefaultLangcode($langcode)
+      ->save();
+  }
+
+  /**
+   * Creates a new node of given type and language using Entity API.
+   *
+   * @param string $type
+   *   The node content type.
+   * @param string $langcode
+   *   (optional) Language code to pass to entity create.
+   *
+   * @return \Drupal\node\NodeInterface
+   *   The node created.
+   */
+  protected function createNode($type, $langcode = '') {
+    $values = array(
+      'type' => $type,
+      'title' => $this->randomString(),
+    );
+    if (!empty($langcode)) {
+      $values['langcode'] = $langcode;
+    }
+    $node = $this->container->get('entity.manager')->getStorage('node')->create($values);
+    return $node;
+  }
+
+}
