--- /dev/null
+import { execSync } from 'child_process';
+import { URL } from 'url';
+import { commandAsWebserver } from '../globals';
+
+/**
+ * Logs in as the admin user.
+ *
+ * @param {function} callback
+ * A callback which will allow running commands as an administrator.
+ * @return {object}
+ * The drupalLoginAsAdmin command.
+ */
+exports.command = function drupalLoginAsAdmin(callback) {
+ const self = this;
+ this.drupalUserIsLoggedIn(sessionExists => {
+ if (sessionExists) {
+ this.drupalLogout();
+ }
+ const userLink = execSync(
+ commandAsWebserver(
+ `php ./scripts/test-site.php user-login 1 --site-path ${
+ this.drupalSitePath
+ }`,
+ ),
+ );
+
+ this.drupalRelativeURL(userLink.toString());
+
+ this.drupalUserIsLoggedIn(sessionExists => {
+ if (!sessionExists) {
+ throw new Error('Logging in as an admin user failed.');
+ }
+ });
+ });
+
+ if (typeof callback === 'function') {
+ callback.call(self);
+ }
+
+ this.drupalLogout({ silent: true });
+
+ return this;
+};