innaircbot/src/test/java/InnaIrcBot/Commanders/JoinFloodHandlerTest.java

69 lines
2.0 KiB
Java

package InnaIrcBot.Commanders;
import InnaIrcBot.ProvidersConsumers.StreamProvider;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.net.*;
import static org.junit.jupiter.api.Assertions.*;
class JoinFloodHandlerTest {
private static final String serverName = "testServer";
private static final String channelName = "testChannel";
private final JoinFloodHandler joinFloodHandler = new JoinFloodHandler(3, 5, serverName, channelName);
private static final String userNickName = "John";
private Thread socketTestThread;
JoinFloodHandlerTest(){
try{
socketTestThread = new Thread(() -> {
try{
ServerSocket serverSocket = new ServerSocket(60000);
serverSocket.accept();
}
catch (Exception e){
e.printStackTrace();
}
});
socketTestThread.start();
Socket testSocket = new Socket();
testSocket.connect(new InetSocketAddress(60000));
StreamProvider.setStream(serverName, testSocket);
}
catch (IOException e){
e.printStackTrace();
}
}
@DisplayName("JoinFloodHandler: timeout 5s & limit 3 attempts")
@Test
void track() throws Exception{
assertNull(joinFloodHandler.users.get(userNickName));
joinFloodHandler.track(userNickName);
Thread.sleep(1000);
joinFloodHandler.track(userNickName);
Thread.sleep(2000);
joinFloodHandler.track(userNickName);
Thread.sleep(1990);
joinFloodHandler.track(userNickName);
assertNull(joinFloodHandler.users.get(userNickName));
Thread.sleep(900);
joinFloodHandler.track(userNickName);
assertTrue(joinFloodHandler.users.containsKey(userNickName));
}
/*
@AfterAll
static void cleanup(){
socketTestThread.interrupt();
}
*/
}