StrongPasswordTest.php #1

  • //
  • guest/
  • thomas_gray/
  • jambox/
  • main/
  • swarm/
  • tests/
  • phpunit/
  • P4Test/
  • Validate/
  • StrongPasswordTest.php
  • View
  • Commits
  • Open Download .zip Download (5 KB)
<?php
/**
 * Test methods for the P4 Validate StrongPassword class.
 *
 * @copyright   2012 Perforce Software. All rights reserved.
 * @license     Please see LICENSE.txt in top-level folder of this distribution.
 * @version     <release>/<patch>
 */

namespace P4Test\Validate;

use P4Test\TestCase;

class StrongPasswordTest extends TestCase
{
    /**
     * Test instantiation.
     */
    public function testInstantiation()
    {
        $validator = new \P4\Validate\StrongPassword;
        $this->assertTrue($validator instanceof \P4\Validate\StrongPassword, 'Expected class');
    }

    /**
     * Test isValid.
     */
    public function testIsValid()
    {
        $weakPasswordMessage = "Passwords must be at least 8 characters long and contain "
            . "mixed case or both alphabetic and non-alphabetic characters.";

        $tests = array(
            array(
                'label'   => __LINE__ .': null',
                'value'   => null,
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': empty',
                'value'   => '',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': short (7 characters, only digits)',
                'value'   => '1234567',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': short (7 characters, mixed case)',
                'value'   => 'asdQWEr',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': short (7 characters, alpha & nonalpha)',
                'value'   => 'Xa1b2c3',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': weak (only lowercase letters)',
                'value'   => 'qwertyuiop',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': weak (only uppercase letters)',
                'value'   => 'ZXCVBNML',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': weak (only nonaplha)',
                'value'   => '123456789!',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': weak (only nonaplha)',
                'value'   => '!12@_)0^%$',
                'valid'   => false,
                'error'   => array(
                    'weakPassword' => $weakPasswordMessage
                ),
            ),
            array(
                'label'   => __LINE__ .': strong (mixed case)',
                'value'   => 'aByUopXZkjhIU',
                'valid'   => true,
                'error'   => array(),
            ),
            array(
                'label'   => __LINE__ .': strong (mixed case)',
                'value'   => 'xxxXxxxx',
                'valid'   => true,
                'error'   => array(),
            ),
            array(
                'label'   => __LINE__ .': strong (mixed case)',
                'value'   => 'ABCDEFGh',
                'valid'   => true,
                'error'   => array(),
            ),
            array(
                'label'   => __LINE__ .': strong (alpha & nonaplha)',
                'value'   => 'gf12ty2h4u5y66',
                'valid'   => true,
                'error'   => array(),
            ),
            array(
                'label'   => __LINE__ .': strong (alpha & nonaplha)',
                'value'   => '1234567A',
                'valid'   => true,
                'error'   => array(),
            ),
            array(
                'label'   => __LINE__ .': strong (alpha & nonaplha)',
                'value'   => 'abcxyz!u',
                'valid'   => true,
                'error'   => array(),
            ),
            array(
                'label'   => __LINE__ .': strong (alpha & nonaplha)',
                'value'   => 'OOAAXX1Q',
                'valid'   => true,
                'error'   => array(),
            ),
        );

        foreach ($tests as $test) {
            $label = $test['label'];
            $validator = new \P4\Validate\StrongPassword;

            $this->assertSame(
                $test['valid'],
                $validator->isValid($test['value']),
                "$label - Expected validation result."
            );

            $this->assertSame(
                $test['error'],
                $validator->getMessages(),
                "$label - Expected error message(s)"
            );
        }
    }
}
# Change User Description Committed
#1 18730 Liz Lam clean up code and move things around