Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
37fb604
feat(aop): add denial reason to file-system SecurityException messages
SedaOran May 28, 2026
e815c28
feat(aop): add denial reason to all SecurityException messages
Jun 9, 2026
e7667df
chore: remove stray duplicate ares/ directory
Jun 9, 2026
bce8446
fix(architecture): exclude Ares's own engine classes from student arc…
Jun 9, 2026
d167283
fix(i18n): repair corrupted German message-bundle encoding and add mi…
Jun 9, 2026
d0d6fb8
build: add CI job timeout, surefire fork timeout and heap cap, and JV…
Jun 9, 2026
006a5ef
test: retire superseded legacy FileSystemAccessTest suite
Jun 9, 2026
d3ffca8
test(policy): trust the aop.allowed FileSystemAccessTest harness in r…
Jun 9, 2026
e8671ea
test: align stale api unit tests with current production behaviour
Jun 9, 2026
0202cfc
test: pin English locale for AOP/thread integration tests and fix Thr…
Jun 9, 2026
cf03182
test: migrate Structural/TrustedClasses users off defunct annotations…
Jun 9, 2026
91eed66
test(network): connect to the external echo server instead of an in-J…
Jun 9, 2026
8cbff69
test(thread): let SecurityException propagate from forbidden thread-c…
Jun 9, 2026
0419f74
test(filesystem): add trusted/nottrusted delete fixture directories
Jun 9, 2026
d48a85c
docs: add AGENTS.md repository conventions for network tests
Jun 9, 2026
d16cbdc
Fix generated security test copy paths
Jun 10, 2026
df0a9e3
Handle default Maven source directories
Jun 10, 2026
631de1a
Fix loopback network target parsing
Jun 10, 2026
16b91bb
Keep policy setup out of fixture lifecycle
Jun 10, 2026
9ce21bf
Stabilise allowed file-system integration tests
Jun 10, 2026
c2d2fcf
style: apply spotless formatting to satisfy the CI format gate
Jun 10, 2026
3b490b6
test: migrate integration test users from legacy annotations to @Policy
Jun 10, 2026
4d8345e
fix(aop): correct file-system and network classification of intercept…
Jun 10, 2026
b681791
fix(architecture): make WALA outcome-cache loading resilient to Secur…
Jun 10, 2026
cc35bc6
test(architecture): correct forbidden file-system within-paths and as…
Jun 10, 2026
2a254d9
test(precompile): write the generated scaffold to a temporary directory
Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ jobs:

runs-on: ubuntu-22.04

# Fail fast and preserve the test log instead of letting the heavy suite run
# until the runner loses communication (~1h). Lets us see which test hangs.
timeout-minutes: 45

steps:
- name: Checkout Repository
uses: actions/checkout@v4
Expand Down
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,11 @@ gradle-app.setting
/build
/.gradle

# Safety net for the generated security-test scaffold, in case it is ever written
# into the working directory instead of a temporary folder (see PrecompileTest).
/PhobosCopyTool.sh
/SpecificExercise.cfg
/ares/
/de/
/resources/

34 changes: 34 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# AGENTS.md

Repository conventions for automated agents and contributors working on Ares.

## Testing network access (incoming and outgoing)

A sandboxed test JVM must **never spin up its own server** (echo server, socket
listener, etc.) to test incoming or outgoing connections.

**Why:** Ares is the security boundary under test. Any server started inside the
same JVM as the student code is itself subject to the active security policy, so
Ares intercepts its thread, its `ServerSocket` bind and its `accept()`. A
failure then cannot be attributed to the behaviour being tested (the student's
client connection, or the student's own server) versus the test fixture failing
to start. A fixture must live **outside** the boundary it helps test.

**Rule:**

- Outgoing-connection tests connect to an **external echo server** at a
configurable endpoint. The server runs as a separate process or CI service on
the loopback at the agreed port (currently `25565`). The test exercises only
the student's client behaviour.
- If the external echo server is not reachable, the test **skips** (JUnit
`Assumptions.abort`) rather than fails. "Missing echo server" is an expected
environmental condition locally; CI provides the server.
- An Ares `SecurityException` on an explicitly allowed connection is always a
real failure and must propagate (never skipped).
- Do not hard-code a self-hosted listener as the connection counterpart. Port
`25565` (Minecraft's default) collides easily; an external service avoids the
in-JVM `BindException`/thread/lifecycle flakiness entirely.

`NetworkUser` follows this rule: it no longer starts an in-process echo server;
`connectLocallyAllowed` targets the external echo server and skips when it is
absent.
41 changes: 0 additions & 41 deletions ares/api/architecture/ArchitectureTestCaseSupported.java

This file was deleted.

72 changes: 0 additions & 72 deletions ares/api/architecture/java/FileHandlerConstants.java

This file was deleted.

130 changes: 0 additions & 130 deletions ares/api/architecture/java/JavaArchitectureTestCaseSupported.java

This file was deleted.

Loading