Unit test tuning

This commit is contained in:
Sven Kubiak 2020-07-27 21:03:45 +02:00
parent 5a4e6dc285
commit ea649a0a9f
4 changed files with 147 additions and 8 deletions

View File

@ -162,9 +162,6 @@ public class Glance implements API {
*/ */
@SuppressWarnings({ "rawtypes", "unchecked" }) @SuppressWarnings({ "rawtypes", "unchecked" })
public Future<PushoverResponse> pushAsync() throws InterruptedException, ExecutionException { public Future<PushoverResponse> pushAsync() throws InterruptedException, ExecutionException {
Objects.requireNonNull(body.get(Param.TOKEN.toString()), "Token is required for a glance");
Objects.requireNonNull(body.get(Param.USER.toString()), "User is required for a glance");
return AsyncService.getInstance().execute(new AsyncExecutor(this)); return AsyncService.getInstance().execute(new AsyncExecutor(this));
} }

View File

@ -277,8 +277,8 @@ public class Message implements API {
*/ */
@Override @Override
public PushoverResponse push() throws IOException, InterruptedException { public PushoverResponse push() throws IOException, InterruptedException {
Objects.requireNonNull(body.get(Param.TOKEN.toString()), "Token is required for validation"); Objects.requireNonNull(body.get(Param.TOKEN.toString()), "Token is required for a message");
Objects.requireNonNull(body.get(Param.USER.toString()), "User is required for validation"); Objects.requireNonNull(body.get(Param.USER.toString()), "User is required for a message");
Objects.requireNonNull(body.get(Param.MESSAGE.toString()), "Message is required for a message"); Objects.requireNonNull(body.get(Param.MESSAGE.toString()), "Message is required for a message");
Validate.checkArgument(body.get(Param.MESSAGE.toString()).length() <= 1024, "Message can not exceed more than 1024 characters"); Validate.checkArgument(body.get(Param.MESSAGE.toString()).length() <= 1024, "Message can not exceed more than 1024 characters");
@ -317,9 +317,6 @@ public class Message implements API {
*/ */
@SuppressWarnings({ "unchecked", "rawtypes" }) @SuppressWarnings({ "unchecked", "rawtypes" })
public Future<PushoverResponse> pushAsync() throws InterruptedException, ExecutionException { public Future<PushoverResponse> pushAsync() throws InterruptedException, ExecutionException {
Objects.requireNonNull(body.get(Param.TOKEN.toString()), "Token is required for a glance");
Objects.requireNonNull(body.get(Param.USER.toString()), "User is required for a glance");
return AsyncService.getInstance().execute(new AsyncExecutor(this)); return AsyncService.getInstance().execute(new AsyncExecutor(this));
} }

View File

@ -1,7 +1,10 @@
package jpushover.apis; package jpushover.apis;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.IOException;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.svenkubiak.jpushover.JPushover; import de.svenkubiak.jpushover.JPushover;
@ -114,4 +117,34 @@ public class GlanceTests {
//then //then
assertTrue(glance.getValue(Param.PERCENT.toString()).equals(String.valueOf(value))); assertTrue(glance.getValue(Param.PERCENT.toString()).equals(String.valueOf(value)));
} }
@Test
void testMissingToken() throws IOException, InterruptedException {
//given
String expectedMessage = "Token is required for a glance";
//when
Exception exception = assertThrows(NullPointerException.class, () -> {
JPushover.newGlance().push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
void testMissingUser() throws IOException, InterruptedException {
//given
String expectedMessage = "User is required for a glance";
//when
Exception exception = assertThrows(NullPointerException.class, () -> {
JPushover.newGlance().withToken("foo").push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
} }

View File

@ -1,7 +1,10 @@
package jpushover.apis; package jpushover.apis;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.IOException;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.svenkubiak.jpushover.JPushover; import de.svenkubiak.jpushover.JPushover;
@ -206,4 +209,113 @@ public class MessageTests {
//then //then
assertTrue(message.getValue(Param.CALLBACK.toString()).equals(value)); assertTrue(message.getValue(Param.CALLBACK.toString()).equals(value));
} }
@Test
void testMissingToken() throws IOException, InterruptedException {
//given
String expectedMessage = "Token is required for a message";
//when
Exception exception = assertThrows(NullPointerException.class, () -> {
JPushover.newMessage().push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
void testMissingUser() throws IOException, InterruptedException {
//given
String expectedMessage = "User is required for a message";
//when
Exception exception = assertThrows(NullPointerException.class, () -> {
JPushover.newMessage().withToken("foo").push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
void testMissingMessage() throws IOException, InterruptedException {
//given
String expectedMessage = "Message is required for a message";
//when
Exception exception = assertThrows(NullPointerException.class, () -> {
JPushover.newMessage().withToken("foo").withUser("bar").push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
void testMessageLimit() throws IOException, InterruptedException {
//given
String message = "RiZzOldb0QxPYyVPR0IsbkKnUdw12YEFQng1hb34Yu3xxckX1Jhm8zOEKK4COsdFDq0eE1YBUHlLD3EXks63FPJKRvG8hswsSDBDwi3xvvtbUm2dFMjaHFGvhcT30QKcbItvHqdXyGqa19DSrwEHhHYB7ZdwSsXQmcgscjJMWFTEoANRb5LqWc0a5LWHqesgHP42GccHNCZ03SL3cwa4KUF5H005jMhYv0rWmjqDb7v8voyAThaUQUXpeIMBMnOTOilJUD70DDDWxKZDKj7ymoMApNfvtvRT4sc8ghcWy7KtO0FNWJ5YbKWiXZFpaz7q7KaxzCa5KERGbft2QBoSEIgF0iUTXdp5XkFGXYyQUwOEmlx7I68EhhwOWHO9Qoqi5Nj3B703zbcMDR4BQnlct4Yzqa50bZDahIr7GOAEZrGtzs9IG8BuThWzdZIf64Zg01jVHH8kfCBkg4q9gzBdbARiQ5KmycviBezNgp10JcNE3h4OJBdhmnCm2TO3sXtHbkfznbxhc9sN1FnvVCdnQhBhwAp0TBNzNmbuuebxMccVCyhqjJU1K4XrSQu5Qa3Zlsb2QQ88SeYtQe0tm4a8ojLY9PcdofVGG2EOgNzFCHjgHyja30x6a4CFH71QfG6AkpXfDisYUSB2SxozHEPQKvlyVcfhOla2d9jDbeAAuhtyWW3UhydOspqwaAwXSsKFROfnpzn6izw1eeXqrxxTj08HQuBUpdUB4G8nyQurXFHC2iH6M7Iyb6QZ7WfVLMV5Yn16Pk6AzGVFRLmvMo0yex72vTQqsxNhA15Jjgh1NDqaTJiqLGyRvj9WLWsgop2YwabnwT6MN3Lxa17J3xPg6I1hhnEWkn8GtQmcStOJDOn3nIQC1qq79NUOqfPrY1vGNBfD3cCDEKi7fwoJvBmW8sn04P2UGu9Y0H6lBnklYX5yBk7Je7GKPyYQgxKt72Ij8F9v21eanrVPi8aV39JeMvF8X7ZT0BtqrxE3EG34eYaakRZwiGjl1MwSUFquHoRPE";
String expectedMessage = "Message can not exceed more than 1024 characters";
//when
Exception exception = assertThrows(IllegalArgumentException.class, () -> {
JPushover.newMessage().withToken("foo").withUser("bar").withMessage(message).push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
void testTitleLimit() throws IOException, InterruptedException {
//given
String title = "XNaH6iAPYS0E2q5ZMAsKbOyAXArfmcWhx1D4HXTt0rmKShR0lLzH87041kw6YNQ5lluOTi5LrWKqQLBe7KuT9JTJLJVEMPGQv7fCN2Wb8aXy57v3g954sVqEQhZmP3xBXL42DMmOMg9iPj4uAGq5S80Bb3omjZTM5IqXa8LhnQbjQVBbNfTrFUQOkjrcLThFj1POURX2iwVvKud0ySNLnDWXLANS2NBt6gUH7L0rihUwEIhwXyvcnr3J3kt";
String expectedMessage = "Title can not exceed more than 250 characters";
//when
Exception exception = assertThrows(IllegalArgumentException.class, () -> {
JPushover.newMessage().withToken("foo").withUser("bar").withMessage("foobar").withTitle(title).push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
void testUrlLimit() throws IOException, InterruptedException {
//given
String url = "FqP7inUPZBTXO43n6OVbCrDI1FkIEhb8CZDa86pgNV2EgWbArcEgnVTwqpy95DvSr0ZaDs3X624QDTqyygvVl76WkXayt15Mix8jUklgOVHdMjTrnHcsFQLoAu2Tmuq3UzAVw9ekNtXv3GzilNOCuBJPMm3U3bMfu9mZIEZNQ6c1xttFPAbQYGciw4UL8mIX3ZpoqfTtWRtFW4ZQcvgkoUKKxcvR9isx4bBjPDvE8NvjUmrv0kYwUrfl98nCHorYPzRX5RMr2w46MwWhylfw5WTS5M2fpIwjWBoAQH3IBfvExxEhGIjAfCIuBDBh5LlNvW4Blg3j89DV4gmAA9FkfDt2SuWPBu3XuV7pQCz7Mkq4S9uoCp9W7ZceqntQ73WAlkQkO2NQzggPPP3byxljLAMAZk13a7L2J8NMlQc5eOIVkMSdrLnkhklsiLqPZS2Su8aYNveG3IZsLjYjwdfPMZ36t7gkxd7AsjYXDndGfur6FsH7a5MMrAYrQFEYUyRE9";
String expectedMessage = "URL can not exceed more than 512 characters";
//when
Exception exception = assertThrows(IllegalArgumentException.class, () -> {
JPushover.newMessage().withToken("foo").withUser("bar").withMessage("foobar").withUrl(url).push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
void testUrlTitleLimit() throws IOException, InterruptedException {
//given
String urlTitle = "FqP7inUPZBTXO43n6OVbCrDI1FkIEhb8CZDa86pgNV2EgWbArcEgnVTwqpy95DvSr0ZaDs3X624QDTqyygvVl76WkXayt15Mix8jUklgOVHdMjTrnHcsFQLoAu2Tmuq3UzAVw9ekNtXv3GzilNOCuBJPMm3U3bMfu9mZIEZNQ6c1xttFPAbQYGciw4UL8mIX3ZpoqfTtWRtFW4ZQcvgkoUKKxcvR9isx4bBjPDvE8NvjUmrv0kYwUrfl98nCHorYPzRX5RMr2w46MwWhylfw5WTS5M2fpIwjWBoAQH3IBfvExxEhGIjAfCIuBDBh5LlNvW4Blg3j89DV4gmAA9FkfDt2SuWPBu3XuV7pQCz7Mkq4S9uoCp9W7ZceqntQ73WAlkQkO2NQzggPPP3byxljLAMAZk13a7L2J8NMlQc5eOIVkMSdrLnkhklsiLqPZS2Su8aYNveG3IZsLjYjwdfPMZ36t7gkxd7AsjYXDndGfur6FsH7a5MMrAYrQFEYUyRE9";
String expectedMessage = "URL Title can not exceed more than 100 characters";
//when
Exception exception = assertThrows(IllegalArgumentException.class, () -> {
JPushover.newMessage().withToken("foo").withUser("bar").withMessage("foobar").withUrlTitle(urlTitle).push();
});
String actualMessage = exception.getMessage();
//then
assertTrue(actualMessage.contains(expectedMessage));
}
} }