Package com.openshift.client.utils

Source Code of com.openshift.client.utils.ApplicationAssert

/*******************************************************************************
* Copyright (c) 2007 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.client.utils;

import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.io.IOException;
import java.net.URL;
import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.fest.assertions.AssertExtension;

import com.openshift.client.IApplication;
import com.openshift.client.IDomain;
import com.openshift.client.IField;
import com.openshift.client.IGearProfile;
import com.openshift.client.ISeverity;
import com.openshift.client.Message;
import com.openshift.client.Messages;
import com.openshift.client.OpenShiftException;
import com.openshift.client.cartridge.IEmbeddableCartridge;
import com.openshift.client.cartridge.IEmbeddedCartridge;
import com.openshift.client.cartridge.IStandaloneCartridge;
import com.openshift.client.cartridge.query.LatestEmbeddableCartridge;
import com.openshift.internal.client.utils.StreamUtils;

/**
* @author André Dietisheim
*/
public class ApplicationAssert implements AssertExtension {

  public static final Pattern APPLICATION_URL_PATTERN = Pattern.compile("https*://(.+)-([^\\.]+)\\.(.+)/(.*)");
  public static final Pattern GIT_URL_PATTERN = Pattern.compile("ssh://(.+)@(.+)-([^\\.]+)\\.(.+)/~/git/(.+).git/");
 
  private static final long APPLICATION_WAIT_TIMEOUT = 2 * 60 * 1000;
 
  private IApplication application;

  public ApplicationAssert(IApplication application) {
    assertThat(application).isNotNull();
    this.application = application;
  }

  public ApplicationAssert hasName(String name) {
    assertEquals(name, application.getName());
    return this;
  }

  public ApplicationAssert hasUUID(String uuid) {
    assertEquals(uuid, application.getUUID());
    return this;
  }

  public ApplicationAssert hasUUID() {
    assertNotNull(application.getUUID());
    return this;
  }

  public ApplicationAssert hasCartridge(IStandaloneCartridge cartridge) {
    assertEquals(cartridge, application.getCartridge());
    return this;
  }

  public ApplicationAssert hasCreationTime(String creationTime) {
    assertEquals(creationTime, application.getCreationTime());
    return this;
  }

  public ApplicationAssert hasCreationTime() {
    assertNotNull(application.getCreationTime());
    return this;
  }

  public ApplicationAssert hasGitUrl(String gitUrl) {
    assertEquals(gitUrl, application.getGitUrl());
    return this;
  }

  public ApplicationAssert hasValidGitUrl() {
    Matcher matcher = GIT_URL_PATTERN.matcher(application.getGitUrl());
    assertTrue(matcher.matches());
    assertEquals(5, matcher.groupCount());
   
    assertEquals(application.getUUID(), matcher.group(1));
    assertEquals(application.getName(), matcher.group(2));
    assertEquals(application.getDomain().getSuffix(), matcher.group(4));
    assertEquals(application.getName(), matcher.group(5));

    return this;
  }

  public ApplicationAssert hasInitialGitUrl() {
    assertThat(application.getInitialGitUrl()).isNotEmpty();
    return this;
  }

  public ApplicationAssert hasNoInitialGitUrl() {
    assertThat(application.getInitialGitUrl()).isNull();
    return this;
  }

  public ApplicationAssert hasInitialGitUrl(String initialGitUrl) {
    assertThat(application.getInitialGitUrl()).isEqualTo(initialGitUrl);
    return this;
  }

  public ApplicationAssert hasApplicationUrl(String applicationUrl) {
    assertEquals(applicationUrl, application.getApplicationUrl());
    return this;
  }

  public ApplicationAssert hasValidApplicationUrl() {
    assertApplicationUrl();
    return this;
  }

  private void assertApplicationUrl() {
    Matcher matcher = APPLICATION_URL_PATTERN.matcher(application.getApplicationUrl());
    assertTrue(matcher.matches());
    assertTrue(matcher.groupCount() >= 3);

    assertEquals(application.getName(), matcher.group(1));
    IDomain domain = application.getDomain();
    assertEquals(domain.getId(), matcher.group(2));
    assertEquals(domain.getSuffix(), matcher.group(3));
  }
 
  public ApplicationAssert hasGearProfile(IGearProfile gearProfile) {
    assertThat(application.getGearProfile()).isEqualTo(gearProfile);
    return this;
  }

  public ApplicationAssert hasEmbeddedCartridges(LatestEmbeddableCartridge... selectors)
      throws OpenShiftException {
    for (LatestEmbeddableCartridge selector : selectors) {
      hasEmbeddedCartridge(selector);
    }
    return this;
  }

  public ApplicationAssert hasEmbeddedCartridge(LatestEmbeddableCartridge selector)
      throws OpenShiftException {
    hasEmbeddedCartridge(selector.get(application));
    return this;
  }

  public ApplicationAssert hasEmbeddedCartridge(IEmbeddableCartridge... cartridges)
      throws OpenShiftException {
    for (IEmbeddableCartridge cartridge : cartridges) {
      hasEmbeddedCartridge(cartridge);
    }
   
    return this;
  }

  public ApplicationAssert hasEmbeddedCartridge(IEmbeddableCartridge cartridge)
      throws OpenShiftException {
    assertTrue(application.hasEmbeddedCartridge(cartridge));

    return this;
  }

  public ApplicationAssert hasEmbeddedCartridgeNames(String... embeddableCartridgeNames) throws OpenShiftException {
    if (embeddableCartridgeNames.length == 0) {
      assertEquals(0, application.getEmbeddedCartridges().size());
    }

    for (String cartridgeName : embeddableCartridgeNames) {
      assertTrue(application.hasEmbeddedCartridge(cartridgeName));
    }

    return this;
  }

  public ApplicationAssert hasEmbeddableCartridges(int numberOf) {
    assertNotNull(application.getEmbeddedCartridges());
    assertEquals(numberOf, application.getEmbeddedCartridges().size());
    return this;
  }
 
  public ApplicationAssert hasNotEmbeddableCartridgeNames(String... embeddableCartridgeNames) throws OpenShiftException {   
    for (String cartridgeName : embeddableCartridgeNames) {
      assertFalse(application.hasEmbeddedCartridge(cartridgeName));
    }

    return this;
  }

  public ApplicationAssert hasNotEmbeddableCartridges(LatestEmbeddableCartridge... selectors) throws OpenShiftException {
    for (LatestEmbeddableCartridge selector : selectors) {
      assertThat(application.hasEmbeddedCartridge(selector.get(application))).isFalse();
    }

    return this;
  }

  public ApplicationAssert hasAlias(String... aliasNames) {
    if (aliasNames.length == 0) {
      assertEquals(0, application.getAliases().size());
    }

    for (String cartridgeName : aliasNames) {
      assertTrue(application.hasAlias(cartridgeName));
    }

    return this;
  }

  public void hasNotEmbeddableCartridge(LatestEmbeddableCartridge constraint) {
    hasNotEmbeddableCartridge(constraint.get(application));
  }

  public void hasNotEmbeddableCartridge(IEmbeddableCartridge cartridge) {
    hasNotEmbeddableCartridge(cartridge.getName());
  }

  public void hasNotEmbeddableCartridge(String name) {
    assertNull(getEmbeddableCartridge(name));
  }

  public void assertThatDoesntContainCartridges(Collection<IEmbeddableCartridge> shouldNotBeContained, List<IEmbeddedCartridge> cartridges) {
    for(IEmbeddableCartridge shouldNot : shouldNotBeContained) {
      assertFalse(cartridges.contains(shouldNot));
    }
  }

  private IEmbeddedCartridge getEmbeddableCartridge(String name) {
    IEmbeddedCartridge matchingCartridge = null;
    for (IEmbeddedCartridge cartridge : application.getEmbeddedCartridges()) {
      if (name.equals(cartridge.getName())) {
        matchingCartridge = cartridge;
        break;
      }
    }
    return matchingCartridge;
  }

  public void assertThatContainsCartridges(Collection<IEmbeddableCartridge> shouldBeContained, List<IEmbeddedCartridge> cartridgesToCheck) {
    for (IEmbeddableCartridge cartridge : shouldBeContained) {
      assertTrue(cartridgesToCheck.contains(cartridge));
    }
  }
 
  public ApplicationAssert pageContains(String page, String contains) throws IOException {
    URL appUrl = new URL(application.getApplicationUrl() + page);
    assertThat(application.waitForAccessible(APPLICATION_WAIT_TIMEOUT)).isTrue();
    String content = StreamUtils.readToString(appUrl.openConnection().getInputStream());
    assertThat(content).contains(contains);
    return this;
  }

  public ApplicationAssert hasMessage(IField field, ISeverity severity) throws IOException {
    Messages messages = application.getMessages();
    assertThat(messages).isNotNull();
    List<Message> matchingMessages = messages.getBy(field, severity);
    assertThat(matchingMessages).isNotEmpty();
    return this;
  }

  public ApplicationAssert hasMessage(IField field) throws IOException {
    Messages messages = application.getMessages();
    assertThat(messages).isNotNull();
    List<Message> matchingMessages = messages.getBy(field);
    assertThat(matchingMessages).isNotEmpty();
    return this;
  }

  public ApplicationAssert hasResultFieldOrResultSeverityMessage() throws IOException {
    Messages messages = application.getMessages();
    assertThat(messages).isNotNull();
    List<Message> matchingMessages = messages.getBy(IField.RESULT);
    if (matchingMessages == null
        || matchingMessages.isEmpty()) {
      matchingMessages = messages.getBy(IField.DEFAULT, ISeverity.RESULT);
      assertThat(matchingMessages).isNotEmpty();
    }
    return this;
  }

  public ApplicationAssert hasDomain(IDomain domain) {
    assertThat(application.getDomain()).isEqualTo(domain);
    return this;
  }

}
TOP

Related Classes of com.openshift.client.utils.ApplicationAssert

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.