Package fitnesse.authentication

Source Code of fitnesse.authentication.HashingCipherTest

// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.authentication;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.Random;

import org.junit.Test;
import fitnesse.util.TimeMeasurement;

public class HashingCipherTest {
  private String[] inputs = new String[]{"123", "abc", "12345678901234567890", "this is a test", "!@#$%^&*()"};
  private HashingCipher crypter = new HashingCipher();

  @Test
  public void testHashReturnsDifferentValueThanPassed() throws Exception {
    String testString = "This is a test string";
    String hash = crypter.encrypt(testString);
    assertNotNull(hash);
    assertFalse(hash.equals(testString));
  }

  @Test
  public void testDifferentStringHashDifferently() throws Exception {
    String hash1 = crypter.encrypt("123456");
    String hash2 = crypter.encrypt("abcdef");
    assertFalse(hash1.equals(hash2));
  }

  @Test
  public void testLengthOfHash() throws Exception {
    for (int i = 0; i < inputs.length; i++) {
      String input = inputs[i];
      String encryption = crypter.encrypt(input);
      assertEquals(input, 20, encryption.length());
    }
  }

  @Test
  public void testSameInputGivesSameOutput() throws Exception {
    for (int i = 0; i < inputs.length; i++) {
      String input = inputs[i];
      String encryption1 = crypter.encrypt(input);
      String encryption2 = crypter.encrypt(input);
      assertEquals(input, encryption1, encryption2);
    }
  }

  @Test
  public void testAlgorithmSpeed() throws Exception {
    Random generator = new Random();
    int sampleSize = 1000;
    String[] inputs = new String[sampleSize];

    for (int i = 0; i < inputs.length; i++) {
      int passwordSize = generator.nextInt(20) + 1;
      byte[] passwd = new byte[passwordSize];
      generator.nextBytes(passwd);
      inputs[i] = new String(passwd);
    }

    TimeMeasurement measurement = new TimeMeasurement().start();
    for (int i = 0; i < inputs.length; i++) {
      crypter.encrypt(inputs[i]);
    }
    long duration = measurement.elapsed();

    assertTrue(duration < 1000);
  }
}
TOP

Related Classes of fitnesse.authentication.HashingCipherTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.