From 8603d5cb1f89164713573183870761006032edf9 Mon Sep 17 00:00:00 2001 From: Alisa Novik <40357628+Alisa-Novik@users.noreply.github.com> Date: Sun, 18 May 2025 12:32:20 -0400 Subject: [PATCH] Remove debug prints and stray binary --- .gitignore | 1 + a.out | 0 .../com/norwood/core/AnnotationProcessor.java | 13 +++++---- src/main/java/com/norwood/routing/Router.java | 1 - .../java/com/norwood/userland/Scraper.java | 2 +- .../com/norwood/userland/UserController.java | 2 -- .../norwood/util/HttpRequestSerializer.java | 1 - src/test/java/com/norwood/AppTest.java | 13 +++++++++ .../norwood/core/FileConfigManagerTest.java | 13 +++++++++ .../com/norwood/core/KatanaContainerTest.java | 22 +++++++++++++++ .../com/norwood/core/KatanaResponseTest.java | 12 +++++++++ .../java/com/norwood/routing/RouteTest.java | 21 +++++++++++++++ .../java/com/norwood/routing/RouterTest.java | 27 +++++++++++++++++++ .../userland/AnnotationProcessorTest.java | 27 +++++++++++++++++++ 14 files changed, 143 insertions(+), 12 deletions(-) delete mode 100644 a.out create mode 100644 src/test/java/com/norwood/core/FileConfigManagerTest.java create mode 100644 src/test/java/com/norwood/core/KatanaContainerTest.java create mode 100644 src/test/java/com/norwood/core/KatanaResponseTest.java create mode 100644 src/test/java/com/norwood/routing/RouteTest.java create mode 100644 src/test/java/com/norwood/routing/RouterTest.java create mode 100644 src/test/java/com/norwood/userland/AnnotationProcessorTest.java diff --git a/.gitignore b/.gitignore index 47995c8..6f46133 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ target/* .settings .git +a.out diff --git a/a.out b/a.out deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/norwood/core/AnnotationProcessor.java b/src/main/java/com/norwood/core/AnnotationProcessor.java index c9ecbf2..8cb70bf 100644 --- a/src/main/java/com/norwood/core/AnnotationProcessor.java +++ b/src/main/java/com/norwood/core/AnnotationProcessor.java @@ -19,10 +19,11 @@ public void processAnnotations(List> classDefinitions, Router router) { for (Class userClass : classDefinitions) { for (Field field : userClass.getDeclaredFields()) { for (Annotation an : field.getDeclaredAnnotations()) { - System.out.println("Anno: " + an.getClass()); switch (an) { case Inject _ -> inject(field); - default -> System.out.println("Unknown annotation: " + an.toString()); + default -> { + /* ignored */ + } } } } @@ -31,7 +32,9 @@ public void processAnnotations(List> classDefinitions, Router router) { switch (an) { case Get a -> routeGet(a, router, method); case Post a -> routePost(a, router, method); - default -> System.out.println("Unknown annotation: " + an.toString()); + default -> { + /* ignored */ + } } } } @@ -46,9 +49,6 @@ private void inject(Field field) { field.setAccessible(true); field.set(owner, dependency); - - System.out.println(owner); - System.out.println(dependency); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException e) @@ -88,7 +88,6 @@ private Object invokeMethod(Method method, Object instance, Object arg1) { try { return method.invoke(instance, arg1); } catch (IllegalAccessException | InvocationTargetException e) { - System.out.println("Error invoking stuff..."); e.printStackTrace(); throw new RuntimeException("Failed executing method: " + method.getName()); } diff --git a/src/main/java/com/norwood/routing/Router.java b/src/main/java/com/norwood/routing/Router.java index eecf997..6bd01a9 100644 --- a/src/main/java/com/norwood/routing/Router.java +++ b/src/main/java/com/norwood/routing/Router.java @@ -11,7 +11,6 @@ public class Router { final List routes = new ArrayList<>(); public Object route(HttpRequest request) { - System.out.println(resolveController()); return findRouteByPath(request).handler().apply(resolveController(), request); } diff --git a/src/main/java/com/norwood/userland/Scraper.java b/src/main/java/com/norwood/userland/Scraper.java index 0322467..0044365 100644 --- a/src/main/java/com/norwood/userland/Scraper.java +++ b/src/main/java/com/norwood/userland/Scraper.java @@ -9,7 +9,7 @@ public class Scraper { public void scrape() { - System.out.println("test"); + // placeholder implementation } public void sendGetRequest(String uriStr) { diff --git a/src/main/java/com/norwood/userland/UserController.java b/src/main/java/com/norwood/userland/UserController.java index f7f3952..dd61026 100644 --- a/src/main/java/com/norwood/userland/UserController.java +++ b/src/main/java/com/norwood/userland/UserController.java @@ -16,7 +16,6 @@ public class UserController { @Post(path = "/test1") public int route1(HttpRequest request) { - System.out.println("[UserController] /test1 executed :" + request.method()); return 1; } @@ -32,7 +31,6 @@ public String userServiceTest(HttpRequest request) { @Get(path = "/test2") public String route2(HttpRequest request) { - System.out.println("[UserController] /test2 executed :" + request.method()); try { return Files.readString(Path.of("resources/index.html")); } catch (IOException e) { diff --git a/src/main/java/com/norwood/util/HttpRequestSerializer.java b/src/main/java/com/norwood/util/HttpRequestSerializer.java index b91444e..de43b63 100644 --- a/src/main/java/com/norwood/util/HttpRequestSerializer.java +++ b/src/main/java/com/norwood/util/HttpRequestSerializer.java @@ -6,7 +6,6 @@ public class HttpRequestSerializer { public static HttpRequest unserialize(String req) { - System.out.println("Got request: " + req); String[] httpRequest = req.split(" "); String method = httpRequest[0]; diff --git a/src/test/java/com/norwood/AppTest.java b/src/test/java/com/norwood/AppTest.java index 33fd67b..f917d6c 100644 --- a/src/test/java/com/norwood/AppTest.java +++ b/src/test/java/com/norwood/AppTest.java @@ -5,6 +5,7 @@ import junit.framework.TestSuite; import java.net.http.HttpRequest; +import java.net.URI; import com.norwood.util.HttpRequestSerializer; @@ -28,4 +29,16 @@ public void testSerializeUnserializeRoundtrip() { assertEquals("/hello", req.uri().getPath()); assertEquals(line, HttpRequestSerializer.serialize(req)); } + + public void testGetPathWithQueryAndFragment() { + URI uri = URI.create("https://example.com/foo?bar=1#frag"); + assertEquals("/foo?bar=1#frag", HttpRequestSerializer.getPath(uri)); + } + + public void testUnserializeAbsoluteUrl() { + String line = "GET https://example.com/abs HTTP/1.1"; + HttpRequest req = HttpRequestSerializer.unserialize(line); + assertEquals("https://example.com/abs", req.uri().toString()); + assertEquals("/abs", HttpRequestSerializer.getPath(req.uri())); + } } diff --git a/src/test/java/com/norwood/core/FileConfigManagerTest.java b/src/test/java/com/norwood/core/FileConfigManagerTest.java new file mode 100644 index 0000000..1cf0a27 --- /dev/null +++ b/src/test/java/com/norwood/core/FileConfigManagerTest.java @@ -0,0 +1,13 @@ +package com.norwood.core; + +import junit.framework.TestCase; + +public class FileConfigManagerTest extends TestCase { + public void testGetReturnsConfigValue() { + FileConfigManager manager = new FileConfigManager(); + String val = manager.get("beanRegistryClass"); + assertEquals("com.norwood.userland.UserBeanRegistry", val); + // second call should return same value from cache + assertEquals(val, manager.get("beanRegistryClass")); + } +} diff --git a/src/test/java/com/norwood/core/KatanaContainerTest.java b/src/test/java/com/norwood/core/KatanaContainerTest.java new file mode 100644 index 0000000..b6f69ee --- /dev/null +++ b/src/test/java/com/norwood/core/KatanaContainerTest.java @@ -0,0 +1,22 @@ +package com.norwood.core; + +import junit.framework.TestCase; + +public class KatanaContainerTest extends TestCase { + public void testSetAndGet() { + KatanaContainer container = new KatanaContainer(); + container.set(String.class, "hello"); + assertEquals("hello", container.get(String.class)); + } + + public void testSetTwiceThrows() { + KatanaContainer container = new KatanaContainer(); + container.set(Integer.class, 1); + try { + container.set(Integer.class, 2); + fail("Expected ContainerException"); + } catch (ContainerException e) { + // expected + } + } +} diff --git a/src/test/java/com/norwood/core/KatanaResponseTest.java b/src/test/java/com/norwood/core/KatanaResponseTest.java new file mode 100644 index 0000000..44c20b5 --- /dev/null +++ b/src/test/java/com/norwood/core/KatanaResponseTest.java @@ -0,0 +1,12 @@ +package com.norwood.core; + +import junit.framework.TestCase; + +public class KatanaResponseTest extends TestCase { + public void testSuccessAndError() { + KatanaResponse success = KatanaResponse.success(123); + assertEquals("123", success.value()); + KatanaResponse err = KatanaResponse.error("fail"); + assertEquals("fail", err.value()); + } +} diff --git a/src/test/java/com/norwood/routing/RouteTest.java b/src/test/java/com/norwood/routing/RouteTest.java new file mode 100644 index 0000000..4444c43 --- /dev/null +++ b/src/test/java/com/norwood/routing/RouteTest.java @@ -0,0 +1,21 @@ +package com.norwood.routing; + +import junit.framework.TestCase; + +public class RouteTest extends TestCase { + public void testHttpMethodFromString() { + assertEquals(Route.HttpMethod.GET, Route.HttpMethod.fromString("get")); + assertEquals(Route.HttpMethod.POST, Route.HttpMethod.fromString("POST")); + } + + public void testOfPathAndToString() { + Route r = Route.get("/x", (o, req) -> "ok"); + assertTrue(r.ofPath("/x")); + assertTrue(r.toString().contains("GET /x")); + } + + public void testOfPathFalse() { + Route r = Route.post("/y", (o, req) -> "a"); + assertFalse(r.ofPath("/x")); + } +} diff --git a/src/test/java/com/norwood/routing/RouterTest.java b/src/test/java/com/norwood/routing/RouterTest.java new file mode 100644 index 0000000..b186f99 --- /dev/null +++ b/src/test/java/com/norwood/routing/RouterTest.java @@ -0,0 +1,27 @@ +package com.norwood.routing; + +import com.norwood.core.KatanaCore; +import com.norwood.userland.UserController; +import junit.framework.TestCase; + +import java.net.URI; +import java.net.http.HttpRequest; + +public class RouterTest extends TestCase { + public void testDefineAndHasRoute() { + Router r = new Router(); + r.defineRoute(Route.get("/a", (o, req) -> "ok")); + assertTrue(r.hasRouteWithPath("/a")); + assertFalse(r.hasRouteWithPath("/b")); + } + + public void testRouteCallsHandler() { + Router r = new Router(); + if (KatanaCore.container.get(UserController.class) == null) { + KatanaCore.container.set(UserController.class, new UserController()); + } + r.defineRoute(Route.get("/c", (o, req) -> "res")); + HttpRequest req = HttpRequest.newBuilder().uri(URI.create("http://x/c")).GET().build(); + assertEquals("res", r.route(req)); + } +} diff --git a/src/test/java/com/norwood/userland/AnnotationProcessorTest.java b/src/test/java/com/norwood/userland/AnnotationProcessorTest.java new file mode 100644 index 0000000..0f70b1f --- /dev/null +++ b/src/test/java/com/norwood/userland/AnnotationProcessorTest.java @@ -0,0 +1,27 @@ +package com.norwood.userland; + +import com.norwood.core.AnnotationProcessor; +import com.norwood.core.KatanaCore; +import com.norwood.routing.Router; +import junit.framework.TestCase; + +public class AnnotationProcessorTest extends TestCase { + public void testProcessAnnotationsInjectsAndRegistersRoutes() { + if (KatanaCore.container.get(UserController.class) == null) { + KatanaCore.container.set(UserController.class, new UserController()); + } + + AnnotationProcessor ap = new AnnotationProcessor(); + Router router = new Router(); + + ap.processAnnotations(KatanaCore.container.classDefinitions(), router); + + UserController ctrl = KatanaCore.container.get(UserController.class); + assertNotNull(ctrl.userService); + assertNotNull(ctrl.scraper); + assertTrue(router.hasRouteWithPath("/test1")); + assertTrue(router.hasRouteWithPath("/test2")); + assertTrue(router.hasRouteWithPath("/test3")); + assertTrue(router.hasRouteWithPath("/scrape")); + } +}