/*******************************************************************************
* Copyright (c) 2014-2016 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.internal.restclient;
import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jboss.dmr.ModelNode;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import com.openshift.internal.restclient.authorization.AuthorizationContext;
import com.openshift.internal.restclient.model.Pod;
import com.openshift.restclient.IResourceFactory;
import com.openshift.restclient.ResourceKind;
import com.openshift.restclient.model.IPod;
/**
* @author Jeff Cantrill
* @author Andre Dietisheim
*/
@RunWith(MockitoJUnitRunner.class)
public class DefaultClientTest extends TypeMapperFixture{
private static final String VERSION = "v1";
private DefaultClient client;
private ModelNode response;
private Pod podFrontEnd;
private Pod podBackEnd;
private IResourceFactory factory;
private URL baseUrl;
@Before
public void setUp() throws Exception{
super.setUp();
this.baseUrl = new URL("http://myopenshift");
givenAClient();
givenAPodList();
getHttpClient().whenRequestTo(TypeMapperFixture.base + "/api/v1/namespaces/aNamespace/pods").thenReturn(responseOf(response.toJSONString(false)));
}
private void givenAClient() throws Exception{
factory = new ResourceFactory(null);
client = (DefaultClient) getIClient();//new DefaultClient(baseUrl, getHttpClient(), factory, getApiTypeMapper(), new AuthorizationContext(null));
factory = client.getResourceFactory();
}
private void givenAPodList(){
this.podFrontEnd = factory.create(VERSION, ResourceKind.POD);
podFrontEnd.setName("frontend");
podFrontEnd.setNamespace("aNamespace");
podFrontEnd.addLabel("name", "frontend");
podFrontEnd.addLabel("env", "production");
this.podBackEnd = factory.create(VERSION, ResourceKind.POD);
podBackEnd.setName("backend");
podBackEnd.setNamespace("aNamespace");
podBackEnd.addLabel("name", "backend");
podBackEnd.addLabel("env", "production");
Pod otherPod = factory.create(VERSION, ResourceKind.POD);
otherPod.setName("other");
otherPod.setNamespace("aNamespace");
otherPod.addLabel("env", "production");
this.response = new ModelNode();
response.get("apiVersion").set(VERSION);
response.get("kind").set("PodList");
ModelNode items = response.get("items");
items.add(podFrontEnd.getNode());
items.add(otherPod.getNode());
items.add(podBackEnd.getNode());
}
private DefaultClient givenClient(URL baseUrl, String token, String user) {
DefaultClient client = new DefaultClient(baseUrl, null, null, null, new AuthorizationContext(token,user,null));
return client;
}
@Test
public void clientShouldEqualClientWithSameUrl() throws Exception {
assertThat(givenClient(baseUrl,null,null))
.isEqualTo(givenClient(baseUrl,null,null));
}
@Test
public void clientShouldNotEqualClientWithDifferentUrl() throws Exception {
assertThat(givenClient(baseUrl,null,null))
.isNotEqualTo(givenClient(new URL("http://localhost:8443"),null,null));
}
public void client_should_equal_client_with_same_user_with_different_token() throws Exception {
DefaultClient tokenClientOne = givenClient(baseUrl, "tokenOne", "aUser");
DefaultClient tokenClientTwo = givenClient(baseUrl,"tokenTwo", "aUser");
assertThat(tokenClientOne).isEqualTo(tokenClientTwo);
}
@Test
public void client_should_not_equal_client_with_different_username() throws Exception {
DefaultClient tokenClientOne = givenClient(baseUrl,"aToken", "aUser");
DefaultClient tokenClientTwo = givenClient(baseUrl, "aToken", "differentUser");
assertThat(tokenClientOne).isNotEqualTo(tokenClientTwo);
}
}