/******************************************************************************* * Copyright (c) 2014 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.fail; import java.util.Collection; import java.util.List; import java.util.regex.Pattern; import org.fest.assertions.AssertExtension; import com.openshift.client.IQuickstart; import com.openshift.client.cartridge.ICartridge; import com.openshift.internal.client.AlternativeCartridges; import com.openshift.internal.client.utils.StringUtils; /** * @author Andre Dietisheim */ public class QuickstartAssert 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 IQuickstart quickstart; public QuickstartAssert(IQuickstart quickstart) { assertThat(quickstart).isNotNull(); this.quickstart = quickstart; } public QuickstartAssert hasName(String name) { assertThat(quickstart.getName()).isEqualTo(name); return this; } public QuickstartAssert hasHref(String href) { assertThat(quickstart.getHref()).isEqualTo(href); return this; } public QuickstartAssert hasId(String id) { assertThat(quickstart.getId()).isEqualTo(id); return this; } public QuickstartAssert hasSummary(String summary) { assertThat(quickstart.getSummary()).isEqualTo(summary); return this; } public void hasCartridgeNames(Collection<String>... assertedAlternatives) { assertThat(assertedAlternatives).isNotNull(); assertThat(quickstart.getSuitableCartridges()).isNotNull(); assertThat(assertedAlternatives.length).isEqualTo(quickstart.getSuitableCartridges().size()); for (int i = 0; i < assertedAlternatives.length; i++) { assertThat(quickstart.getSuitableCartridges().get(i).get()) .onProperty("name").containsOnly(assertedAlternatives[i].toArray()); } } public void hasCartridges(Collection<ICartridge> shouldBeContained) { assertThat(quickstart.getSuitableCartridges()).isNotNull(); for (ICartridge assertedCartridge : shouldBeContained) { assertCartridge(assertedCartridge, quickstart.getSuitableCartridges()); } } protected void assertCartridge(ICartridge assertedCartridge, List<AlternativeCartridges> allSuitableAlternatives) { for (AlternativeCartridges suitableAlternatives : allSuitableAlternatives) { if (suitableAlternatives.get().contains(assertedCartridge)) { return; } } fail(getCartridgeLabel(assertedCartridge) + " is not listed in the cartridges required by quickstart " + quickstart.getName()); } protected String getCartridgeLabel(ICartridge assertedCartridge) { String cartridgeId = assertedCartridge.getName(); if (StringUtils.isEmpty(cartridgeId)) { cartridgeId = String.valueOf(assertedCartridge.getUrl()); } return cartridgeId; } public QuickstartAssert hasWebsite(String website) { assertThat(quickstart.getWebsite()).isEqualTo(website); return this; } public QuickstartAssert hasTags(String... shouldBeContained) { assertThat(quickstart.getTags()) .isNotNull() .contains(shouldBeContained); return this; } public QuickstartAssert hasLanguage(String language) { assertThat(quickstart.getLanguage()).isEqualTo(language); return this; } public QuickstartAssert hasInitialGitUrl(String initialGitUrl) { assertThat(quickstart.getInitialGitUrl()).isEqualTo(initialGitUrl); return this; } public QuickstartAssert hasProvider(String provider) { assertThat(quickstart.getProvider()).isEqualTo(provider); return this; } }