@Test
  public void testForPasswordShouldReturnFirstAlgorithm() throws Exception {
    when(passwordAlgorithm1.supports(anyString())).thenReturn(true);

    final PasswordAlgorithmFactory passwordAlgorithmFactory =
        new PasswordAlgorithmFactory(passwordAlgorithms, passwordAlgorithm2);

    assertThat(passwordAlgorithmFactory.forPassword("foobar")).isEqualTo(passwordAlgorithm1);
  }
  @Test
  public void testForPasswordShouldReturnNull() throws Exception {
    when(passwordAlgorithm1.supports(anyString())).thenReturn(false);
    when(passwordAlgorithm2.supports(anyString())).thenReturn(false);

    final PasswordAlgorithmFactory passwordAlgorithmFactory =
        new PasswordAlgorithmFactory(passwordAlgorithms, passwordAlgorithm2);

    assertThat(passwordAlgorithmFactory.forPassword("foobar")).isNull();
  }
  @Test
  public void testDefaultPasswordAlgorithm() throws Exception {
    final PasswordAlgorithm defaultPasswordAlgorithm = mock(PasswordAlgorithm.class);

    final PasswordAlgorithmFactory passwordAlgorithmFactory =
        new PasswordAlgorithmFactory(
            Collections.<String, PasswordAlgorithm>emptyMap(), defaultPasswordAlgorithm);

    assertThat(passwordAlgorithmFactory.defaultPasswordAlgorithm())
        .isEqualTo(defaultPasswordAlgorithm);
  }