Package org.eclipse.egit.core.securestorage

Source Code of org.eclipse.egit.core.securestorage.EGitSecureStoreTest

/*******************************************************************************
* Copyright (C) 2010, Jens Baumgart <jens.baumgart@sap.com>
* Copyright (C) 2010, Edwin Kempin <edwin.kempin@sap.com>
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.egit.core.securestorage;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;

import javax.crypto.spec.PBEKeySpec;

import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.equinox.security.storage.ISecurePreferences;
import org.eclipse.equinox.security.storage.SecurePreferencesFactory;
import org.eclipse.equinox.security.storage.provider.IProviderHints;
import org.eclipse.jgit.transport.URIish;
import org.eclipse.jgit.util.FileUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class EGitSecureStoreTest {

  ISecurePreferences secureStoreForTest;

  EGitSecureStore store;

  @Before
  public void setUp() throws Exception {
    setupNewSecureStore();
    store = new EGitSecureStore(secureStoreForTest);
  }

  @After
  public void tearDown() throws Exception {
    secureStoreForTest.flush();
  }

  @Test
  public void testPutUserAndPassword() throws Exception {
    URIish uri = new URIish("http://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);

    ISecurePreferences node = secureStoreForTest.node(EGitSecureStore
        .calcNodePath(uri).toString());
    assertEquals("agitter", node.get("user", null));
    assertTrue(node.isEncrypted("password"));
    assertEquals("letmein", node.get("password", null));
  }

  @Test
  public void testGetUserAndPassword() throws Exception {
    URIish uri = new URIish("http://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);

    UserPasswordCredentials storedCredentials = store.getCredentials(uri);
    assertEquals("agitter", storedCredentials.getUser());
    assertEquals("letmein", storedCredentials.getPassword());
  }

  @Test
  public void testGetUserAndPasswordUnknownURI() throws Exception {
    URIish uri = new URIish("http://testRepo.example.com/testrepo");

    UserPasswordCredentials storedCredentials = store.getCredentials(uri);
    assertNull(storedCredentials);
  }

  @Test
  public void testPutUserAndPasswordURIContainingUserAndPass()
      throws Exception {
    URIish uri = new URIish(
        "http://user:pass@testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);

    ISecurePreferences node = secureStoreForTest.node(EGitSecureStore
        .calcNodePath(uri).toString());
    assertEquals("agitter", node.get("user", null));
    assertTrue(node.isEncrypted("password"));
    assertEquals("letmein", node.get("password", null));
  }

  @Test
  public void testGetUserAndPasswordURIContainingUserAndPass()
      throws Exception {
    store.putCredentials(
        new URIish("http://testRepo.example.com/testrepo"),
        new UserPasswordCredentials("agitter", "letmein"));
    UserPasswordCredentials credentials = store.getCredentials(new URIish(
        "http://agitter:letmein@testRepo.example.com/testrepo"));
    assertEquals("agitter", credentials.getUser());
    assertEquals("letmein", credentials.getPassword());
  }

  @Test
  public void testGetUserAndPasswordURIContainingOtherUserAndPass()
      throws Exception {
    store.putCredentials(
        new URIish("http://testRepo.example.com/testrepo"),
        new UserPasswordCredentials("agitter", "letmein"));
    assertNull(store.getCredentials(new URIish(
        "http://otheruser:otherpass@testRepo.example.com/testrepo")));
  }

  @Test
  public void testClearCredentials() throws Exception {
    URIish uri = new URIish("http://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);
    store.clearCredentials(uri);
    assertEquals(null, store.getCredentials(uri));
  }

  @Test
  public void testEnsureDefaultPortHttp() throws Exception {
    URIish uri = new URIish("http://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);
    URIish uri2 = new URIish("http://testRepo.example.com:80/testrepo");
    assertEquals(credentials.getUser(), store.getCredentials(uri2).getUser());
    assertEquals(credentials.getPassword(), store.getCredentials(uri2).getPassword());
  }

  @Test
  public void testEnsureDefaultPortHttps() throws Exception {
    URIish uri = new URIish("https://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);
    URIish uri2 = new URIish("https://testRepo.example.com:443/testrepo");
    assertEquals(credentials.getUser(), store.getCredentials(uri2).getUser());
    assertEquals(credentials.getPassword(), store.getCredentials(uri2).getPassword());
  }

  @Test
  public void testEnsureDefaultPortSftp() throws Exception {
    URIish uri = new URIish("sftp://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);
    URIish uri2 = new URIish("sftp://testRepo.example.com:22/testrepo");
    assertEquals(credentials.getUser(), store.getCredentials(uri2).getUser());
    assertEquals(credentials.getPassword(), store.getCredentials(uri2).getPassword());
  }

  @Test
  public void testEnsureDefaultPortFtp() throws Exception {
    URIish uri = new URIish("ftp://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);
    URIish uri2 = new URIish("ftp://testRepo.example.com:21/testrepo");
    assertEquals(credentials.getUser(), store.getCredentials(uri2).getUser());
    assertEquals(credentials.getPassword(), store.getCredentials(uri2).getPassword());
  }

  @Test
  public void testEnsureDefaultPortSsh() throws Exception {
    URIish uri = new URIish("ssh://agitter@testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);
    URIish uri2 = new URIish("ssh://testRepo.example.com:22/testrepo");
    assertEquals(credentials.getUser(), store.getCredentials(uri2).getUser());
    assertEquals(credentials.getPassword(), store.getCredentials(uri2).getPassword());
  }

  @Test
  public void testClearCredentialsTwice() throws Exception {
    URIish uri = new URIish("http://testRepo.example.com/testrepo");
    UserPasswordCredentials credentials = new UserPasswordCredentials(
        "agitter", "letmein");
    store.putCredentials(uri, credentials);
    store.clearCredentials(uri);
    assertEquals(null, store.getCredentials(uri));
    store.clearCredentials(uri);
    assertEquals(null, store.getCredentials(uri));
  }

  private void setupNewSecureStore() throws IOException,
      MalformedURLException {
    HashMap<String, Object> options = new HashMap<String, Object>();
    options.put(IProviderHints.DEFAULT_PASSWORD, new PBEKeySpec(
        "masterpass".toCharArray()));
    String secureStorePath = ResourcesPlugin.getWorkspace().getRoot()
        .getLocation().append("testSecureStore").toOSString();
    File file = new File(secureStorePath);
    if (file.exists())
      FileUtils.delete(file, FileUtils.RECURSIVE | FileUtils.RETRY);
    URL url = file.toURI().toURL();
    secureStoreForTest = SecurePreferencesFactory.open(url, options);
    secureStoreForTest.node("/GIT").removeNode();
  }

}
TOP

Related Classes of org.eclipse.egit.core.securestorage.EGitSecureStoreTest

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.