package com.aol.micro.server.curator.lock;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.api.CreateBuilder;
import org.apache.curator.framework.api.ExistsBuilder;
import org.apache.curator.framework.api.ProtectACLCreateModeStatPathAndBytesable;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
public class DistributedLockServiceCuratorImplTest {
@Test
public void createNonExisting() throws Exception {
CuratorFramework client = mock(CuratorFramework.class);
ExistsBuilder builder = mock(ExistsBuilder.class);
CreateBuilder createBuilder = mock(CreateBuilder.class);
ProtectACLCreateModeStatPathAndBytesable<String> protector = mock(ProtectACLCreateModeStatPathAndBytesable.class);
when(builder.forPath(anyString())).thenReturn(null);
when(client.checkExists()).thenReturn(builder);
when(client.create()).thenReturn(createBuilder);
when(createBuilder.creatingParentContainersIfNeeded()).thenReturn((ProtectACLCreateModeStatPathAndBytesable<String>)protector);
new DistributedLockServiceCuratorImpl(client, "/", 0);
verify(protector).forPath(anyString(), anyObject());
}
@Test
public void createNonExisting2() throws Exception {
CuratorFramework client = mock(CuratorFramework.class);
ExistsBuilder builder = mock(ExistsBuilder.class);
CreateBuilder createBuilder = mock(CreateBuilder.class);
ProtectACLCreateModeStatPathAndBytesable<String> protector = mock(ProtectACLCreateModeStatPathAndBytesable.class);
when(builder.forPath(anyString())).thenReturn(new Stat());
when(client.checkExists()).thenReturn(builder);
when(client.create()).thenReturn(createBuilder);
when(createBuilder.creatingParentContainersIfNeeded()).thenReturn(protector);
new DistributedLockServiceCuratorImpl(client, "/", 0);
verify(protector, times(0)).forPath(anyString(), anyObject());
}
}