/** * Is validator check valid? * * @see WirecardCEE_Stdlib_Validate_Interface::isValid() */ public function isValid($value, $context = null) { $context = array_change_key_case($context, CASE_LOWER); switch ($this->hashAlgorithm) { case WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_HMAC_SHA512: case WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_SHA512: $stringLength = 128; break; case WirecardCEE_Stdlib_Fingerprint::HASH_ALGORITHM_MD5: $stringLength = 32; break; default: throw new WirecardCEE_Stdlib_Exception_UnexpectedValueException(sprintf("Used hash algorithm '%s' is not supported. MD5, SHA512, or HMAC_SHA512 are currently supported.", $this->hashAlgorithm)); break; } if (strlen($value) != $stringLength) { return false; } if ($this->fingerprintOrderType == self::TYPE_FIXED) { $fingerprintOrder = $this->fingerprintOrder; } else { if (array_key_exists($this->fingerprintOrderField, $context)) { $fingerprintOrder = new WirecardCEE_Stdlib_FingerprintOrder(strtolower($context[$this->fingerprintOrderField])); } else { $this->_error(self::FINGERPRINTORDER_MISSING); return false; } } $fingerprintOrder->setOrder(array_map('strtolower', $this->fingerprintOrder->__toArray())); if (!in_array('secret', $fingerprintOrder->__toArray())) { throw new WirecardCEE_Stdlib_Exception_UnexpectedValueException(); } $fingerprintFields = array(); foreach ($fingerprintOrder as $fingerprintFieldKey) { if ($fingerprintFieldKey == 'secret') { $fingerprintFields[$fingerprintFieldKey] = $this->secret; } else { $fingerprintFields[$fingerprintFieldKey] = isset($context[$fingerprintFieldKey]) ? $context[$fingerprintFieldKey] : ''; } } if (!WirecardCEE_Stdlib_Fingerprint::compare($fingerprintFields, $fingerprintOrder, $value)) { $this->_error(self::INVALID); return false; } return true; }
public function testOffsetUnset() { $this->object['foo'] = 'bar'; $this->object->offsetUnset('foo'); $this->assertArrayNotHasKey('foo', (array) $this->object); }