Version 1
[yaffs-website] / web / core / modules / system / tests / src / Functional / System / SystemAuthorizeTest.php
diff --git a/web/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php b/web/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php
new file mode 100644 (file)
index 0000000..8fa81ac
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+namespace Drupal\Tests\system\Functional\System;
+
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Tests the authorize.php script and related API.
+ *
+ * @group system
+ */
+class SystemAuthorizeTest extends BrowserTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['system_test'];
+
+  protected function setUp() {
+    parent::setUp();
+
+    // Create an administrator user.
+    $this->drupalLogin ($this->drupalCreateUser(['administer software updates']));
+  }
+
+  /**
+   * Helper function to initialize authorize.php and load it via drupalGet().
+   *
+   * Initializing authorize.php needs to happen in the child Drupal
+   * installation, not the parent. So, we visit a menu callback provided by
+   * system_test.module which calls system_authorized_init() to initialize the
+   * $_SESSION inside the test site, not the framework site. This callback
+   * redirects to authorize.php when it's done initializing.
+   *
+   * @see system_authorized_init()
+   */
+  public function drupalGetAuthorizePHP($page_title = 'system-test-auth') {
+    $this->drupalGet('system-test/authorize-init/' . $page_title);
+  }
+
+  /**
+   * Tests the FileTransfer hooks
+   */
+  public function testFileTransferHooks() {
+    $page_title = $this->randomMachineName(16);
+    $this->drupalGetAuthorizePHP($page_title);
+    $this->assertTitle(strtr('@title | Drupal', ['@title' => $page_title]), 'authorize.php page title is correct.');
+    $this->assertNoText('It appears you have reached this page in error.');
+    $this->assertText('To continue, provide your server connection details');
+    // Make sure we see the new connection method added by system_test.
+    $this->assertRaw('System Test FileTransfer');
+    // Make sure the settings form callback works.
+    $this->assertText('System Test Username');
+    // Test that \Drupal\Core\Render\BareHtmlPageRenderer adds assets as
+    // expected to the first page of the authorize.php script.
+    $this->assertRaw('core/misc/states.js');
+  }
+
+}