package com.jenjinstudios.world.client; import com.jenjinstudios.core.MessageIO; import com.jenjinstudios.core.io.Message; import com.jenjinstudios.world.client.message.ExecutableWorldChecksumResponse; import com.jenjinstudios.world.client.message.ExecutableWorldFileResponse; import com.jenjinstudios.world.client.message.WorldClientMessageFactory; import org.mockito.Mockito; import org.testng.Assert; import org.testng.annotations.Test; import java.io.File; /** * @author Caleb Brinkman */ public class ServerWorldFileTrackerTest { @Test(timeOut = 5000) public void testRequestWorldServerFileChecksum() throws Exception { WorldClient worldClient = Mockito.mock(WorldClient.class); WorldClientMessageFactory messageFactory = Mockito.mock(WorldClientMessageFactory.class); File worldFile = Mockito.mock(File.class); Message message = Mockito.mock(Message.class); MessageIO messageIO = Mockito.mock(MessageIO.class); Mockito.when(worldClient.getMessageFactory()).thenReturn(messageFactory); Mockito.when(message.getArgument("checksum")).thenReturn("abc123".getBytes()); Mockito.when(messageFactory.generateWorldChecksumRequest()).thenReturn(message); Mockito.when(worldClient.getMessageIO()).thenReturn(messageIO); ServerWorldFileTracker serverWorldFileTracker = new ServerWorldFileTracker(worldClient, worldFile); Mockito.when(worldClient.getServerWorldFileTracker()).thenReturn(serverWorldFileTracker); serverWorldFileTracker.setWaitingForChecksum(true); serverWorldFileTracker.requestServerWorldFileChecksum(); Assert.assertTrue(serverWorldFileTracker.isWaitingForChecksum()); ExecutableWorldChecksumResponse exec = new ExecutableWorldChecksumResponse(worldClient, message); exec.runImmediate(); Assert.assertFalse(serverWorldFileTracker.isWaitingForChecksum()); Assert.assertEquals(serverWorldFileTracker.getChecksum(), "abc123".getBytes()); } @Test(timeOut = 5000) public void testRequestServerWorldFile() throws Exception { WorldClient worldClient = Mockito.mock(WorldClient.class); WorldClientMessageFactory messageFactory = Mockito.mock(WorldClientMessageFactory.class); File worldFile = Mockito.mock(File.class); Message message = Mockito.mock(Message.class); MessageIO messageIO = Mockito.mock(MessageIO.class); Mockito.when(worldClient.getMessageFactory()).thenReturn(messageFactory); Mockito.when(message.getArgument("fileBytes")).thenReturn("abc123".getBytes()); Mockito.when(messageFactory.generateWorldChecksumRequest()).thenReturn(message); Mockito.when(worldClient.getMessageIO()).thenReturn(messageIO); ServerWorldFileTracker serverWorldFileTracker = new ServerWorldFileTracker(worldClient, worldFile); Mockito.when(worldClient.getServerWorldFileTracker()).thenReturn(serverWorldFileTracker); serverWorldFileTracker.setWaitingForFile(true); serverWorldFileTracker.requestServerWorldFile(); Assert.assertTrue(serverWorldFileTracker.isWaitingForFile()); ExecutableWorldFileResponse exec = new ExecutableWorldFileResponse(worldClient, message); exec.runImmediate(); Assert.assertFalse(serverWorldFileTracker.isWaitingForFile()); Assert.assertEquals(serverWorldFileTracker.getBytes(), "abc123".getBytes()); } }