Skip to content

Commit

Permalink
test: Implement AssertJ assertions
Browse files Browse the repository at this point in the history
test: Split listener code for testing
  • Loading branch information
4drian3d committed Jun 17, 2022
1 parent 7428bb9 commit ef97b50
Show file tree
Hide file tree
Showing 8 changed files with 233 additions and 135 deletions.
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ dependencies {
testImplementation("org.spongepowered:configurate-hocon:$configurate")
testImplementation(platform("org.junit:junit-bom:5.8.1"))
testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("org.assertj:assertj-core:3.23.1")
testImplementation("com.velocitypowered:velocity-api:3.1.2-SNAPSHOT")
testImplementation("org.slf4j:slf4j-api:1.7.32")
testImplementation("com.github.ben-manes.caffeine:caffeine:$caffeine")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@
import com.velocitypowered.api.event.PostOrder;
import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.player.KickedFromServerEvent;
import com.velocitypowered.api.event.player.KickedFromServerEvent.ServerKickResult;
import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.server.RegisteredServer;

import me.dreamerzero.kickredirect.KickRedirect;
import me.dreamerzero.kickredirect.enums.CheckMode;
import me.dreamerzero.kickredirect.utils.DebugInfo;
import me.dreamerzero.kickredirect.utils.ServerUtils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;

Expand All @@ -28,13 +31,11 @@ public KickListener(final KickRedirect plugin){
public void onKickFromServer(final KickedFromServerEvent event, final Continuation continuation){
if(!event.getResult().isAllowed()){
continuation.resume();
plugin.debugCache().put(event.getPlayer().getUniqueId(), new DebugInfo(event, null));
cache(event, null);
return;
}
final Optional<String> optional = event.getServerKickReason().map(SERIALIZER::serialize);
if (optional.isPresent() && containsCheck(optional.get())
|| optional.isEmpty() && plugin.config().get().redirectOnNullMessage()
) {

if (reasonCheck(event)) {
final RegisteredServer server = ServerUtils.getConfigServer(plugin);
if (server == null) {
plugin.getProxy().getConsoleCommandSource().sendMessage(
Expand All @@ -47,37 +48,62 @@ public void onKickFromServer(final KickedFromServerEvent event, final Continuati
)
)
);
final String kickMessage = plugin.messages().get().kickMessage();
if(!kickMessage.isBlank()) {
event.setResult(
KickedFromServerEvent.DisconnectPlayer.create(
plugin.formatter().format(kickMessage, event.getPlayer())
)
);
}
applyKickResult(event);
continuation.resume();
plugin.debugCache().put(event.getPlayer().getUniqueId(), new DebugInfo(event, null));
cache(event, null);
return;
}
final String redirectMessage = plugin.messages().get().redirectMessage();
event.setResult(redirectMessage.isBlank()
? KickedFromServerEvent.RedirectPlayer.create(server)
: KickedFromServerEvent.RedirectPlayer.create(
server, plugin.formatter().format(redirectMessage, event.getPlayer())));
event.setResult(redirectResult(server, event.getPlayer()));
continuation.resume();
plugin.debugCache().put(event.getPlayer().getUniqueId(), new DebugInfo(event, server.getServerInfo().getName()));
cache(event, server.getServerInfo().getName());
return;
}
continuation.resume();
plugin.debugCache().put(event.getPlayer().getUniqueId(), new DebugInfo(event, null));
cache(event, null);
}

private boolean containsCheck(final String message) {
for (final String msg : plugin.config().get().getMessagesToCheck()) {
if (message.contains(msg)) {
return plugin.config().get().checkMode() == CheckMode.WHITELIST;
void cache(KickedFromServerEvent event, String serverName) {
if(plugin.config().get().debug())
plugin.debugCache()
.put(
event.getPlayer().getUniqueId(),
new DebugInfo(event, serverName)
);
}

boolean reasonCheck(KickedFromServerEvent event) {
final Optional<String> optional = event.getServerKickReason().map(SERIALIZER::serialize);
if(optional.isPresent()) {
final String message = optional.get();
for (final String msg : plugin.config().get().getMessagesToCheck()) {
if (message.contains(msg)) {
return plugin.config().get().checkMode() == CheckMode.WHITELIST;
}
}
return plugin.config().get().checkMode() != CheckMode.WHITELIST;
} else {
return plugin.config().get().redirectOnNullMessage();
}
}

ServerKickResult redirectResult(RegisteredServer server, Player player) {
final String redirectMessage = plugin.messages().get().redirectMessage();
if(redirectMessage.isBlank()) {
return KickedFromServerEvent.RedirectPlayer.create(server);
} else {
final Component message = plugin.formatter().format(redirectMessage, player);
return KickedFromServerEvent.RedirectPlayer.create(server, message);
}
}

void applyKickResult(KickedFromServerEvent event) {
final String kickMessage = plugin.messages().get().kickMessage();
if(!kickMessage.isBlank()) {
event.setResult(
KickedFromServerEvent.DisconnectPlayer.create(
plugin.formatter().format(kickMessage, event.getPlayer())
)
);
}
return plugin.config().get().checkMode() != CheckMode.WHITELIST;
}
}
10 changes: 9 additions & 1 deletion src/test/java/me/dreamerzero/kickredirect/EventBundle.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@ private EventBundle(final Builder builder) {
this.plugin = new KickRedirect(
this.proxyServer,
Path.of("build", "reports", "tests", "test"),
LoggerFactory.getLogger(ListenerTest.class),
LoggerFactory.getLogger(EventBundle.class),
this.proxyServer.getPluginManager()
);
plugin.initialize(true);
if(builder.debug)
plugin.config().get().debug(true);
this.continuation = new TestContinuation();
this.player = builder.player;
this.event = builder.event;
Expand Down Expand Up @@ -79,6 +81,7 @@ public EventTask applyDebug() {
public static class Builder implements AbstractBuilder<EventBundle> {
private Player player;
private KickedFromServerEvent event;
private boolean debug;

private Builder() {}

Expand All @@ -92,6 +95,11 @@ public Builder event(EventBuilder event) {
return this;
}

public Builder debug(boolean debug) {
this.debug = debug;
return this;
}

@Override
public @NotNull EventBundle build() {
return new EventBundle(this);
Expand Down
8 changes: 4 additions & 4 deletions src/test/java/me/dreamerzero/kickredirect/KickResultType.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,24 @@
public enum KickResultType {
NOTIFY {
@Override
ServerKickResult result(Component component) {
public ServerKickResult result(Component component) {
return KickedFromServerEvent.Notify.create(component);
}
},
DISCONNECT{
@Override
ServerKickResult result(Component component) {
public ServerKickResult result(Component component) {
return KickedFromServerEvent.DisconnectPlayer.create(component);
}
},
REDIRECT{
@Override
ServerKickResult result(Component component) {
public ServerKickResult result(Component component) {
return KickedFromServerEvent.RedirectPlayer.create(new TestRegisteredServer(), component);
}
};

ServerKickResult result(Component component) {
public ServerKickResult result(Component component) {
return null;
}
}
66 changes: 0 additions & 66 deletions src/test/java/me/dreamerzero/kickredirect/ListenerTest.java

This file was deleted.

29 changes: 19 additions & 10 deletions src/test/java/me/dreamerzero/kickredirect/ServerUtilsTest.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package me.dreamerzero.kickredirect;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

Expand All @@ -16,26 +17,32 @@ class ServerUtilsTest {
void configSendMode() {
EventBundle bundle = EventBundle.builder().build();

assertEquals(
bundle.getProxyServer().getServer("lobby1").orElse(null),
ServerUtils.getConfigServer(bundle.getPlugin()));
var server = ServerUtils.getConfigServer(bundle.getPlugin());
assertThat(bundle.getProxyServer().getServer("lobby1"))
.isPresent()
.contains(server);
}

@Test
void randomSendMode() {
EventBundle bundle = EventBundle.builder().build();

assertNotNull(ServerUtils.getRandomServer(bundle.getPlugin()));
assertThat(ServerUtils.getRandomServer(bundle.getPlugin()))
.isNotNull()
.isIn(bundle.getProxyServer().getAllServers());
}

@Test
void firstServer() {
EventBundle bundle = EventBundle.builder().build();

assertNotNull(ServerUtils.getFirstServer(bundle.getPlugin()));
assertEquals(
bundle.getProxyServer().getServer("lobby1").orElse(null),
ServerUtils.getConfigServer(bundle.getPlugin()));
var server = ServerUtils.getFirstServer(bundle.getPlugin());

assertThat(server).isNotNull();

assertThat(bundle.getProxyServer().getServer("lobby1"))
.isPresent()
.contains(server);
}

@Test
Expand All @@ -44,6 +51,8 @@ void emptiestServer() {

RegisteredServer server = ServerUtils.getEmptiestServer(bundle.getPlugin());
assertNotNull(server);
assertEquals(server, bundle.getProxyServer().getServer("lobby2").orElse(null));
assertThat(bundle.getProxyServer().getServer("lobby2"))
.isPresent()
.contains(server);
}
}
Loading

0 comments on commit ef97b50

Please sign in to comment.