annotate vendor/behat/mink/src/Mink.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the Mink package.
Chris@0 5 * (c) Konstantin Kudryashov <ever.zet@gmail.com>
Chris@0 6 *
Chris@0 7 * For the full copyright and license information, please view the LICENSE
Chris@0 8 * file that was distributed with this source code.
Chris@0 9 */
Chris@0 10
Chris@0 11 namespace Behat\Mink;
Chris@0 12
Chris@0 13 /**
Chris@0 14 * Mink sessions manager.
Chris@0 15 *
Chris@0 16 * @author Konstantin Kudryashov <ever.zet@gmail.com>
Chris@0 17 */
Chris@0 18 class Mink
Chris@0 19 {
Chris@0 20 private $defaultSessionName;
Chris@0 21
Chris@0 22 /**
Chris@0 23 * Sessions.
Chris@0 24 *
Chris@0 25 * @var Session[]
Chris@0 26 */
Chris@0 27 private $sessions = array();
Chris@0 28
Chris@0 29 /**
Chris@0 30 * Initializes manager.
Chris@0 31 *
Chris@0 32 * @param Session[] $sessions
Chris@0 33 */
Chris@0 34 public function __construct(array $sessions = array())
Chris@0 35 {
Chris@0 36 foreach ($sessions as $name => $session) {
Chris@0 37 $this->registerSession($name, $session);
Chris@0 38 }
Chris@0 39 }
Chris@0 40
Chris@0 41 /**
Chris@0 42 * Stops all started sessions.
Chris@0 43 */
Chris@0 44 public function __destruct()
Chris@0 45 {
Chris@0 46 $this->stopSessions();
Chris@0 47 }
Chris@0 48
Chris@0 49 /**
Chris@0 50 * Registers new session.
Chris@0 51 *
Chris@0 52 * @param string $name
Chris@0 53 * @param Session $session
Chris@0 54 */
Chris@0 55 public function registerSession($name, Session $session)
Chris@0 56 {
Chris@0 57 $name = strtolower($name);
Chris@0 58
Chris@0 59 $this->sessions[$name] = $session;
Chris@0 60 }
Chris@0 61
Chris@0 62 /**
Chris@0 63 * Checks whether session with specified name is registered.
Chris@0 64 *
Chris@0 65 * @param string $name
Chris@0 66 *
Chris@0 67 * @return Boolean
Chris@0 68 */
Chris@0 69 public function hasSession($name)
Chris@0 70 {
Chris@0 71 return isset($this->sessions[strtolower($name)]);
Chris@0 72 }
Chris@0 73
Chris@0 74 /**
Chris@0 75 * Sets default session name to use.
Chris@0 76 *
Chris@0 77 * @param string $name name of the registered session
Chris@0 78 *
Chris@0 79 * @throws \InvalidArgumentException
Chris@0 80 */
Chris@0 81 public function setDefaultSessionName($name)
Chris@0 82 {
Chris@0 83 $name = strtolower($name);
Chris@0 84
Chris@0 85 if (!isset($this->sessions[$name])) {
Chris@0 86 throw new \InvalidArgumentException(sprintf('Session "%s" is not registered.', $name));
Chris@0 87 }
Chris@0 88
Chris@0 89 $this->defaultSessionName = $name;
Chris@0 90 }
Chris@0 91
Chris@0 92 /**
Chris@0 93 * Returns default session name or null if none.
Chris@0 94 *
Chris@0 95 * @return null|string
Chris@0 96 */
Chris@0 97 public function getDefaultSessionName()
Chris@0 98 {
Chris@0 99 return $this->defaultSessionName;
Chris@0 100 }
Chris@0 101
Chris@0 102 /**
Chris@0 103 * Returns registered session by it's name or default one.
Chris@0 104 *
Chris@0 105 * @param string $name session name
Chris@0 106 *
Chris@0 107 * @return Session
Chris@0 108 *
Chris@0 109 * @throws \InvalidArgumentException If the named session is not registered
Chris@0 110 */
Chris@0 111 public function getSession($name = null)
Chris@0 112 {
Chris@0 113 return $this->locateSession($name);
Chris@0 114 }
Chris@0 115
Chris@0 116 /**
Chris@0 117 * Checks whether a named session (or the default session) has already been started.
Chris@0 118 *
Chris@0 119 * @param string $name session name - if null then the default session will be checked
Chris@0 120 *
Chris@0 121 * @return bool whether the session has been started
Chris@0 122 *
Chris@0 123 * @throws \InvalidArgumentException If the named session is not registered
Chris@0 124 */
Chris@0 125 public function isSessionStarted($name = null)
Chris@0 126 {
Chris@0 127 $session = $this->locateSession($name);
Chris@0 128
Chris@0 129 return $session->isStarted();
Chris@0 130 }
Chris@0 131
Chris@0 132 /**
Chris@0 133 * Returns session asserter.
Chris@0 134 *
Chris@0 135 * @param Session|string $session session object or name
Chris@0 136 *
Chris@0 137 * @return WebAssert
Chris@0 138 */
Chris@0 139 public function assertSession($session = null)
Chris@0 140 {
Chris@0 141 if (!($session instanceof Session)) {
Chris@0 142 $session = $this->getSession($session);
Chris@0 143 }
Chris@0 144
Chris@0 145 return new WebAssert($session);
Chris@0 146 }
Chris@0 147
Chris@0 148 /**
Chris@0 149 * Resets all started sessions.
Chris@0 150 */
Chris@0 151 public function resetSessions()
Chris@0 152 {
Chris@0 153 foreach ($this->sessions as $session) {
Chris@0 154 if ($session->isStarted()) {
Chris@0 155 $session->reset();
Chris@0 156 }
Chris@0 157 }
Chris@0 158 }
Chris@0 159
Chris@0 160 /**
Chris@0 161 * Restarts all started sessions.
Chris@0 162 */
Chris@0 163 public function restartSessions()
Chris@0 164 {
Chris@0 165 foreach ($this->sessions as $session) {
Chris@0 166 if ($session->isStarted()) {
Chris@0 167 $session->restart();
Chris@0 168 }
Chris@0 169 }
Chris@0 170 }
Chris@0 171
Chris@0 172 /**
Chris@0 173 * Stops all started sessions.
Chris@0 174 */
Chris@0 175 public function stopSessions()
Chris@0 176 {
Chris@0 177 foreach ($this->sessions as $session) {
Chris@0 178 if ($session->isStarted()) {
Chris@0 179 $session->stop();
Chris@0 180 }
Chris@0 181 }
Chris@0 182 }
Chris@0 183
Chris@0 184 /**
Chris@0 185 * Returns the named or default session without starting it.
Chris@0 186 *
Chris@0 187 * @param string $name session name
Chris@0 188 *
Chris@0 189 * @return Session
Chris@0 190 *
Chris@0 191 * @throws \InvalidArgumentException If the named session is not registered
Chris@0 192 */
Chris@0 193 protected function locateSession($name = null)
Chris@0 194 {
Chris@0 195 $name = strtolower($name) ?: $this->defaultSessionName;
Chris@0 196
Chris@0 197 if (null === $name) {
Chris@0 198 throw new \InvalidArgumentException('Specify session name to get');
Chris@0 199 }
Chris@0 200
Chris@0 201 if (!isset($this->sessions[$name])) {
Chris@0 202 throw new \InvalidArgumentException(sprintf('Session "%s" is not registered.', $name));
Chris@0 203 }
Chris@0 204
Chris@0 205 $session = $this->sessions[$name];
Chris@0 206
Chris@0 207 return $session;
Chris@0 208 }
Chris@0 209 }