git subrepo commit (merge) mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "02ae5285"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "649a5c01"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: I870ad468fba026cc5abf3c5699ed1e12ff28b32b
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Testing/LdapExpectation.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Testing/LdapExpectation.php
new file mode 100644
index 0000000..90a5fa2
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/directorytree/ldaprecord/src/Testing/LdapExpectation.php
@@ -0,0 +1,303 @@
+<?php
+
+namespace LdapRecord\Testing;
+
+use LdapRecord\LdapRecordException;
+use PHPUnit\Framework\Constraint\Constraint;
+use PHPUnit\Framework\Constraint\IsEqual;
+use UnexpectedValueException;
+
+class LdapExpectation
+{
+    /**
+     * The value to return from the expectation.
+     *
+     * @var mixed
+     */
+    protected $value;
+
+    /**
+     * The exception to throw from the expectation.
+     *
+     * @var null|LdapRecordException|\Exception
+     */
+    protected $exception;
+
+    /**
+     * The amount of times the expectation should be called.
+     *
+     * @var int
+     */
+    protected $count = 1;
+
+    /**
+     * The method that the expectation belongs to.
+     *
+     * @var string
+     */
+    protected $method;
+
+    /**
+     * The methods argument's.
+     *
+     * @var array
+     */
+    protected $args = [];
+
+    /**
+     * Whether the same expectation should be returned indefinitely.
+     *
+     * @var bool
+     */
+    protected $indefinitely = true;
+
+    /**
+     * Whether the expectation should return errors.
+     *
+     * @var bool
+     */
+    protected $errors = false;
+
+    /**
+     * The error number to return.
+     *
+     * @var int
+     */
+    protected $errorCode = 1;
+
+    /**
+     * The last error string to return.
+     *
+     * @var string
+     */
+    protected $errorMessage = '';
+
+    /**
+     * The diagnostic message string to return.
+     *
+     * @var string
+     */
+    protected $errorDiagnosticMessage = '';
+
+    /**
+     * Constructor.
+     *
+     * @param string $method
+     */
+    public function __construct($method)
+    {
+        $this->method = $method;
+    }
+
+    /**
+     * Set the arguments that the operation should receive.
+     *
+     * @param mixed $args
+     *
+     * @return $this
+     */
+    public function with($args)
+    {
+        $args = is_array($args) ? $args : func_get_args();
+
+        foreach ($args as $key => $arg) {
+            if (! $arg instanceof Constraint) {
+                $args[$key] = new IsEqual($arg);
+            }
+        }
+
+        $this->args = $args;
+
+        return $this;
+    }
+
+    /**
+     * Set the expected value to return.
+     *
+     * @param mixed $value
+     *
+     * @return $this
+     */
+    public function andReturn($value)
+    {
+        $this->value = $value;
+
+        return $this;
+    }
+
+    /**
+     * The error message to return from the expectation.
+     *
+     * @param int    $code
+     * @param string $error
+     * @param string $diagnosticMessage
+     *
+     * @return $this
+     */
+    public function andReturnError($code = 1, $error = '', $diagnosticMessage = '')
+    {
+        $this->errors = true;
+
+        $this->errorCode = $code;
+        $this->errorMessage = $error;
+        $this->errorDiagnosticMessage = $diagnosticMessage;
+
+        return $this;
+    }
+
+    /**
+     * Set the expected exception to throw.
+     *
+     * @param string|\Exception|LdapRecordException $exception
+     *
+     * @return $this
+     */
+    public function andThrow($exception)
+    {
+        if (is_string($exception)) {
+            $exception = new LdapRecordException($exception);
+        }
+
+        $this->exception = $exception;
+
+        return $this;
+    }
+
+    /**
+     * Set the expectation to be only called once.
+     *
+     * @return $this
+     */
+    public function once()
+    {
+        return $this->times(1);
+    }
+
+    /**
+     * Set the expectation to be only called twice.
+     *
+     * @return $this
+     */
+    public function twice()
+    {
+        return $this->times(2);
+    }
+
+    /**
+     * Set the expectation to be called the given number of times.
+     *
+     * @param int $count
+     *
+     * @return $this
+     */
+    public function times($count = 1)
+    {
+        $this->indefinitely = false;
+
+        $this->count = $count;
+
+        return $this;
+    }
+
+    /**
+     * Get the method the expectation belongs to.
+     *
+     * @return string
+     */
+    public function getMethod()
+    {
+        if (is_null($this->method)) {
+            throw new UnexpectedValueException('An expectation must have a method.');
+        }
+
+        return $this->method;
+    }
+
+    /**
+     * Get the expected call count.
+     *
+     * @return int
+     */
+    public function getExpectedCount()
+    {
+        return $this->count;
+    }
+
+    /**
+     * Get the expected arguments.
+     *
+     * @return Constraint[]
+     */
+    public function getExpectedArgs()
+    {
+        return $this->args;
+    }
+
+    /**
+     * Get the expected exception.
+     *
+     * @return null|\Exception|LdapRecordException
+     */
+    public function getExpectedException()
+    {
+        return $this->exception;
+    }
+
+    /**
+     * Get the expected value.
+     *
+     * @return mixed
+     */
+    public function getExpectedValue()
+    {
+        return $this->value;
+    }
+
+    /**
+     * Determine whether the expectation is returning an error.
+     *
+     * @return bool
+     */
+    public function isReturningError()
+    {
+        return $this->errors;
+    }
+
+    /**
+     * @return int
+     */
+    public function getExpectedErrorCode()
+    {
+        return $this->errorCode;
+    }
+
+    /**
+     * @return string
+     */
+    public function getExpectedErrorMessage()
+    {
+        return $this->errorMessage;
+    }
+
+    /**
+     * @return string
+     */
+    public function getExpectedErrorDiagnosticMessage()
+    {
+        return $this->errorDiagnosticMessage;
+    }
+
+    /**
+     * Decrement the call count of the expectation.
+     *
+     * @return $this
+     */
+    public function decrementCallCount()
+    {
+        if (! $this->indefinitely) {
+            $this->count -= 1;
+        }
+
+        return $this;
+    }
+}