Package org.platformlayer.service.git

Source Code of org.platformlayer.service.git.ITGitService

package org.platformlayer.service.git;

import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.URL;

import org.platformlayer.service.git.model.GitRepository;
import org.platformlayer.service.git.model.GitService;
import org.platformlayer.service.git.ops.GitServerController;
import org.platformlayer.service.openldap.model.LdapDomain;
import org.platformlayer.service.openldap.model.LdapService;
import org.platformlayer.service.openldap.ops.LdapServiceController;
import org.platformlayer.service.openldap.tests.OpenLdapTestHelpers;
import org.platformlayer.tests.PlatformLayerApiTest;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.fathomdb.io.IoUtils;

public class ITGitService extends PlatformLayerApiTest {

  @Override
  @BeforeMethod
  public void beforeMethod() {
    super.beforeMethod();

    getTypedItemMapper().addClass(LdapService.class);
    getTypedItemMapper().addClass(LdapDomain.class);

    getTypedItemMapper().addClass(GitService.class);
  }

  @Test
  public void testCreateAndDeleteItem() throws Exception {
    OpenLdapTestHelpers openLdap = new OpenLdapTestHelpers(getContext());
    LdapService ldapService = openLdap.createLdapServer();

    openFirewall(ldapService, LdapServiceController.PORT);

    String organizationName = "test.platformlayer.org";
    LdapDomain ldapDomain = openLdap.createLdapDomain(ldapService, organizationName);

    String id = "git" + random.randomAlphanumericString(8);

    GitService service = new GitService();
    service.dnsName = id + ".test.platformlayer.org";
    service.ldapGroup = "ou=Git Users,dc=test,dc=platformlayer,dc=org";

    service = putItem(id, service);
    service = waitForHealthy(service);

    InetSocketAddress socketAddress = getUniqueEndpoint(service);
    Assert.assertFalse(isPortOpen(socketAddress));

    openFirewall(service, GitServerController.PORT);
    Assert.assertTrue(isPortOpen(socketAddress));

    String repoId = "repo" + id;
    GitRepository repo = new GitRepository();
    repo.name = repoId;
    repo = putItem(repoId, repo);
    repo = waitForHealthy(repo);

    // TODO: Make endpoint http://<ip>:<port>/<path>...
    String url = "http://" + socketAddress.getAddress().getHostAddress() + ":" + socketAddress.getPort() + "/git/"
        + repoId;
    String username = null;
    String password = null;

    testGitRepo(url, username, password);
  }

  private void testGitRepo(String repoUrl, String username, String password) throws MalformedURLException {
    String fetchUrl = repoUrl;

    URL url = new URL(fetchUrl);

    // TODO: Create an LDAP user
    System.out.println("Warning - not properly checking git repo");

    /*
     * HttpURLConnection uc = (HttpURLConnection) url.openConnection(); sun.misc.BASE64Encoder enc = new
     * sun.misc.BASE64Encoder(); String userpassword = username + ":" + password; String encodedAuthorization =
     * enc.encode(userpassword.getBytes()); uc.setRequestProperty("Authorization", "Basic " + encodedAuthorization);
     * uc.connect(); InputStream is = uc.getInputStream(); String html = Io.readAll(is); is.close();
     * System.out.println(html);
     *
     * return html;
     */

    try {
      IoUtils.readAll(url);
    } catch (Exception e) {
      // We're not authenticated, so we expect a 401

      System.out.println(e);

      String message = e.getMessage();
      Assert.assertTrue(message.contains("HTTP response code: 401"));
    }
  }

}
TOP

Related Classes of org.platformlayer.service.git.ITGitService

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.