/***************************************************************************
* Copyright (c) 2014 VMware, Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package com.vmware.bdd.plugin.clouderamgr.service;
import static org.testng.Assert.assertEquals;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import mockit.Mock;
import mockit.MockClass;
import mockit.Mockit;
import org.mockito.Mockito;
import org.testng.annotations.Test;
import com.cloudera.api.ApiRootResource;
import com.cloudera.api.DataView;
import com.cloudera.api.model.ApiHost;
import com.cloudera.api.model.ApiHostList;
import com.cloudera.api.v2.HostsResourceV2;
import com.cloudera.api.v6.RootResourceV6;
import com.vmware.bdd.software.mgmt.plugin.intf.SoftwareManagerFactory;
public class TestClouderaManagerFactory {
private static ApiRootResource apiRootResource;
private static RootResourceV6 rootResourceV6;
private static HostsResourceV2 hostsResourceV2;
private static ApiHostList apiHostList;
@MockClass(realClass = ClouderaManagerClientBuilder.class)
public static class MockClouderaManagerClientBuilder {
private ClouderaManagerClientBuilder builder = new ClouderaManagerClientBuilder();
@Mock
public ClouderaManagerClientBuilder withHost(String host) {
return builder;
}
@Mock
public ClouderaManagerClientBuilder withPort(int port) {
return builder;
}
@Mock
public ClouderaManagerClientBuilder withBaseURL(URL url) {
return builder;
}
@Mock
public ClouderaManagerClientBuilder withUsernamePassword(String user, String password) {
return builder;
}
@Mock
public ApiRootResource build() {
return apiRootResource;
}
}
//@Test
public void testGetSoftwareManager() {
Mockit.setUpMock(MockClouderaManagerClientBuilder.class);
List<ApiHost> list = new ArrayList<ApiHost>();
ApiHost host = new ApiHost();
host.setHostname("127.0.0.1");
host.setIpAddress("127.0.0.1");
host.setHostId("host1");
list.add(host);
apiRootResource = Mockito.mock(ApiRootResource.class);
rootResourceV6 = Mockito.mock(RootResourceV6.class);
hostsResourceV2 = Mockito.mock(HostsResourceV2.class);
apiHostList = Mockito.mock(ApiHostList.class);
Mockito.when(apiHostList.getHosts()).thenReturn(list);
Mockito.when(hostsResourceV2.readHosts(DataView.SUMMARY)).thenReturn(apiHostList);
Mockito.when(rootResourceV6.getHostsResource()).thenReturn(hostsResourceV2);
Mockito.when(apiRootResource.getRootV6()).thenReturn(rootResourceV6);
SoftwareManagerFactory softwareManagerFactory = new ClouderaManagerFactory();
ClouderaManagerImpl softwareManager =
(ClouderaManagerImpl) softwareManagerFactory.getSoftwareManager(
"http://127.0.0.1:7180", "admin", "admin".toCharArray(),
"RSA_CERT");
System.out.println(softwareManager.getCmServerHostId());
assertEquals(softwareManager.getCmServerHostId(), "host1");
}
}