package org.apache.cloudstack.configitem.server.impl;
import static org.junit.Assert.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import io.cattle.platform.configitem.model.DefaultItemVersion;
import io.cattle.platform.configitem.model.ItemVersion;
import io.cattle.platform.configitem.registry.impl.ConfigItemRegistryImpl;
import io.cattle.platform.configitem.server.impl.ConfigItemServerImpl;
import io.cattle.platform.configitem.version.ConfigItemStatusManager;
import org.apache.cloudstack.configitem.server.model.impl.TestRequest;
import org.apache.cloudstack.configitem.server.model.impl.WriteStringConfigItem;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class ConfigItemServerImplTest {
ConfigItemServerImpl server;
ConfigItemRegistryImpl registry;
TestRequest req;
@Mock
ConfigItemStatusManager versionManager = null;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
registry = new ConfigItemRegistryImpl();
server = new ConfigItemServerImpl();
server.setVersionManager(versionManager);
server.setItemRegistry(registry);
req = new TestRequest();
}
@Test
public void test_not_found() throws Exception {
req.setItemName("missing");
server.handleRequest(req);
assertEquals(404, req.getResponseCode());
assertEquals("", req.getResponseContent());
}
@Test
@Ignore
public void test_write_string() throws Exception {
registry.register(new WriteStringConfigItem("string", "content"));
req.setItemName("string");
server.handleRequest(req);
assertEquals(200, req.getResponseCode());
assertEquals("content", req.getResponseContent());
}
@Test
@Ignore
public void test_applied() throws Exception {
ArgumentCaptor<ItemVersion> itemVersion = ArgumentCaptor.forClass(ItemVersion.class);
DefaultItemVersion version = DefaultItemVersion.fromString("000000042-ok");
req.setAppliedVersion(version);
server.handleRequest(req);
verify(versionManager).setApplied(eq(req.getClient()), eq("testitem"), itemVersion.capture());
assertEquals(42, itemVersion.getValue().getRevision());
assertEquals("ok", itemVersion.getValue().getSourceRevision());
assertEquals(200, req.getResponseCode());
}
@Test
@Ignore
public void test_applied_latest() throws Exception {
DefaultItemVersion version = DefaultItemVersion.fromString("latest");
req.setAppliedVersion(version);
req.setItemName("name1");
registry.register(new WriteStringConfigItem("name1", "content1"));
server.handleRequest(req);
assertTrue(version.isLatest());
verify(versionManager).setLatest(eq(req.getClient()), eq("name1"), eq("name1/content1"));
assertEquals(200, req.getResponseCode());
}
@Test
public void test_applied_latest_not_found() throws Exception {
DefaultItemVersion version = DefaultItemVersion.fromString("latest");
req.setAppliedVersion(version);
req.setItemName("name1");
server.handleRequest(req);
assertEquals(404, req.getResponseCode());
}
}