From 6a1cd9d8224b295cf827c1362f5ea6753a8c69af Mon Sep 17 00:00:00 2001 From: Martin Vu <22mvu7@gmail.com> Date: Thu, 3 Sep 2026 23:53:15 -0700 Subject: [PATCH 1/3] return 404 for missing workflow type --- .../resource/dashboard/user/workflow/WorkflowResource.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala b/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala index b8bead4b0ea..cc5cf3d6ec1 100644 --- a/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala +++ b/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala @@ -848,6 +848,9 @@ class WorkflowResource extends LazyLogging { @Path("/type/{wid}") def getWorkflowType(@PathParam("wid") wid: Integer): String = { val workflow: Workflow = workflowDao.fetchOneByWid(wid) + if (workflow == null) { + throw new NotFoundException(s"Workflow with id $wid not found") + } if (workflow.getIsPublic) { "Public" } else { From 36080880e9d4c2b29886636f6756ab3952c3b30d Mon Sep 17 00:00:00 2001 From: Martin Vu <22mvu7@gmail.com> Date: Fri, 4 Sep 2026 00:07:30 -0700 Subject: [PATCH 2/3] cover missing workflow type --- .../web/resource/dashboard/file/WorkflowResourceSpec.scala | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala b/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala index 1816ce9cd84..a1d0b64c6b2 100644 --- a/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala +++ b/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala @@ -947,6 +947,12 @@ class WorkflowResourceSpec assert(sizes.get(wid) == content.length) } + it should "return NotFoundException for a missing workflow type" in { + assertThrows[NotFoundException] { + workflowResource.getWorkflowType(Integer.valueOf(2147483647)) + } + } + "WorkflowResource.getSize" should "return an empty map for a null or empty id list" in { assert(workflowResource.getSize(null).isEmpty) assert(workflowResource.getSize(Collections.emptyList()).isEmpty) From f725f38543351ff4f336fe83772ec62bf306bbbc Mon Sep 17 00:00:00 2001 From: Martin Vu <22mvu7@gmail.com> Date: Fri, 4 Sep 2026 17:31:21 -0700 Subject: [PATCH 3/3] fix test name to throw --- .../web/resource/dashboard/file/WorkflowResourceSpec.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala b/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala index a1d0b64c6b2..1dbe959b428 100644 --- a/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala +++ b/amber/src/test/scala/org/apache/texera/web/resource/dashboard/file/WorkflowResourceSpec.scala @@ -947,7 +947,7 @@ class WorkflowResourceSpec assert(sizes.get(wid) == content.length) } - it should "return NotFoundException for a missing workflow type" in { + it should "throw NotFoundException for a missing workflow type" in { assertThrows[NotFoundException] { workflowResource.getWorkflowType(Integer.valueOf(2147483647)) }