/******************************************************************************* * Copyright (c) 2015 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. ******************************************************************************/ package com.openshift.internal.restclient; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static com.openshift.internal.restclient.IntegrationTestHelper.*; import java.util.List; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.openshift.internal.restclient.model.Project; import com.openshift.internal.restclient.model.Service; import com.openshift.internal.restclient.model.project.OpenshiftProjectRequest; import com.openshift.internal.restclient.model.template.Template; import com.openshift.restclient.IClient; import com.openshift.restclient.IResourceFactory; import com.openshift.restclient.ResourceKind; import com.openshift.restclient.authorization.UnauthorizedException; import com.openshift.restclient.model.IBuildConfig; import com.openshift.restclient.model.IProject; import com.openshift.restclient.model.build.IBuildConfigBuilder; import com.openshift.restclient.model.project.IProjectRequest; import com.openshift.restclient.model.template.ITemplate; /** * @author Jeff Cantrill */ public class DefaultClientIntegrationTest { private static final String VERSION = "v1"; private static final Logger LOG = LoggerFactory.getLogger(DefaultClientIntegrationTest.class); private IClient client; private IntegrationTestHelper helper = new IntegrationTestHelper(); private IResourceFactory factory; @Before public void setup () { client = helper.createClientForBasicAuth(); factory = new ResourceFactory(client); } @Test public void testAuthContextIsAuthorizedWithValidUserNameAndPassword() { client = helper.createClient(); client.getAuthorizationContext().setUserName(helper.getDefaultClusterAdminUser()); client.getAuthorizationContext().setPassword(helper.getDefaultClusterAdminPassword()); client.getAuthorizationContext().isAuthorized(); } @Test(expected=UnauthorizedException.class) public void testAuthContextIsAuthorizedWithoutPasswordThrows() { client = helper.createClient(); client.getAuthorizationContext().setUserName(helper.getDefaultClusterAdminUser()); client.getAuthorizationContext().isAuthorized(); } public void testListprojects() { assertTrue(client.list(ResourceKind.PROJECT, "default").size() > 0); } @Test public void testReady() { client.getServerReadyStatus(); } @Test public void testListTemplates(){ Template template = null; IProject project = null; try { OpenshiftProjectRequest projectRequest = factory.create(VERSION, ResourceKind.PROJECT_REQUEST); projectRequest.setName(helper.generateNamespace()); template = factory.stub(ResourceKind.TEMPLATE, "mytemplate"); project = (IProject) client.create(projectRequest); template = client.create(template, project.getNamespace()); assertNotNull("Exp. the template to be found but was not", waitForResource(client, ResourceKind.TEMPLATE, project.getName(), template.getName(), 5 * MILLISECONDS_PER_SECOND)); List<ITemplate> list = client.list(ResourceKind.TEMPLATE, project.getName()); assertEquals(1, list.size()); for (ITemplate t : list) { LOG.debug(t.toString()); } } finally { cleanUpResource(client, template); cleanUpResource(client, project); } } @Test public void testResourceLifeCycle() { IProjectRequest projectRequest = factory.create(VERSION, ResourceKind.PROJECT_REQUEST); ((OpenshiftProjectRequest) projectRequest).setName(helper.generateNamespace()); LOG.debug(String.format("Stubbing project request: %s", projectRequest)); IProjectRequest otherProjectRequest = factory.create(VERSION, ResourceKind.PROJECT_REQUEST); ((OpenshiftProjectRequest) otherProjectRequest).setName(helper.generateNamespace()); LOG.debug(String.format("Stubbing project request: %s", otherProjectRequest)); Service service = factory.create(VERSION, ResourceKind.SERVICE); service.setNamespace(projectRequest.getName()); //this will be the project's namespace service.setName("some-service"); service.setTargetPort(6767); service.setPort(6767); service.setSelector("name", "barpod"); LOG.debug(String.format("Stubbing service: %s", service)); Service otherService = factory.create(VERSION, ResourceKind.SERVICE); otherService.setNamespace(otherProjectRequest.getName()); //this will be the project's namespace otherService.setName("some-other-service"); otherService.setTargetPort(8787); otherService.setPort(8787); otherService.setSelector("name", "foopod"); LOG.debug(String.format("Stubbing service: %s", otherService)); IProject project = null; IProject other = null; try{ project = (IProject) client.create(projectRequest); LOG.debug(String.format("Created project: %s", project)); other = (IProject) client.create(otherProjectRequest); LOG.debug(String.format("Created project: %s", project)); LOG.debug(String.format("Creating service: %s", service)); service = client.create(service); LOG.debug(String.format("Created service: %s", service)); LOG.debug(String.format("Creating service: %s", otherService)); otherService = client.create(otherService); LOG.debug(String.format("Created service: %s", otherService)); LOG.debug("Listing projects"); List<Project> projects = client.list(ResourceKind.PROJECT); LOG.debug(String.format("Listed projects: %s", projects)); LOG.debug(String.format("Listing services with namespace: %s", project.getNamespace())); List<Service> services = client.list(ResourceKind.SERVICE, project.getNamespace()); LOG.debug(String.format("Listed services: %s", services)); LOG.debug(String.format("Getting service: %s", otherService.getName())); Service s = client.get(ResourceKind.SERVICE, otherService.getName(), otherService.getNamespace()); LOG.debug(String.format("Retrieved service: %s", s.getName())); assertEquals("Expected there to be only one service returned", 1, services.size()); assertEquals("Expected to get the service with the correct name", service.getName(), services.get(0).getName()); IBuildConfigBuilder builder = client.adapt(IBuildConfigBuilder.class); IBuildConfig bc = builder.named("test") .fromGitSource() .fromGitUrl("https://github.com/openshift/origin.git") .inContextDir("examples/hello-openshift") .end() .usingSourceStrategy() .fromDockerImage("foo/bar") .end() .toImageStreamTag("foo/bar:latest") .build(); bc = client.create(bc, project.getNamespace()); LOG.debug(String.format("Created bc: %s", bc.getName())); LOG.debug(String.format("Trying to delete bc: %s", bc.getName())); client.delete(bc); }finally{ cleanUpResource(client, project); cleanUpResource(client, other); cleanUpResource(client, service); cleanUpResource(client, otherService); } } }