diff --git a/core/src/main/java/nl/tudelft/ewi/auta/core/Core.java b/core/src/main/java/nl/tudelft/ewi/auta/core/Core.java
index 993c6f9df7950c15af36a93fece2b2ce32afaa4d..99cb89ec6d45f1348a0f282cc7dedf17b7c2c10f 100644
--- a/core/src/main/java/nl/tudelft/ewi/auta/core/Core.java
+++ b/core/src/main/java/nl/tudelft/ewi/auta/core/Core.java
@@ -11,6 +11,7 @@ import java.util.concurrent.TimeUnit;
 
 import ch.qos.logback.core.spi.AppenderAttachable;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import nl.tudelft.ewi.auta.common.model.metric.MetricFixturesProvider;
 import nl.tudelft.ewi.auta.core.logging.RingbufferAppender;
 import nl.tudelft.ewi.auta.core.plugin.PluginLoader;
 import nl.tudelft.ewi.auta.core.plugin.PluginRepository;
@@ -387,18 +388,33 @@ public class Core implements WebMvcConfigurer {
         return (RingbufferAppender) root.getAppender("ringbuffer");
     }
 
+    /**
+     * Configures Spring to return both XML and JSON and not attempt any guesses.
+     *
+     * @param configurer the content negotiation configurer to configure
+     */
     @Override
     public void configureContentNegotiation(final ContentNegotiationConfigurer configurer) {
         configurer.favorParameter(false);
         configurer.favorPathExtension(false);
     }
 
+    /**
+     * Configers Spring to return both XML and JSON.
+     *
+     * @param converters the message converters to add our converters to
+     */
     @Override
     public void configureMessageConverters(final List<HttpMessageConverter<?>> converters) {
         converters.add(new MappingJackson2HttpMessageConverter());
         converters.add(new MappingJackson2XmlHttpMessageConverter());
     }
 
+    /**
+     * Configures Spring to allow encoded URIs in request URLs.
+     *
+     * @return the configured firewall
+     */
     @Bean
     public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
         final var firewall = new StrictHttpFirewall();
@@ -409,4 +425,16 @@ public class Core implements WebMvcConfigurer {
         firewall.setAllowBackSlash(true);
         return firewall;
     }
+
+    /**
+     * A factory returning metric test fixture providers.
+     *
+     * @param gson the GSON instance to deserialize fixtures with
+     *
+     * @return the fixture provider
+     */
+    @Bean
+    public MetricFixturesProvider metricFixturesProviderFactory(final Gson gson) {
+        return new MetricFixturesProvider(gson);
+    }
 }
diff --git a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/AssignmentController.java b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/AssignmentController.java
index fa36fa8df50f5a669912bf4bf9f25064b3780ab6..a11c56fd511fc628b516d1ca9a128657fb19a050 100644
--- a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/AssignmentController.java
+++ b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/AssignmentController.java
@@ -4,6 +4,7 @@ import nl.tudelft.ewi.auta.common.model.metric.MetricName;
 import nl.tudelft.ewi.auta.common.model.metric.MetricSettings;
 import nl.tudelft.ewi.auta.core.database.AssignmentRepository;
 import nl.tudelft.ewi.auta.core.model.Assignment;
+import nl.tudelft.ewi.auta.core.model.PassingScriptTestCasesParser;
 import nl.tudelft.ewi.auta.core.response.Response;
 import nl.tudelft.ewi.auta.core.response.exception.AssignmentAlreadyExistsException;
 import nl.tudelft.ewi.auta.core.response.exception.InvalidAssignmentNameException;
@@ -46,6 +47,10 @@ public class AssignmentController extends ControllerBase {
      */
     private final AssignmentRepository assignmentStore;
 
+    /**
+     * The parser for parsing passing script tests.
+     */
+    private final PassingScriptTestCasesParser passingScriptTestCasesParser;
 
     /**
      * The service that manages course-level security for this controller.
@@ -56,11 +61,16 @@ public class AssignmentController extends ControllerBase {
      * Creates a new assignment controller.
      *
      * @param assignmentStore the assignment repository
+     * @param passingScriptTestCasesParser the parser for parsing passing script tests
      */
-    public AssignmentController(final AssignmentRepository assignmentStore,
-                                final CourseSecuredService securedService) {
+    public AssignmentController(
+            final AssignmentRepository assignmentStore,
+            final PassingScriptTestCasesParser passingScriptTestCasesParser,
+            final CourseSecuredService securedService
+    ) {
         this.assignmentStore = assignmentStore;
         this.securedService = securedService;
+        this.passingScriptTestCasesParser = passingScriptTestCasesParser;
     }
 
     /**
@@ -199,6 +209,7 @@ public class AssignmentController extends ControllerBase {
         return ResponseEntity.ok(res);
     }
 
+    @SuppressWarnings("unchecked")
     private void populateFromRequest(final Map<String, Object> req,
                                      final Assignment assignment) {
         // First extract the mandatory arguments
@@ -226,23 +237,19 @@ public class AssignmentController extends ControllerBase {
         assignment.setName(name);
         assignment.setAllowedLanguages(Collections.singleton(lang));
         assignment.setMetricSettings(stat.stream().map(o -> {
-            if (MetricName.valueOf((String) o.get("name")) == MetricName.DOCKER_LOGS) {
-                return new MetricSettings(
-                        MetricName.valueOf((String) o.get("name")),
-                        (String) o.get("script"),
-                        (String) o.get("formatter"),
-                        0,
-                        0,
-                        (String) o.get("dockerfile")
-                );
-            }
-            return new MetricSettings(
-                        MetricName.valueOf((String) o.get("name")),
-                        (String) o.get("script"),
-                        (String) o.get("formatter"),
-                        0,
-                        0
-                );
+            final var passingScriptTests = this.passingScriptTestCasesParser.parseTests(
+                    (List<Map<String, Object>>) o.get("scriptTests")
+            );
+            final var settings = new MetricSettings(
+                    MetricName.valueOf((String) o.get("name")),
+                    (String) o.get("script"),
+                    (String) o.get("formatter"),
+                    0,
+                    0,
+                    (String) o.get("dockerfile")
+            );
+            settings.setPassingScriptTestCases(passingScriptTests);
+            return settings;
         }).collect(Collectors.toUnmodifiableSet()));
     }
 }
diff --git a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/ControllerBase.java b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/ControllerBase.java
index d71ff1e8be4baab062640e263607ee7c7d422352..4ee16bfd8149c9bc3ca4ad9f384e3c2282402aa6 100644
--- a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/ControllerBase.java
+++ b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/ControllerBase.java
@@ -43,6 +43,10 @@ public class ControllerBase {
         }
     }
 
+    public Object getParam(final Map<String, Object> req, final String key) {
+        return this.getParam(req, key, Object.class);
+    }
+
     /**
      * Extracts a string field from the request body.
      *
diff --git a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/MetricsController.java b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/MetricsController.java
new file mode 100644
index 0000000000000000000000000000000000000000..601c23578501ca28986cc8ece6ed994e3c3a1609
--- /dev/null
+++ b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/MetricsController.java
@@ -0,0 +1,115 @@
+package nl.tudelft.ewi.auta.core.controller;
+
+import com.google.gson.Gson;
+import nl.tudelft.ewi.auta.common.model.metric.MetricFixturesProvider;
+import nl.tudelft.ewi.auta.core.communication.MessageReceiver;
+import nl.tudelft.ewi.auta.core.response.Response;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.util.Map;
+
+/**
+ * A controller serving information about the metrics supported by the current installation.
+ */
+@Controller
+public class MetricsController extends ControllerBase {
+    /**
+     * The message receiver.
+     */
+    private final MessageReceiver messageReceiver;
+
+    /**
+     * The GSON instance used to serialize the metrics.
+     */
+    private final Gson gson;
+
+    /**
+     * The provider for test fixtures.
+     */
+    private final MetricFixturesProvider fixturesProvider;
+
+    /**
+     * Creates a new metrics controller.
+     *
+     * @param messageReceiver the message receiver providing metrics known by the workers
+     * @param gson the GSON instance used to serialize the metrics
+     * @param fixturesProvider the provider for test fixtures
+     */
+    public MetricsController(
+            final MessageReceiver messageReceiver,
+            final Gson gson,
+            final MetricFixturesProvider fixturesProvider
+    ) {
+        this.messageReceiver = messageReceiver;
+        this.gson = gson;
+        this.fixturesProvider = fixturesProvider;
+    }
+
+    /**
+     * Gets a map of all languages and their metrics.
+     *
+     * @return the response
+     */
+    @GetMapping(path = "/api/v1/worker/metrics", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<Response> getMetricsAction() {
+        final var res = new Response();
+        res.put("metrics", this.messageReceiver.getMetrics());
+        return ResponseEntity.ok(res);
+    }
+
+    /**
+     * Returns the metrics as a {@code metrics} property of the global {@code MetricEditor} object.
+     *
+     * @return the metrics as an object property
+     *
+     * @deprecated originally a hack for the old UI to allow this resource to load in a blocking
+     *             fashion, no longer necessary
+     */
+    @GetMapping(path = "/api/v1/worker/metrics.js", produces = "text/javascript")
+    @Deprecated
+    public ResponseEntity<String> getMetricsJsAction() {
+        final var metrics = this.messageReceiver.getMetrics();
+        return ResponseEntity.ok()
+                .contentType(new MediaType("application", "javascript"))
+                .body("MetricEditor.metrics = " + this.gson.toJson(metrics));
+    }
+
+    /**
+     * Returns the test fixtures for metrics.
+     *
+     * The response is a JSON object resembling the following:
+     * {@code
+     * {
+     *     "fixtures": {
+     *         "CYCLOMATIC_COMPLEXITY": [
+     *             1,
+     *             7,
+     *             14,
+     *             615
+     *         ],
+     *         "DOCKER_LOGS": [
+     *             "BUILD SUCCESSFUL",
+     *             "BUILD FAILED"
+     *         ]
+     *     }
+     * }
+     * }
+     *
+     * It is important to note that the fixtures can be of any type, as long as the type is valid
+     * for the metric it belongs to.
+     *
+     * @return the test fixtures
+     */
+    @GetMapping(
+            path = "/api/v1/worker/metrics/test-fixtures",
+            produces = MediaType.APPLICATION_JSON_VALUE
+    )
+    public ResponseEntity<Response> getMetricTestFixturesAction() {
+        return ResponseEntity.ok(new Response(Map.of(
+                "fixtures", this.fixturesProvider.getFixtures()
+        )));
+    }
+}
diff --git a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/ScriptValidationController.java b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/ScriptValidationController.java
new file mode 100644
index 0000000000000000000000000000000000000000..bbe2690c1a226ed19831381b0f56c3d4866e85dd
--- /dev/null
+++ b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/ScriptValidationController.java
@@ -0,0 +1,271 @@
+package nl.tudelft.ewi.auta.core.controller;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import nl.tudelft.ewi.auta.common.model.PassingScriptTestCase;
+import nl.tudelft.ewi.auta.core.model.PassingScriptTestCasesParser;
+import nl.tudelft.ewi.auta.srf.iface.Script;
+import nl.tudelft.ewi.auta.srf.iface.ScriptExecutionContextFactory;
+import nl.tudelft.ewi.auta.srf.model.NoteCollection;
+import org.intellij.lang.annotations.Language;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.annotation.Nullable;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * A controller for criteria script validation actions.
+ */
+@Controller
+public class ScriptValidationController extends ControllerBase {
+    /**
+     * The factory building script execution contexts.
+     */
+    private final ScriptExecutionContextFactory scriptExecutionContextFactory;
+
+    /**
+     * The parser for parsing (criteria) script tests.
+     */
+    private final PassingScriptTestCasesParser passingScriptTestCasesParser;
+
+    /**
+     * Creates a new script validation controller.
+     *
+     * @param scriptExecutionContextFactory the factory building script execution contexts
+     * @param passingScriptTestCasesParser the parser for parsing script tests
+     */
+    public ScriptValidationController(
+            final ScriptExecutionContextFactory scriptExecutionContextFactory,
+            final PassingScriptTestCasesParser passingScriptTestCasesParser
+    ) {
+        this.scriptExecutionContextFactory = scriptExecutionContextFactory;
+        this.passingScriptTestCasesParser = passingScriptTestCasesParser;
+    }
+
+    /**
+     * Validates a passing script.
+     *
+     * @param req the request
+     *
+     * @return a test summary
+     *
+     * @throws Exception if validation fails for reasons unrelated to the script
+     */
+    @PostMapping(
+            path = "/api/v1/script/test/passing-script",
+            produces = MediaType.APPLICATION_JSON_VALUE
+    )
+    @SuppressWarnings("unchecked")
+    @SuppressFBWarnings(
+            value = "RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE",
+            justification = "SpotBugs is not aware of try-with-resources and its null checks"
+    )
+    public ResponseEntity<Object> validateScript(
+            final @RequestBody Map<String, Object> req
+    ) throws Exception {
+        try (var sec = this.scriptExecutionContextFactory.create()) {
+            @Language("ECMAScript 6")
+            final var script = this.getString(req, "script");
+            final var rawTests = this.getParam(req, "tests", List.class);
+            final List<PassingScriptTestCase> tests =
+                    this.passingScriptTestCasesParser.parseTests(rawTests);
+
+            final Script<Object> compiledScript;
+            try {
+                compiledScript = sec.submitScript(script, Object.class);
+            } catch (final Exception ex) {
+                return ResponseEntity.ok(new TestSuiteResults(ex.getMessage()));
+            }
+
+            final var results = tests.stream()
+                    .map(this.buildTestRunner(compiledScript))
+                    .collect(Collectors.toList());
+
+            return ResponseEntity.ok(new TestSuiteResults(results));
+        }
+    }
+
+    /**
+     * Builds a test runner.
+     *
+     * @param compiledScript the script under testing
+     *
+     * @return the function to call on a test case
+     */
+    private Function<PassingScriptTestCase, TestResults> buildTestRunner(
+            final Script<Object> compiledScript
+    ) {
+        return test -> {
+            assert test.getId() != null;
+            assert test.getValue() != null;
+
+            final var notes = new NoteCollection();
+            final Optional<Double> grade;
+            try {
+                grade = compiledScript.execute(test.getValue(), null, notes);
+            } catch (final Exception ex) {
+                return new TestResults(test.getId(), ex.getMessage());
+            }
+
+            return new TestResults(test.getId(), notes, grade.orElse(null));
+        };
+    }
+
+    /**
+     * The results of an entire test suite.
+     */
+    private static final class TestSuiteResults {
+        /**
+         * Whether the script under test compiled.
+         *
+         * Iff the test compiled, this is {@code true}. Otherwise, this is a string containing a
+         * message why compilation failed.
+         */
+        private final Object compiles;
+
+        /**
+         * The list of results for the individual test suites.
+         */
+        private final List<TestResults> results;
+
+        /**
+         * Constructs a new test suite result collection for a script that fails to compile.
+         *
+         * @param compiles the message describing the compilation failure
+         */
+        private TestSuiteResults(final String compiles) {
+            this.compiles = compiles;
+            this.results = Collections.emptyList();
+        }
+
+        /**
+         * Creates a new test suite result collection for a script that compiles.
+         *
+         * @param results the list of results of the test suites
+         */
+        private TestSuiteResults(final List<TestResults> results) {
+            this.compiles = true;
+            this.results = results;
+        }
+
+        /**
+         * Returns the object describing the compilation status of the script.
+         *
+         * @return the compilation status
+         */
+        public Object getCompiles() {
+            return this.compiles;
+        }
+
+        /**
+         * Returns the results of the individual unit tests.
+         *
+         * @return the results
+         */
+        public List<TestResults> getResults() {
+            return this.results;
+        }
+    }
+
+    /**
+     * The results of a single unit test.
+     */
+    private static final class TestResults {
+        /**
+         * The unit test's identifier.
+         */
+        private final String id;
+
+        /**
+         * The runtime error, if any.
+         */
+        @Nullable
+        private final String error;
+
+        /**
+         * The notes generated by the script.
+         */
+        private final NoteCollection notes;
+
+        /**
+         * The grade generated by the script, if any.
+         */
+        @Nullable
+        private final Double grade;
+
+        /**
+         * Creates a new results object.
+         *
+         * @param id the identifier of the test that generated these results
+         * @param notes the notes generated by the script
+         * @param grade the grade generated by the script, if any
+         */
+        private TestResults(
+                final String id, final NoteCollection notes, final @Nullable Double grade
+        ) {
+            this.id = id;
+            this.error = null;
+            this.notes = notes;
+            this.grade = grade;
+        }
+
+        /**
+         * Creates a new results object for a test that generated a run-time error.
+         *
+         * @param id the identifier of the test that errored out
+         * @param error the error generated by the test
+         */
+        private TestResults(final String id, final String error) {
+            this.id = id;
+            this.error = error;
+            this.notes = new NoteCollection();
+            this.grade = null;
+        }
+
+        /**
+         * Returns the identifier of the test.
+         *
+         * @return the identifier
+         */
+        public String getId() {
+            return this.id;
+        }
+
+        /**
+         * Returns the error generated by the test, if any.
+         *
+         * @return the error
+         */
+        @Nullable
+        public String getError() {
+            return this.error;
+        }
+
+        /**
+         * Returns the notes generated by the test.
+         *
+         * @return the notes
+         */
+        public NoteCollection getNotes() {
+            return this.notes;
+        }
+
+        /**
+         * Returns the grade generated by the test, if any.
+         *
+         * @return the grade
+         */
+        @Nullable
+        public Double getGrade() {
+            return this.grade;
+        }
+    }
+}
diff --git a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/WorkerController.java b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/WorkerController.java
index 0bd55459448db892571e08ca39e44c8c1ca0c314..ba09c1ddfb62b5c6b6cd6f6099a1a5cab1c3327c 100644
--- a/core/src/main/java/nl/tudelft/ewi/auta/core/controller/WorkerController.java
+++ b/core/src/main/java/nl/tudelft/ewi/auta/core/controller/WorkerController.java
@@ -7,11 +7,9 @@ import org.springframework.security.access.annotation.Secured;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.google.gson.Gson;
-
-import nl.tudelft.ewi.auta.core.communication.MessageReceiver;
 import nl.tudelft.ewi.auta.core.response.Response;
 
+import javax.annotation.Nullable;
 import java.util.HashMap;
 import java.util.stream.Collectors;
 
@@ -22,19 +20,12 @@ public class WorkerController {
      */
     private final WorkerPool workerPool;
 
-    /**
-     * The message receiver.
-     */
-    private MessageReceiver receiver;
-
     /**
      * Create a new worker controller.
      * @param workerPool the pool of workers currently connected to the core
-     * @param receiver the message receiver.
      */
-    public WorkerController(final WorkerPool workerPool, final MessageReceiver receiver) {
+    public WorkerController(final WorkerPool workerPool) {
         this.workerPool = workerPool;
-        this.receiver = receiver;
     }
 
     /**
@@ -82,6 +73,7 @@ public class WorkerController {
             map.put("load", w.getLoad());
             map.put("lastPing", w.getLastPing().toEpochMilli());
 
+            @Nullable
             final var job = w.getCurrentJob();
             if (job != null) {
                 final var submission = job.getSubmission();
@@ -98,22 +90,4 @@ public class WorkerController {
         }).collect(Collectors.toList()));
         return ResponseEntity.ok(res);
     }
-
-    /**
-     * Gets a map of all languages and their metrics.
-     * @return the response
-     */
-    @GetMapping(path = "/api/v1/worker/metrics", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ResponseEntity<Response> getMetricsAction() {
-        final var res = new Response();
-        res.put("metrics", this.receiver.getMetrics());
-        return ResponseEntity.ok(res);
-    }
-
-    @GetMapping(value = "/api/v1/worker/metrics.js", produces = "application/javascript")
-    public ResponseEntity<String> getMetricsJsAction() {
-        return ResponseEntity.ok()
-                .contentType(new MediaType("application", "javascript"))
-                .body("MetricEditor.metrics = " + new Gson().toJson(this.receiver.getMetrics()));
-    }
 }
diff --git a/core/src/main/java/nl/tudelft/ewi/auta/core/model/PassingScriptTestCasesParser.java b/core/src/main/java/nl/tudelft/ewi/auta/core/model/PassingScriptTestCasesParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..7636419df3dbd816b3efc465353e8b239a96241c
--- /dev/null
+++ b/core/src/main/java/nl/tudelft/ewi/auta/core/model/PassingScriptTestCasesParser.java
@@ -0,0 +1,42 @@
+package nl.tudelft.ewi.auta.core.model;
+
+import nl.tudelft.ewi.auta.common.model.PassingScriptTestCase;
+import nl.tudelft.ewi.auta.core.controller.ControllerBase;
+import org.jetbrains.annotations.Contract;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * A parser for parsing script tests.
+ */
+@Service
+public class PassingScriptTestCasesParser extends ControllerBase {
+    /**
+     * Parses a list of unit tests.
+     *
+     * @param tests the object to parse
+     *
+     * @return the parsed tests
+     */
+    public List<PassingScriptTestCase> parseTests(final List<Map<String, Object>> tests) {
+        return tests.stream().map(this::parseTest).collect(Collectors.toUnmodifiableList());
+    }
+
+    /**
+     * Parses a single unit test.
+     *
+     * @param test the object to parse
+     *
+     * @return the parsed test
+     */
+    @Contract("_ -> new")
+    public PassingScriptTestCase parseTest(final Map<String, Object> test) {
+        final var id = this.getString(test, "id");
+        final var value = this.getParam(test, "value");
+
+        return new PassingScriptTestCase(id, value);
+    }
+}
diff --git a/core/src/test/java/nl/tudelft/ewi/auta/core/controller/MetricsControllerTest.java b/core/src/test/java/nl/tudelft/ewi/auta/core/controller/MetricsControllerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf46277ae8cb43ac8d80d299feadf94fcdfe0626
--- /dev/null
+++ b/core/src/test/java/nl/tudelft/ewi/auta/core/controller/MetricsControllerTest.java
@@ -0,0 +1,66 @@
+package nl.tudelft.ewi.auta.core.controller;
+
+import com.google.gson.Gson;
+import nl.tudelft.ewi.auta.common.model.metric.MetricFixturesProvider;
+import nl.tudelft.ewi.auta.core.communication.MessageReceiver;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpMethod;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.hamcrest.Matchers.empty;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.not;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.request;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+public class MetricsControllerTest {
+    private MessageReceiver receiver;
+    private MetricFixturesProvider fixturesProvider;
+    private MetricsController controller;
+    private MockMvc mvc;
+
+    @BeforeEach
+    public void before() {
+        this.receiver = mock(MessageReceiver.class);
+        this.fixturesProvider = new MetricFixturesProvider(new Gson());
+
+        final var metrics = Map.of(
+                "java", Set.of("cyclomatic complexity"),
+                "*", Set.of("method length")
+        );
+
+        when(this.receiver.getMetrics()).thenReturn((List) Collections.singletonList(metrics));
+
+        this.controller = new MetricsController(this.receiver, new Gson(), this.fixturesProvider);
+
+        this.mvc = MockMvcBuilders.standaloneSetup(this.controller)
+                           .setControllerAdvice(new RestExceptionHandler())
+                           .build();
+    }
+
+    @Test
+    public void testGetMetrics() throws Exception {
+        this.mvc.perform(request(HttpMethod.GET, "/api/v1/worker/metrics"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.errors", hasSize(0)))
+                .andExpect(jsonPath("$.metrics", hasSize(1)));
+    }
+
+    @Test
+    public void testGetMetricFixtures() throws Exception {
+        this.mvc.perform(get("/api/v1/worker/metrics/test-fixtures"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.fixtures", not(empty())));
+    }
+}
diff --git a/core/src/test/java/nl/tudelft/ewi/auta/core/controller/ScriptValidationControllerTest.java b/core/src/test/java/nl/tudelft/ewi/auta/core/controller/ScriptValidationControllerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9db563d13f2ffadd6ff8a19cbe395bffe0b6cc80
--- /dev/null
+++ b/core/src/test/java/nl/tudelft/ewi/auta/core/controller/ScriptValidationControllerTest.java
@@ -0,0 +1,160 @@
+package nl.tudelft.ewi.auta.core.controller;
+
+import com.google.gson.Gson;
+import nl.tudelft.ewi.auta.common.model.PassingScriptTestCase;
+import nl.tudelft.ewi.auta.core.model.PassingScriptTestCasesParser;
+import nl.tudelft.ewi.auta.srf.iface.Script;
+import nl.tudelft.ewi.auta.srf.iface.ScriptExecutionContext;
+import nl.tudelft.ewi.auta.srf.iface.ScriptExecutionContextFactory;
+import nl.tudelft.ewi.auta.srf.model.Note;
+import nl.tudelft.ewi.auta.srf.model.NoteCollection;
+import nl.tudelft.ewi.auta.srf.model.Severity;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.nullValue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+public class ScriptValidationControllerTest {
+    private ScriptExecutionContextFactory scriptExecutionContextFactory;
+    private ScriptExecutionContext scriptExecutionContext;
+    private Script<Object> compiledScript;
+    private PassingScriptTestCasesParser passingScriptTestCasesParser;
+    private ScriptValidationController controller;
+    private MockMvc mvc;
+
+    @BeforeEach
+    public void before() {
+        this.scriptExecutionContextFactory = mock(ScriptExecutionContextFactory.class);
+        this.passingScriptTestCasesParser = mock(PassingScriptTestCasesParser.class);
+        this.scriptExecutionContext = mock(ScriptExecutionContext.class);
+        this.compiledScript = mock(Script.class);
+
+        doReturn(this.scriptExecutionContext).when(this.scriptExecutionContextFactory).create();
+
+        this.controller = new ScriptValidationController(
+                this.scriptExecutionContextFactory, this.passingScriptTestCasesParser
+        );
+        this.mvc = MockMvcBuilders.standaloneSetup(this.controller)
+                .setControllerAdvice(new RestExceptionHandler())
+                .build();
+    }
+
+    @Test
+    public void testMissingBody() throws Exception {
+        this.mvc.perform(post("/api/v1/script/test/passing-script"))
+                .andExpect(status().isBadRequest());
+    }
+
+    @Test
+    public void testMissingScript() throws Exception {
+        this.mvc.perform(post("/api/v1/script/test/passing-script")
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new Gson().toJson(Map.of("scriptTests", Collections.emptyList())))
+        ).andExpect(status().isBadRequest());
+    }
+
+    @Test
+    public void testMissingTests() throws Exception {
+        this.mvc.perform(post("/api/v1/script/test/passing-script")
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new Gson().toJson(Map.of("script", "this is Javascript, not Perl")))
+        ).andExpect(status().isBadRequest());
+    }
+
+    @Test
+    public void testEmptyTestSuite() throws Exception {
+        doReturn(this.compiledScript).when(this.scriptExecutionContext).submitScript(any(), any());
+
+        this.mvc.perform(post("/api/v1/script/test/passing-script")
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new Gson().toJson(Map.of(
+                        "script", "this is valid Javascript I swear",
+                        "tests", Collections.emptyList()
+                )))
+        )
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.compiles", equalTo(true)))
+                .andExpect(jsonPath("$.results", hasSize(0)));
+
+        verify(this.compiledScript, never()).execute(any(), any(), any());
+    }
+
+    @Test
+    public void testBadScript() throws Exception {
+        final String complaint = "that is Perl, I ain't gonna touch that";
+
+        doThrow(new RuntimeException(complaint))
+                .when(this.scriptExecutionContext).submitScript(any(), any());
+
+        this.mvc.perform(post("/api/v1/script/test/passing-script")
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new Gson().toJson(Map.of(
+                        "script", "\uD83C\uDDF9\uD83C\uDDF7",
+                        "tests", Collections.emptyList()
+                )))
+        )
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.compiles", equalTo(complaint)))
+                .andExpect(jsonPath("$.results", hasSize(0)));
+    }
+
+    @Test
+    public void testScriptWithTests() throws Exception {
+        final var tests = List.of(
+                new PassingScriptTestCase("first", 12), new PassingScriptTestCase("second", -3)
+        );
+        doReturn(tests).when(this.passingScriptTestCasesParser).parseTests(any());
+        doReturn(this.compiledScript).when(this.scriptExecutionContext).submitScript(any(), any());
+
+        doAnswer(invocation -> {
+            final Object value = invocation.getArgument(0);
+            final NoteCollection notes = invocation.getArgument(2);
+
+            if (Objects.equals(value, -3)) {
+                notes.addNote(new Note(Severity.FAILURE, "it's bad"));
+            } else {
+                throw new RuntimeException("invalid");
+            }
+
+            return Optional.empty();
+        }).when(this.compiledScript).execute(any(), any(), any());
+
+        this.mvc.perform(post("/api/v1/script/test/passing-script")
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new Gson().toJson(Map.of(
+                        "script", "100% pure Javascript",
+                        "tests", tests
+                )))
+        )
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.compiles", equalTo(true)))
+                .andExpect(jsonPath("$.results[0].id", equalTo("first")))
+                .andExpect(jsonPath("$.results[0].error", equalTo("invalid")))
+                .andExpect(jsonPath("$.results[1].id", equalTo("second")))
+                .andExpect(jsonPath("$.results[1].error", nullValue()))
+                .andExpect(jsonPath("$.results[1].notes.notes[0].severity", equalTo("FAILURE")))
+                .andExpect(jsonPath("$.results[1].notes.notes[0].message", equalTo("it's bad")))
+                .andExpect(jsonPath("$.results[1].grade", nullValue()));
+    }
+}
diff --git a/core/src/test/java/nl/tudelft/ewi/auta/core/controller/WorkerControllerTest.java b/core/src/test/java/nl/tudelft/ewi/auta/core/controller/WorkerControllerTest.java
index 9013cf575686ac8edb4c5f2c74c9b36ecad299f9..2fc7234cd2a2df198d17b71cd4e0c5be14a06fed 100644
--- a/core/src/test/java/nl/tudelft/ewi/auta/core/controller/WorkerControllerTest.java
+++ b/core/src/test/java/nl/tudelft/ewi/auta/core/controller/WorkerControllerTest.java
@@ -7,10 +7,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
 import nl.tudelft.ewi.auta.common.jump.Jump;
 import nl.tudelft.ewi.auta.core.model.Assignment;
@@ -28,15 +24,10 @@ import org.springframework.http.HttpMethod;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
-import nl.tudelft.ewi.auta.core.communication.MessageReceiver;
-
 public class WorkerControllerTest {
 
     private MockMvc mvc;
 
-    @Mock
-    private MessageReceiver receiver;
-
     @Mock
     private WorkerPool workerPool;
 
@@ -53,27 +44,12 @@ public class WorkerControllerTest {
     public void before() {
         MockitoAnnotations.initMocks(this);
 
-        Map<String, Set<String>> metrics = new HashMap<>();
-        metrics.put("java", Set.of("cyclomatic complexity"));
-        metrics.put("*", Set.of("method length"));
-
-        Mockito.when(this.receiver.getMetrics())
-                .thenReturn((List) Collections.singletonList(metrics));
-
         Mockito.when(this.assignment.getId()).thenReturn("123");
         Mockito.when(this.submission.getId()).thenReturn("456");
 
         this.mvc = MockMvcBuilders.standaloneSetup(this.controller).build();
     }
 
-    @Test
-    public void testAddSubmission() throws Exception {
-        this.mvc.perform(request(HttpMethod.GET, "/api/v1/worker/metrics"))
-                .andExpect(status().isOk())
-                .andExpect(jsonPath("$.errors", hasSize(0)))
-                .andExpect(jsonPath("$.metrics", hasSize(1)));
-    }
-
     @Test
     public void testGetWorkers() throws Exception {
         final var testWorker = new WorkerConnection(null, "test #1", new Jump());
diff --git a/core/test.log b/core/test.log
new file mode 100644
index 0000000000000000000000000000000000000000..4fe320bcf7d67d800d0f22fe79dbcf46ad0429c2
--- /dev/null
+++ b/core/test.log
@@ -0,0 +1,9676 @@
+2019-10-02 13:27:18.271  INFO 14367 --- [Test worker] .c.c.SubmissionControllerIntegrationTest : Starting SubmissionControllerIntegrationTest on effrafax.wukl.net with PID 14367 (started by luc in /home/luc/Projects/auta/core)
+2019-10-02 13:27:18.272 DEBUG 14367 --- [Test worker] .c.c.SubmissionControllerIntegrationTest : Running with Spring Boot v2.1.8.RELEASE, Spring v5.1.10.RELEASE
+2019-10-02 13:27:18.272  INFO 14367 --- [Test worker] .c.c.SubmissionControllerIntegrationTest : The following profiles are active: test
+2019-10-02 13:27:18.301 TRACE 14367 --- [Test worker] o.s.w.c.s.GenericWebApplicationContext   : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@cf2c369, started on Wed Oct 02 13:27:18 CEST 2019
+2019-10-02 13:27:20.084 TRACE 14367 --- [Test worker] o.s.w.c.s.GenericWebApplicationContext   : No 'messageSource' bean, using [Empty MessageSource]
+2019-10-02 13:27:20.085 TRACE 14367 --- [Test worker] o.s.w.c.s.GenericWebApplicationContext   : No 'applicationEventMulticaster' bean, using [SimpleApplicationEventMulticaster]
+2019-10-02 13:27:20.331  INFO 14367 --- [Test worker] nl.tudelft.ewi.auta.core.Core            : Allowing API access to hosts [http://localhost:8080, http://localhost:8081, http://127.0.0.1:8080, http://127.0.0.1:8081]
+2019-10-02 13:27:20.748 DEBUG 14367 --- [Test worker] o.s.w.s.v.f.FreeMarkerConfigurer         : Template loader path [class path resource [nl/tudelft/ewi/auta/core/ui]] resolved to file path [/home/luc/Projects/auta/core/build/resources/main/nl/tudelft/ewi/auta/core/ui]
+2019-10-02 13:27:20.928  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : starting...
+2019-10-02 13:27:21.646  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : DownloadSize: 87554471
+2019-10-02 13:27:21.653  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 0 %
+2019-10-02 13:27:22.056  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 10 %
+2019-10-02 13:27:22.431  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 20 %
+2019-10-02 13:27:22.806  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 30 %
+2019-10-02 13:27:23.191  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 40 %
+2019-10-02 13:27:23.522  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 50 %
+2019-10-02 13:27:23.868  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 60 %
+2019-10-02 13:27:24.222  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 70 %
+2019-10-02 13:27:24.583  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 80 %
+2019-10-02 13:27:24.920  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 90 %
+2019-10-02 13:27:25.304  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : 100 %
+2019-10-02 13:27:25.305  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : downloaded with 28500kb/s
+2019-10-02 13:27:25.606  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Download Version{3.5.5}:Linux:B64 : finished
+2019-10-02 13:27:25.614  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Extract /home/luc/.embedmongo/linux/mongodb-linux-x86_64-3.5.5.tgz : starting...
+2019-10-02 13:27:26.588  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Extract /home/luc/.embedmongo/linux/mongodb-linux-x86_64-3.5.5.tgz : extract mongodb-linux-x86_64-3.5.5/bin/mongod
+2019-10-02 13:27:26.588  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Extract /home/luc/.embedmongo/linux/mongodb-linux-x86_64-3.5.5.tgz : nothing left
+2019-10-02 13:27:26.588  INFO 14367 --- [Test worker] o.s.b.a.mongo.embedded.EmbeddedMongo     : Extract /home/luc/.embedmongo/linux/mongodb-linux-x86_64-3.5.5.tgz : finished
+2019-10-02 13:27:26.670  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : note: noprealloc may hurt performance in many applications
+2019-10-02 13:27:26.672  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten] MongoDB starting : pid=14456 port=42071 dbpath=/tmp/embedmongo-db-6734d7e0-e6a4-4373-a970-93f31a79d25e 64-bit host=effrafax.wukl.net
+2019-10-02 13:27:26.672  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten] db version v3.5.5
+2019-10-02 13:27:26.672  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten] git version: 98515c812b6fa893613f063dae568ff8319cbfbd
+2019-10-02 13:27:26.673  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten] allocator: tcmalloc
+2019-10-02 13:27:26.673  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten] modules: none
+2019-10-02 13:27:26.673  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten] build environment:
+2019-10-02 13:27:26.673  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten]     distarch: x86_64
+2019-10-02 13:27:26.673  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten]     target_arch: x86_64
+2019-10-02 13:27:26.673  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.672+0200 I CONTROL  [initandlisten] options: { net: { bindIp: "127.0.0.1", http: { enabled: false }, port: 42071 }, security: { authorization: "disabled" }, storage: { dbPath: "/tmp/embedmongo-db-6734d7e0-e6a4-4373-a970-93f31a79d25e", journal: { enabled: false }, mmapv1: { preallocDataFiles: false, smallFiles: true }, syncPeriodSecs: 0.0 } }
+2019-10-02 13:27:26.675  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.675+0200 I STORAGE  [initandlisten] 
+2019-10-02 13:27:26.676  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.675+0200 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
+2019-10-02 13:27:26.676  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.675+0200 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
+2019-10-02 13:27:26.676  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.675+0200 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=11372M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=0,log_size=2GB),statistics_log=(wait=0),verbose=(recovery_progress),,log=(enabled=false),
+2019-10-02 13:27:26.826  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.825+0200 W STORAGE  [initandlisten] Detected configuration for non-active storage engine mmapv1 when current storage engine is wiredTiger
+2019-10-02 13:27:26.826  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.825+0200 I CONTROL  [initandlisten] 
+2019-10-02 13:27:26.826  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.825+0200 I CONTROL  [initandlisten] ** NOTE: This is a development version (3.5.5) of MongoDB.
+2019-10-02 13:27:26.826  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] **       Not recommended for production.
+2019-10-02 13:27:26.826  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] 
+2019-10-02 13:27:26.827  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] 
+2019-10-02 13:27:26.827  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
+2019-10-02 13:27:26.827  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
+2019-10-02 13:27:26.827  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] 
+2019-10-02 13:27:26.827  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 94378 processes, 1048576 files. Number of processes should be at least 524288 : 0.5 times number of files.
+2019-10-02 13:27:26.827  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.826+0200 I CONTROL  [initandlisten] 
+2019-10-02 13:27:26.882  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.882+0200 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/tmp/embedmongo-db-6734d7e0-e6a4-4373-a970-93f31a79d25e/diagnostic.data'
+2019-10-02 13:27:26.974  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.974+0200 I INDEX    [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
+2019-10-02 13:27:26.975  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.974+0200 I INDEX    [initandlisten] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:26.976  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.975+0200 I INDEX    [initandlisten] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:26.976  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.976+0200 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 3.4
+2019-10-02 13:27:26.976  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:26.976+0200 I NETWORK  [thread1] waiting for connections on port 42071
+2019-10-02 13:27:27.107  INFO 14367 --- [Test worker] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[localhost:42071], mode=MULTIPLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
+2019-10-02 13:27:27.108  INFO 14367 --- [Test worker] org.mongodb.driver.cluster               : Adding discovered server localhost:42071 to client view of cluster
+2019-10-02 13:27:27.155 DEBUG 14367 --- [Test worker] org.mongodb.driver.cluster               : Updating cluster description to  {type=UNKNOWN, servers=[{address=localhost:42071, type=UNKNOWN, state=CONNECTING}]
+2019-10-02 13:27:27.163  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.163+0200 I NETWORK  [thread1] connection accepted from 127.0.0.1:44684 #1 (1 connection now open)
+2019-10-02 13:27:27.175  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.175+0200 I NETWORK  [conn1] received client metadata from 127.0.0.1:44684 conn1: { driver: { name: "mongo-java-driver", version: "3.8.2" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "4.16.0-2-amd64" }, platform: "Java/Debian/11.0.5-ea+6-post-Debian-2" }
+2019-10-02 13:27:27.201  INFO 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1, serverValue:1}] to localhost:42071
+2019-10-02 13:27:27.201 DEBUG 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.cluster               : Checking status of localhost:42071
+2019-10-02 13:27:27.226 DEBUG 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.protocol.command      : Sending command '{ "ismaster" : 1 }' with request id 4 to database admin on connection [connectionId{localValue:1, serverValue:1}] to server localhost:42071
+2019-10-02 13:27:27.228 DEBUG 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.protocol.command      : Execution of command with request id 4 completed successfully in 23.50 ms on connection [connectionId{localValue:1, serverValue:1}] to server localhost:42071
+2019-10-02 13:27:27.229  INFO 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=localhost:42071, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 5, 5]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=null, roundTripTimeNanos=26783893}
+2019-10-02 13:27:27.231  INFO 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.cluster               : Discovered cluster type of STANDALONE
+2019-10-02 13:27:27.234 DEBUG 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.cluster               : Updating cluster description to  {type=STANDALONE, servers=[{address=localhost:42071, type=STANDALONE, roundTripTime=26.8 ms, state=CONNECTED}]
+2019-10-02 13:27:27.532  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.532+0200 I NETWORK  [thread1] connection accepted from 127.0.0.1:44686 #2 (2 connections now open)
+2019-10-02 13:27:27.533  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.533+0200 I NETWORK  [conn2] received client metadata from 127.0.0.1:44686 conn2: { driver: { name: "mongo-java-driver", version: "3.8.2" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "4.16.0-2-amd64" }, platform: "Java/Debian/11.0.5-ea+6-post-Debian-2" }
+2019-10-02 13:27:27.535  INFO 14367 --- [Test worker] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:2, serverValue:2}] to localhost:42071
+2019-10-02 13:27:27.547 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "identity", "indexes" : [{ "key" : { "identifier" : 1 }, "name" : "identifier", "ns" : "auta-test.identity" }] }' with request id 8 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.637  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.637+0200 I INDEX    [conn2] build index on: auta-test.identity properties: { v: 2, key: { identifier: 1 }, name: "identifier", ns: "auta-test.identity" }
+2019-10-02 13:27:27.637  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.637+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:27.637  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.637+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:27.638 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 8 completed successfully in 92.30 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.644 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "results", "indexes" : [{ "key" : { "assignmentId" : 1 }, "name" : "assignmentId", "ns" : "auta-test.results" }] }' with request id 9 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.728  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.728+0200 I INDEX    [conn2] build index on: auta-test.results properties: { v: 2, key: { assignmentId: 1 }, name: "assignmentId", ns: "auta-test.results" }
+2019-10-02 13:27:27.729  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.728+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:27.729  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.729+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:27.729 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 9 completed successfully in 87.50 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.732 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "results", "indexes" : [{ "key" : { "submissionId" : 1 }, "name" : "submissionId", "ns" : "auta-test.results" }] }' with request id 10 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.768  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.768+0200 I INDEX    [conn2] build index on: auta-test.results properties: { v: 2, key: { submissionId: 1 }, name: "submissionId", ns: "auta-test.results" }
+2019-10-02 13:27:27.768  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.768+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:27.768  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.768+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:27.769 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 10 completed successfully in 38.18 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.773 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "submission", "indexes" : [{ "key" : { "assignmentId" : 1 }, "name" : "assignmentId", "ns" : "auta-test.submission" }] }' with request id 11 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.868  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.868+0200 I INDEX    [conn2] build index on: auta-test.submission properties: { v: 2, key: { assignmentId: 1 }, name: "assignmentId", ns: "auta-test.submission" }
+2019-10-02 13:27:27.868  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.868+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:27.869  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.868+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:27.869 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 11 completed successfully in 96.85 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.879 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "assignment", "indexes" : [{ "key" : { "name" : 1 }, "name" : "name", "ns" : "auta-test.assignment", "unique" : true }] }' with request id 12 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.981  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.981+0200 I INDEX    [conn2] build index on: auta-test.assignment properties: { v: 2, unique: true, key: { name: 1 }, name: "name", ns: "auta-test.assignment" }
+2019-10-02 13:27:27.982  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.981+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:27.982  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.982+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:27.982  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:27.982+0200 I COMMAND  [conn2] command auta-test.$cmd command: createIndexes { createIndexes: "assignment", indexes: [ { key: { name: 1 }, name: "name", ns: "auta-test.assignment", unique: true } ] } numYields:0 reslen:113 locks:{ Global: { acquireCount: { r: 1, w: 1 } }, Database: { acquireCount: { W: 1 } }, Collection: { acquireCount: { w: 1 } } } protocol:op_query 102ms
+2019-10-02 13:27:27.982 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 12 completed successfully in 105.39 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:27.984 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "assignment", "indexes" : [{ "key" : { "deleted" : 1 }, "name" : "deleted", "ns" : "auta-test.assignment" }] }' with request id 13 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:28.008  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.008+0200 I INDEX    [conn2] build index on: auta-test.assignment properties: { v: 2, key: { deleted: 1 }, name: "deleted", ns: "auta-test.assignment" }
+2019-10-02 13:27:28.008  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.008+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:28.008  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.008+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:28.009 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 13 completed successfully in 25.23 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:28.011 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "benchmarking_data_container", "indexes" : [{ "key" : { "aid" : 1 }, "name" : "aid", "ns" : "auta-test.benchmarking_data_container" }] }' with request id 14 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:28.104  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.103+0200 I INDEX    [conn2] build index on: auta-test.benchmarking_data_container properties: { v: 2, key: { aid: 1 }, name: "aid", ns: "auta-test.benchmarking_data_container" }
+2019-10-02 13:27:28.104  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.103+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:28.104  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.104+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:28.105 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 14 completed successfully in 94.13 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:28.109 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "entity", "indexes" : [{ "key" : { "submissionId" : 1 }, "name" : "submissionId", "ns" : "auta-test.entity" }] }' with request id 15 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:28.198  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.198+0200 I INDEX    [conn2] build index on: auta-test.entity properties: { v: 2, key: { submissionId: 1 }, name: "submissionId", ns: "auta-test.entity" }
+2019-10-02 13:27:28.198  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.198+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:28.199  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.199+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:28.199 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 15 completed successfully in 90.56 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:28.202 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "createIndexes" : "entity", "indexes" : [{ "key" : { "assignmentId" : 1 }, "name" : "assignmentId", "ns" : "auta-test.entity" }] }' with request id 16 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:28.234  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.234+0200 I INDEX    [conn2] build index on: auta-test.entity properties: { v: 2, key: { assignmentId: 1 }, name: "assignmentId", ns: "auta-test.entity" }
+2019-10-02 13:27:28.234  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.234+0200 I INDEX    [conn2] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
+2019-10-02 13:27:28.235  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:28.234+0200 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
+2019-10-02 13:27:28.235 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 16 completed successfully in 34.09 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:29.526 TRACE 14367 --- [Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped [/**/favicon.ico] onto ResourceHttpRequestHandler [class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/], ServletContext resource [/], class path resource []]
+2019-10-02 13:27:29.527 DEBUG 14367 --- [Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping  : Patterns [/**/favicon.ico] in 'faviconHandlerMapping'
+2019-10-02 13:27:29.726 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:29.751 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:29.753 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:29.756 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:29.757 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:29.760 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:29.763 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.FileController:
+	{PUT /api/v1/files/upload/**}: uploadAction(HttpServletRequest,MultipartFile)
+	{GET /api/v1/files/inspect/**}: inspectAction(HttpServletRequest)
+	{GET /api/v1/files/get/**}: downloadAction(HttpServletRequest)
+	{PUT /api/v1/files/mkdir/**}: mkdirAction(HttpServletRequest)
+2019-10-02 13:27:29.764 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.LogController:
+	{GET /api/v1/logs/core, produces [application/json]}: getCoreLogAction()
+2019-10-02 13:27:29.765 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.MetricsController:
+	{GET /api/v1/worker/metrics, produces [application/json]}: getMetricsAction()
+	{GET /api/v1/worker/metrics.js, produces [text/javascript]}: getMetricsJsAction()
+	{GET /api/v1/worker/metrics/test-fixtures, produces [application/json]}: getMetricTestFixturesAction()
+2019-10-02 13:27:29.766 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.ReportController:
+	{GET /api/v1/assignment/{aid}/submission/{sid}/verdict, produces [application/json]}: verdictAction(String,String)
+2019-10-02 13:27:29.767 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.ScriptValidationController:
+	{POST /api/v1/script/test/passing-script, produces [application/json]}: validateScript(Map)
+2019-10-02 13:27:29.768 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SettingsController:
+	{PUT /api/v1/settings, produces [application/json]}: update(Map)
+	{GET /api/v1/settings, produces [application/json]}: retrieve()
+2019-10-02 13:27:29.770 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionController:
+	{POST /api/v1/assignment/{aid}/submission, produces [application/json]}: addSubmissionAction(String,Map)
+	{GET /api/v1/assignment/{aid}/submission, produces [application/json]}: getAllSubmissions(String,Optional,Optional)
+	{GET /api/v1/assignment/{aid}/submission/{sid}, produces [application/json]}: getSubmissionAction(String,String,Optional)
+	{POST /api/v1/assignment/{aid}/submission/direct-upload, produces [application/json]}: directUploadSubmissionAction(String,MultipartFile,String,String)
+2019-10-02 13:27:29.772 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:29.773 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.TokenController:
+	{GET /api/v1/worker/token, produces [application/json]}: getToken()
+2019-10-02 13:27:29.774 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UiController:
+	{GET [/{what:(?!api|js|css|img|index).+.*}, /{what:(?!api|js|css|img|sso).*}/{w2}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}/{w8}]}: get()
+2019-10-02 13:27:29.775 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UserController:
+	{GET /api/v1/users, produces [application/json]}: listUsersAction(Optional,Optional)
+	{GET /api/v1/user, produces [application/json]}: getCurrentUserAction(Authentication)
+2019-10-02 13:27:29.776 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.WorkerController:
+	{GET /api/v1/workers, produces [application/json]}: getWorkersAction()
+2019-10-02 13:27:29.777 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.s.SamlAdministrationController:
+	{GET /sso/saml/sp, produces [application/xml]}: getMetadataAction(HttpServletRequest)
+	{GET /sso/saml/idps/metadata, produces [application/xml]}: getKnownIdentityProvidersAction()
+	{PUT /api/v1/sso/saml/idps/metadata, consumes [application/xml]}: updateIdentityProvidersAction(HttpServletRequest)
+	{GET /api/v1/sso/saml/idps, produces [application/json]}: getIdentityProvidersAsJsonAction()
+2019-10-02 13:27:29.778 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.s.SamlAssertionConsumptionController:
+	{POST /sso/saml/ac, consumes [application/x-www-form-urlencoded]}: consumeAssertionAction(HttpServletRequest,HttpServletResponse,Model)
+2019-10-02 13:27:29.778 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.s.SamlInitiationController:
+	{GET /sso/saml/auth/**}: generateRequestAction(HttpServletRequest,HttpServletResponse)
+2019-10-02 13:27:29.781 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	o.s.b.a.w.s.e.BasicErrorController:
+	{ /error}: error(HttpServletRequest)
+	{ /error, produces [text/html]}: errorHtml(HttpServletRequest,HttpServletResponse)
+2019-10-02 13:27:29.784 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 57 mappings in 'requestMappingHandlerMapping'
+2019-10-02 13:27:29.834 DEBUG 14367 --- [Test worker] o.s.w.s.h.BeanNameUrlHandlerMapping      : Detected 0 mappings in 'beanNameHandlerMapping'
+2019-10-02 13:27:29.844 TRACE 14367 --- [Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped [/webjars/**] onto ResourceHttpRequestHandler ["classpath:/META-INF/resources/webjars/"]
+2019-10-02 13:27:29.844 TRACE 14367 --- [Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped [/**] onto ResourceHttpRequestHandler ["classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "/"]
+2019-10-02 13:27:29.844 DEBUG 14367 --- [Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping  : Patterns [/webjars/**, /**] in 'resourceHandlerMapping'
+2019-10-02 13:27:29.865 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.136 TRACE 14367 --- [Test worker] o.s.w.c.s.GenericWebApplicationContext   : No 'lifecycleProcessor' bean, using [DefaultLifecycleProcessor]
+2019-10-02 13:27:30.140 DEBUG 14367 --- [Test worker] t.e.a.c.a.s.OpenSamlComponentInitializer : Auto-initializing component build:org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver
+2019-10-02 13:27:30.149  INFO 14367 --- [Test worker] .m.r.i.AbstractReloadingMetadataResolver : Metadata Resolver FilesystemMetadataResolver build:org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver: New metadata successfully loaded for '/srv/auta/sso/idps.xml'
+2019-10-02 13:27:30.150  INFO 14367 --- [Test worker] .m.r.i.AbstractReloadingMetadataResolver : Metadata Resolver FilesystemMetadataResolver build:org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver: Next refresh cycle for metadata provider '/srv/auta/sso/idps.xml' will occur on '2019-10-02T14:27:30.143Z' ('2019-10-02T16:27:30.143+02:00' local time)
+2019-10-02 13:27:30.162  INFO 14367 --- [Test worker] .c.c.SubmissionControllerIntegrationTest : Started SubmissionControllerIntegrationTest in 12.271 seconds (JVM running for 46.785)
+2019-10-02 13:27:30.227 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment1" }, "u" : { "_id" : "assignment1", "name" : "assignment1", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 17 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.229 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 17 completed successfully in 3.15 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.239 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment2" }, "u" : { "_id" : "assignment2", "name" : "assignment2", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 18 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.240 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 18 completed successfully in 1.85 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.248 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment3" }, "u" : { "_id" : "assignment3", "name" : "assignment3", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 19 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.251 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 19 completed successfully in 6.81 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.260 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course1" }, "u" : { "_id" : "course1", "name" : "NO_TA_NO_INSTRUCTORS", "courseCode" : "AB1234", "instructorSet" : [], "taSet" : [], "assignmentIds" : ["assignment1"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 20 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.313 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 20 completed successfully in 53.92 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.316 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course2" }, "u" : { "_id" : "course2", "name" : "TA_AND_INSTRUCTOR", "courseCode" : "AB1234", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment2"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 21 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.317 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 21 completed successfully in 1.32 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.319 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course3" }, "u" : { "_id" : "course3", "name" : "TA_AND_INSTRUCTOR2", "courseCode" : "AB1234_2", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment3"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 22 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.320 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 22 completed successfully in 1.17 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.327 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "assignmentId" : "assignment1", "name" : "submission1", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 23 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.328 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 23 completed successfully in 1.60 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.331 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "assignmentId" : "assignment2", "name" : "submission2", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 24 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.332 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 24 completed successfully in 1.80 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.341 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "identifier" : "id1", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 25 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.342 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 25 completed successfully in 1.72 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.344 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "identifier" : "id2", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 26 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.346 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 26 completed successfully in 1.94 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.365 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container1" }, "u" : { "_id" : "container1", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission1", "assignmentId" : "assignment1", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 27 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.367 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 27 completed successfully in 2.05 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.371 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container2" }, "u" : { "_id" : "container2", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission2", "assignmentId" : "assignment2", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 28 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.374 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 28 completed successfully in 4.42 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.415 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.SubmissionController.addSubmissionAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.net.URISyntaxException
+2019-10-02 13:27:30.418 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{}]
+2019-10-02 13:27:30.419 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, {}]
+2019-10-02 13:27:30.442 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 29 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.443 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 29 completed successfully in 1.04 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.475 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:30.493 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 30 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.494 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 30 completed successfully in 0.96 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.500 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:30.501 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:30.502 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:30.502 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1, ServletWebRequest: uri=/api/v1/assignment/assignment1/submission;client=127.0.0.1]
+2019-10-02 13:27:30.502 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/submission;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForAssignmentAccess(CourseSecuredService.java:222)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForAssignmentAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionController.addSubmissionAction(SubmissionController.java:190)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.postForbidden(AbstractWebSecurityIntegrationTest.java:74)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionControllerIntegrationTest.instructorCannotAddNewUnauthorizedSubmission(SubmissionControllerIntegrationTest.java:31)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:30.504 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:30.505 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@23c891d]}]
+2019-10-02 13:27:30.507 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1]
+2019-10-02 13:27:30.519 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.SubmissionController.addSubmissionAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.net.URISyntaxException
+2019-10-02 13:27:30.520 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=new-submission}]
+2019-10-02 13:27:30.521 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment2, {name=new-submission}]
+2019-10-02 13:27:30.522 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment2" }, "limit" : 1, "singleBatch" : true }' with request id 31 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.523 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 31 completed successfully in 1.09 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.524 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:30.526 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 32 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.527 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 32 completed successfully in 0.90 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.528 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:30.528 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:30.533 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "insert" : "submission", "ordered" : true, "documents" : [{ "_id" : { "$oid" : "5d9489a2f4446f381f0849fb" }, "assignmentId" : "assignment2", "name" : "new-submission", "contents" : "new-submission", "pipelineLog" : { "submitted" : { "$date" : "2019-10-02T11:27:30.528Z" } }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }] }' with request id 33 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.534 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 33 completed successfully in 3.78 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.536 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.SubmissionController         : Job added to queue, new length: 1
+2019-10-02 13:27:30.537 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.537 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{id=5d9489a2f4446f381f0849fb, errors=[]}]
+2019-10-02 13:27:30.559 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.SubmissionController.getAllSubmissions(java.lang.String,java.util.Optional<java.lang.Integer>,java.util.Optional<java.lang.Integer>)
+2019-10-02 13:27:30.560 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, Optional.empty, Optional.empty]
+2019-10-02 13:27:30.562 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 34 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.562 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 34 completed successfully in 0.85 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.563 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:30.567 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 35 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.569 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 35 completed successfully in 3.51 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.572 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:30.573 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:30.574 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:30.574 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1, ServletWebRequest: uri=/api/v1/assignment/assignment1/submission;client=127.0.0.1]
+2019-10-02 13:27:30.575 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/submission;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForAssignmentAccess(CourseSecuredService.java:222)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForAssignmentAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionController.getAllSubmissions(SubmissionController.java:141)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionControllerIntegrationTest.instructorCannotAccessUnauthorizedSubmission(SubmissionControllerIntegrationTest.java:25)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:198)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:136)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:104)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:104)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:40)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:30.576 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:30.577 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@522fbea0]}]
+2019-10-02 13:27:30.577 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1]
+2019-10-02 13:27:30.590 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.SubmissionController.getSubmissionAction(java.lang.String,java.lang.String,java.util.Optional<java.lang.String>)
+2019-10-02 13:27:30.591 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, submission1, Optional.empty]
+2019-10-02 13:27:30.594 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 36 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.595 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 36 completed successfully in 1.22 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.602 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "submission", "filter" : { "assignmentId" : "assignment1", "_id" : "submission1" }, "limit" : 2 }' with request id 37 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.603 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 37 completed successfully in 1.23 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.608 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:30.611 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 38 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.611 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 38 completed successfully in 1.17 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.613 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:30.613 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:30.614 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:30.614 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access submission: submission1, ServletWebRequest: uri=/api/v1/assignment/assignment1/submission/submission1;client=127.0.0.1]
+2019-10-02 13:27:30.614 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/submission/submission1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access submission: submission1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForSubmissionAccess(CourseSecuredService.java:239)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForSubmissionAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionController.getSubmissionAction(SubmissionController.java:256)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionControllerIntegrationTest.instructorCannotAccessUnauthorizedSubmission(SubmissionControllerIntegrationTest.java:25)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:198)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:136)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:104)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:104)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:40)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:30.616 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:30.616 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@45947a2f]}]
+2019-10-02 13:27:30.617 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access submission: submission1]
+2019-10-02 13:27:30.632 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.SubmissionController.getAllSubmissions(java.lang.String,java.util.Optional<java.lang.Integer>,java.util.Optional<java.lang.Integer>)
+2019-10-02 13:27:30.633 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment2, Optional.empty, Optional.empty]
+2019-10-02 13:27:30.635 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment2" }, "limit" : 1, "singleBatch" : true }' with request id 39 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.637 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 39 completed successfully in 1.45 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.639 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:30.642 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 40 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.643 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 40 completed successfully in 1.27 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.644 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:30.644 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:30.651 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "submission", "filter" : { "assignmentId" : "assignment2" }, "limit" : 25 }' with request id 41 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.652 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 41 completed successfully in 1.34 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.660 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "identity", "filter" : { "_id" : "submission2" }, "limit" : 1, "singleBatch" : true }' with request id 42 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.661 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 42 completed successfully in 1.27 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.677 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "identity", "filter" : { "_id" : { "$oid" : "5d9489a2f4446f381f0849fb" } }, "limit" : 1, "singleBatch" : true }' with request id 43 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.678 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 43 completed successfully in 2.29 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.680 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.680 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{numPages=1, submissions=[{identity=nl.tudelft.ewi.auta.core.database.IdentityContainer@2987ddca, name=submission2, id=submission2}, {identity=null, name=new-submission, id=5d9489a2f4446f381f0849fb}], page=1, errors=[]}]
+2019-10-02 13:27:30.696 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.SubmissionController.getSubmissionAction(java.lang.String,java.lang.String,java.util.Optional<java.lang.String>)
+2019-10-02 13:27:30.697 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment2, submission2, Optional.empty]
+2019-10-02 13:27:30.699 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment2" }, "limit" : 1, "singleBatch" : true }' with request id 44 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.700 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 44 completed successfully in 1.47 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.703 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "submission", "filter" : { "assignmentId" : "assignment2", "_id" : "submission2" }, "limit" : 2 }' with request id 45 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.704 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 45 completed successfully in 1.14 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.705 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:30.707 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 46 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.708 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 46 completed successfully in 0.91 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.708 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:30.709 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:30.710 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "identity", "filter" : { "_id" : "submission2" }, "limit" : 1, "singleBatch" : true }' with request id 47 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.710 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 47 completed successfully in 0.76 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.713 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "submission2", "assignmentId" : "assignment2" }, "limit" : 2 }' with request id 48 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.713 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 48 completed successfully in 0.93 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.718 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.735 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{identity=nl.tudelft.ewi.auta.core.database.IdentityContainer@302cda6b, name=submission2, id=submission2, aid=assignment2, pipelineLog=nl.tudelft.ewi.auta.core.model.SubmissionPipelineLog@e1781, results=PROJECT root
+ >
+
+, errors=[]}]
+2019-10-02 13:27:30.753 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.ReportController:
+	{GET /api/v1/assignment/{aid}/submission/{sid}/verdict, produces [application/json]}: verdictAction(String,String)
+2019-10-02 13:27:30.753 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:30.770 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.784 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.786 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:30.787 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, submission1]
+2019-10-02 13:27:30.789 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.790 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{verdict=error, errors=[]}]
+2019-10-02 13:27:30.797 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.ReportController:
+	{GET /api/v1/assignment/{aid}/submission/{sid}/verdict, produces [application/json]}: verdictAction(String,String)
+2019-10-02 13:27:30.797 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:30.808 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.812 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.814 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:30.815 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, submission1]
+2019-10-02 13:27:30.817 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.818 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{verdict=fail, errors=[]}]
+2019-10-02 13:27:30.825 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.ReportController:
+	{GET /api/v1/assignment/{aid}/submission/{sid}/verdict, produces [application/json]}: verdictAction(String,String)
+2019-10-02 13:27:30.825 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:30.838 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.843 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.845 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:30.846 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, submission1]
+2019-10-02 13:27:30.848 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.849 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{verdict=pass, errors=[]}]
+2019-10-02 13:27:30.856 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.ReportController:
+	{GET /api/v1/assignment/{aid}/submission/{sid}/verdict, produces [application/json]}: verdictAction(String,String)
+2019-10-02 13:27:30.857 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:30.872 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.876 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.878 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:30.880 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, submission1]
+2019-10-02 13:27:30.884 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.887 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{verdict=warn, errors=[]}]
+2019-10-02 13:27:30.892 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.ReportController:
+	{GET /api/v1/assignment/{aid}/submission/{sid}/verdict, produces [application/json]}: verdictAction(String,String)
+2019-10-02 13:27:30.892 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:30.902 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.906 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:30.907 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:30.908 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, submission1]
+2019-10-02 13:27:30.909 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:30.910 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{verdict=pending, errors=[]}]
+2019-10-02 13:27:30.924 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment1" }, "u" : { "_id" : "assignment1", "name" : "assignment1", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 49 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.925 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 49 completed successfully in 1.30 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.927 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment2" }, "u" : { "_id" : "assignment2", "name" : "assignment2", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 50 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.928 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 50 completed successfully in 0.97 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.930 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment3" }, "u" : { "_id" : "assignment3", "name" : "assignment3", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 51 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.931 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 51 completed successfully in 1.08 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.934 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course1" }, "u" : { "_id" : "course1", "name" : "NO_TA_NO_INSTRUCTORS", "courseCode" : "AB1234", "instructorSet" : [], "taSet" : [], "assignmentIds" : ["assignment1"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 52 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.935 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 52 completed successfully in 1.29 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.937 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course2" }, "u" : { "_id" : "course2", "name" : "TA_AND_INSTRUCTOR", "courseCode" : "AB1234", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment2"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 53 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.938 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 53 completed successfully in 1.37 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.940 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course3" }, "u" : { "_id" : "course3", "name" : "TA_AND_INSTRUCTOR2", "courseCode" : "AB1234_2", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment3"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 54 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.941 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 54 completed successfully in 1.19 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.943 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "assignmentId" : "assignment1", "name" : "submission1", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 55 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.944 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 55 completed successfully in 1.18 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.947 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "assignmentId" : "assignment2", "name" : "submission2", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 56 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.948 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 56 completed successfully in 1.17 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.950 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "identifier" : "id1", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 57 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.951 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 57 completed successfully in 1.20 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.954 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "identifier" : "id2", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 58 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.955 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 58 completed successfully in 2.00 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.957 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container1" }, "u" : { "_id" : "container1", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission1", "assignmentId" : "assignment1", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 59 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.958 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 59 completed successfully in 1.14 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.965 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container2" }, "u" : { "_id" : "container2", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission2", "assignmentId" : "assignment2", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 60 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.968 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 60 completed successfully in 4.33 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.980 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addAssignmentAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:30.981 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{aid=assignment1}]
+2019-10-02 13:27:30.981 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1, {aid=assignment1}]
+2019-10-02 13:27:30.983 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 61 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.983 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 61 completed successfully in 0.72 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.985 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 62 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.986 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 62 completed successfully in 0.82 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:30.987 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:30.987 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:30.988 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:30.988 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1, ServletWebRequest: uri=/api/v1/course/course1/assignment;client=127.0.0.1]
+2019-10-02 13:27:30.988 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/course1/assignment;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForCourseAccess(CourseSecuredService.java:206)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForCourseAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addAssignmentAction(CourseController.java:209)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.putForbidden(AbstractWebSecurityIntegrationTest.java:79)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerIntegrationTest.userCannotAccessUnauthorizedCourseAddAssignment(CourseControllerIntegrationTest.java:96)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:30.989 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:30.990 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@32446ceb]}]
+2019-10-02 13:27:30.990 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1]
+2019-10-02 13:27:31.000 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getAllAction()
+2019-10-02 13:27:31.000 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:31.001 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course" }' with request id 63 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.002 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 63 completed successfully in 1.02 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.005 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.005 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{courses=[nl.tudelft.ewi.auta.core.model.Course@1d0b2dd0, nl.tudelft.ewi.auta.core.model.Course@8916fb37, nl.tudelft.ewi.auta.core.model.Course@79dbb3c8], errors=[]}]
+2019-10-02 13:27:31.016 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.017 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=instructor, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.018 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1, {username=instructor, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.019 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 64 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.019 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 64 completed successfully in 0.74 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.020 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:31.021 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:31.021 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.021 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1, ServletWebRequest: uri=/api/v1/course/course1/user;client=127.0.0.1]
+2019-10-02 13:27:31.022 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/course1/user;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForCourseAccess(CourseSecuredService.java:206)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForCourseAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(CourseController.java:254)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.putForbidden(AbstractWebSecurityIntegrationTest.java:79)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerIntegrationTest.userCannotAccessUnauthorizedCourseAddUser(CourseControllerIntegrationTest.java:83)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.023 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.023 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@40db42b7]}]
+2019-10-02 13:27:31.024 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1]
+2019-10-02 13:27:31.033 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeAssignmentAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:31.033 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1, aid]
+2019-10-02 13:27:31.035 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 65 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.036 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 65 completed successfully in 1.29 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.037 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:31.037 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:31.038 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.038 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1, ServletWebRequest: uri=/api/v1/course/course1/assignment/aid;client=127.0.0.1]
+2019-10-02 13:27:31.038 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/course1/assignment/aid;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForCourseAccess(CourseSecuredService.java:206)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForCourseAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.removeAssignmentAction(CourseController.java:318)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.deleteForbidden(AbstractWebSecurityIntegrationTest.java:70)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerIntegrationTest.userCannotAccessUnauthorizedCourseDeleteAssignment(CourseControllerIntegrationTest.java:117)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.039 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.040 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@2bd4e227]}]
+2019-10-02 13:27:31.040 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1]
+2019-10-02 13:27:31.052 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getCourseAction(java.lang.String)
+2019-10-02 13:27:31.053 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1]
+2019-10-02 13:27:31.055 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 66 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.056 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 66 completed successfully in 1.16 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.058 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:31.058 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:31.059 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.059 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1, ServletWebRequest: uri=/api/v1/course/course1;client=127.0.0.1]
+2019-10-02 13:27:31.059 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/course1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForCourseAccess(CourseSecuredService.java:206)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForCourseAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.getCourseAction(CourseController.java:175)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerIntegrationTest.userCannotAccessUnauthorizedCourseGet(CourseControllerIntegrationTest.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.060 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.060 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@47e495b7]}]
+2019-10-02 13:27:31.060 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1]
+2019-10-02 13:27:31.071 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getAllAction()
+2019-10-02 13:27:31.072 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:31.074 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course" }' with request id 67 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.075 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 67 completed successfully in 1.02 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.076 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:31.076 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:31.076 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:31.077 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:31.077 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course3
+2019-10-02 13:27:31.077 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course3
+2019-10-02 13:27:31.077 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.077 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{courses=[nl.tudelft.ewi.auta.core.model.Course@8916fb37, nl.tudelft.ewi.auta.core.model.Course@79dbb3c8], errors=[]}]
+2019-10-02 13:27:31.086 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getCourseAction(java.lang.String)
+2019-10-02 13:27:31.087 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1]
+2019-10-02 13:27:31.088 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 68 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.089 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 68 completed successfully in 0.69 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.090 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.090 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{course=nl.tudelft.ewi.auta.core.model.Course@1d0b2dd0, errors=[]}]
+2019-10-02 13:27:31.099 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addAssignmentAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:31.100 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{aid=assignment1}]
+2019-10-02 13:27:31.100 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course2, {aid=assignment1}]
+2019-10-02 13:27:31.102 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 69 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.102 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 69 completed successfully in 0.70 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.104 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course2" }, "limit" : 1, "singleBatch" : true }' with request id 70 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.104 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 70 completed successfully in 0.69 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.105 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:31.105 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:31.105 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : Assignment assignment1 added to course course2 successfully: true
+2019-10-02 13:27:31.107 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course2" }, "u" : { "_id" : "course2", "name" : "TA_AND_INSTRUCTOR", "courseCode" : "AB1234", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment2", "assignment1"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 71 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.108 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 71 completed successfully in 0.87 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.108 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.108 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.110 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course2" }, "limit" : 1, "singleBatch" : true }' with request id 72 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.110 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 72 completed successfully in 0.77 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.118 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getAllAction()
+2019-10-02 13:27:31.119 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:31.120 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course" }' with request id 73 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.121 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 73 completed successfully in 0.76 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.122 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user ta, cid course1
+2019-10-02 13:27:31.122 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User ta does not have access to course course1
+2019-10-02 13:27:31.122 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user ta, cid course2
+2019-10-02 13:27:31.122 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User ta is registered as a TA in course course2
+2019-10-02 13:27:31.122 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user ta, cid course3
+2019-10-02 13:27:31.122 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User ta is registered as a TA in course course3
+2019-10-02 13:27:31.123 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.123 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{courses=[nl.tudelft.ewi.auta.core.model.Course@f15c4e3b, nl.tudelft.ewi.auta.core.model.Course@79dbb3c8], errors=[]}]
+2019-10-02 13:27:31.134 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:31.135 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1, ROLE_TEACHER, instructor]
+2019-10-02 13:27:31.136 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 74 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.137 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 74 completed successfully in 0.71 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.137 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:31.137 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:31.138 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.138 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1, ServletWebRequest: uri=/api/v1/course/course1/user/ROLE_TEACHER/instructor;client=127.0.0.1]
+2019-10-02 13:27:31.138 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/course1/user/ROLE_TEACHER/instructor;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForCourseAccess(CourseSecuredService.java:206)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForCourseAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(CourseController.java:290)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.deleteForbidden(AbstractWebSecurityIntegrationTest.java:70)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerIntegrationTest.userCannotAccessUnauthorizedCourseDeleteUser(CourseControllerIntegrationTest.java:90)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.139 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.139 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@25226aa8]}]
+2019-10-02 13:27:31.140 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1]
+2019-10-02 13:27:31.150 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.deleteCourseAction(java.lang.String)
+2019-10-02 13:27:31.151 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1]
+2019-10-02 13:27:31.152 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 75 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.152 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 75 completed successfully in 0.69 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.153 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:31.154 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:31.154 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.154 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1, ServletWebRequest: uri=/api/v1/course/course1;client=127.0.0.1]
+2019-10-02 13:27:31.154 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/course1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForCourseAccess(CourseSecuredService.java:206)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForCourseAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.deleteCourseAction(CourseController.java:136)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.deleteForbidden(AbstractWebSecurityIntegrationTest.java:70)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerIntegrationTest.userCannotAccessUnauthorizedCourseDelete(CourseControllerIntegrationTest.java:67)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.156 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.156 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@1adb55af]}]
+2019-10-02 13:27:31.156 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1]
+2019-10-02 13:27:31.168 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.updateCourseAction(java.lang.String,nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:31.201 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@9f010a28]
+2019-10-02 13:27:31.201 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@215da7e0]
+2019-10-02 13:27:31.250 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [course1, nl.tudelft.ewi.auta.core.model.Course@9f010a28, org.springframework.validation.BeanPropertyBindingResult: 0 errors]
+2019-10-02 13:27:31.253 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "_id" : "course1" }, "limit" : 1, "singleBatch" : true }' with request id 76 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.254 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 76 completed successfully in 0.90 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:31.254 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:31.255 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:31.255 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.255 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1, ServletWebRequest: uri=/api/v1/course/course1;client=127.0.0.1]
+2019-10-02 13:27:31.255 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/course1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForCourseAccess(CourseSecuredService.java:206)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForCourseAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.updateCourseAction(CourseController.java:156)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.putForbidden(AbstractWebSecurityIntegrationTest.java:79)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerIntegrationTest.userCannotAccessUnauthorizedCourseUpdateCourse(CourseControllerIntegrationTest.java:77)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.257 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.257 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@5f9b2686]}]
+2019-10-02 13:27:31.257 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access course: course1]
+2019-10-02 13:27:31.288 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.289 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.301 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.306 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.309 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:31.312 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@7a1fd084]
+2019-10-02 13:27:31.312 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@276b63d4]
+2019-10-02 13:27:31.313 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.model.Course@7a1fd084, org.springframework.validation.BeanPropertyBindingResult: 0 errors]
+2019-10-02 13:27:31.315 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.316 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{id=cid, errors=[]}]
+2019-10-02 13:27:31.327 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.328 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.340 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.344 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.346 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeAssignmentAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:31.348 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, aid]
+2019-10-02 13:27:31.350 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : Removed assignment aid successfully: false
+2019-10-02 13:27:31.351 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.352 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.365 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.366 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.378 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.382 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.386 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addAssignmentAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:31.389 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{aid=aid}]
+2019-10-02 13:27:31.389 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {aid=aid}]
+2019-10-02 13:27:31.390 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : Assignment aid added to course cid successfully: true
+2019-10-02 13:27:31.391 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.392 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.405 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.406 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.420 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.425 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.427 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.430 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=admin, role=ROLE_STUDENT}]
+2019-10-02 13:27:31.430 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=admin, role=ROLE_STUDENT}]
+2019-10-02 13:27:31.434 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.434 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: ROLE_STUDENT is an invalid role type, ServletWebRequest: uri=/api/v1/course/cid/user;client=127.0.0.1]
+2019-10-02 13:27:31.434 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/cid/user;client=127.0.0.1 generated a(n) INVALID_ROLE error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: ROLE_STUDENT is an invalid role type
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addUser(CourseController.java:340)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(CourseController.java:259)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.assignUserInvalidRoleTest(CourseControllerTest.java:291)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.435 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.436 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@46800e19]}]
+2019-10-02 13:27:31.438 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: ROLE_STUDENT is an invalid role type]
+2019-10-02 13:27:31.449 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.450 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.465 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.478 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.479 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getAllAction()
+2019-10-02 13:27:31.480 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:31.481 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.483 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{courses=[nl.tudelft.ewi.auta.core.model.Course@3c431028], errors=[]}]
+2019-10-02 13:27:31.497 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.498 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.511 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.516 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.518 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.521 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=admin, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.521 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [empty, {username=admin, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.523 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.524 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException, ServletWebRequest: uri=/api/v1/course/empty/user;client=127.0.0.1]
+2019-10-02 13:27:31.524 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/empty/user;client=127.0.0.1 generated a(n) NO_SUCH_COURSE error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException: null
+	at nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(CourseController.java:253)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.assignUserInvalidCourseIdTest(CourseControllerTest.java:282)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.526 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.527 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@e1834c9]}]
+2019-10-02 13:27:31.529 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException]
+2019-10-02 13:27:31.598 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.599 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.612 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.616 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.619 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.622 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=ta, role=ROLE_TA}]
+2019-10-02 13:27:31.622 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=ta, role=ROLE_TA}]
+2019-10-02 13:27:31.626 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User ta added to course cid with role ROLE_TA successfully: true
+2019-10-02 13:27:31.627 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.628 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.643 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.644 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.657 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.662 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.664 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.667 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=teacher, role=ROLE_TA}]
+2019-10-02 13:27:31.668 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=teacher, role=ROLE_TA}]
+2019-10-02 13:27:31.673 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User teacher added to course cid with role ROLE_TA successfully: true
+2019-10-02 13:27:31.674 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.675 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.683 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.684 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.692 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.696 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.698 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.699 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=teacher, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.700 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=teacher, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.701 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User teacher added to course cid with role ROLE_TEACHER successfully: true
+2019-10-02 13:27:31.702 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.703 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.711 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.712 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.720 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.725 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.727 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.729 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=admin, role=ROLE_TA}]
+2019-10-02 13:27:31.730 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=admin, role=ROLE_TA}]
+2019-10-02 13:27:31.731 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User admin added to course cid with role ROLE_TA successfully: true
+2019-10-02 13:27:31.733 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.734 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.746 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.747 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.760 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.764 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.767 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.773 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=admin, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.774 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=admin, role=ROLE_TEACHER}]
+2019-10-02 13:27:31.776 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User admin added to course cid with role ROLE_TEACHER successfully: true
+2019-10-02 13:27:31.777 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.777 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.787 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.788 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.798 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.803 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.805 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:31.807 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@768a0747]
+2019-10-02 13:27:31.807 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@15433791]
+2019-10-02 13:27:31.808 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.model.Course@768a0747, org.springframework.validation.BeanPropertyBindingResult: 1 errors
+Field error in object 'course' on field 'year': rejected value [null]; codes [year.empty.course.year,year.empty.year,year.empty.java.lang.Integer,year.empty]; arguments []; default message [year cannot be empty]]
+2019-10-02 13:27:31.810 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.810 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: year cannot be empty, ServletWebRequest: uri=/api/v1/course;client=127.0.0.1]
+2019-10-02 13:27:31.810 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course;client=127.0.0.1 generated a(n) FIELD_TYPE_MISMATCH error
+
+nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: year cannot be empty
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.checkForErrors(ControllerBase.java:88)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(CourseController.java:113)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.addCourseInvalidTest(CourseControllerTest.java:198)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.811 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.811 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@5b094906]}]
+2019-10-02 13:27:31.813 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: year cannot be empty]
+2019-10-02 13:27:31.820 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.821 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.828 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.831 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.833 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:31.834 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, ROLE, ta]
+2019-10-02 13:27:31.835 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.835 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: Role must be one of ROLE_TA, ROLE_TEACHER, ServletWebRequest: uri=/api/v1/course/cid/user/ROLE/ta;client=127.0.0.1]
+2019-10-02 13:27:31.835 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/cid/user/ROLE/ta;client=127.0.0.1 generated a(n) INVALID_ROLE error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: Role must be one of ROLE_TA, ROLE_TEACHER
+	at nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(CourseController.java:287)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.deleteUserInvalidRoleTest(CourseControllerTest.java:388)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.837 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.837 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@432213d2]}]
+2019-10-02 13:27:31.838 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: Role must be one of ROLE_TA, ROLE_TEACHER]
+2019-10-02 13:27:31.870 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.871 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.886 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.890 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.892 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addAssignmentAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:31.895 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{aid=aid}]
+2019-10-02 13:27:31.895 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [empty, {aid=aid}]
+2019-10-02 13:27:31.896 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:31.897 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException, ServletWebRequest: uri=/api/v1/course/empty/assignment;client=127.0.0.1]
+2019-10-02 13:27:31.897 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/empty/assignment;client=127.0.0.1 generated a(n) NO_SUCH_COURSE error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException: null
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addAssignmentAction(CourseController.java:208)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.addAssignmentBadCourseTest(CourseControllerTest.java:328)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:31.898 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:31.899 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@349ce6cb]}]
+2019-10-02 13:27:31.900 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException]
+2019-10-02 13:27:31.910 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.911 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.923 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.927 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.929 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getCourseAction(java.lang.String)
+2019-10-02 13:27:31.930 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid]
+2019-10-02 13:27:31.931 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.932 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{course=nl.tudelft.ewi.auta.core.model.Course@3c431028, errors=[]}]
+2019-10-02 13:27:31.944 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.945 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.956 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.960 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.962 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:31.964 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=ta, role=ROLE_TA}]
+2019-10-02 13:27:31.965 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=ta, role=ROLE_TA}]
+2019-10-02 13:27:31.966 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User ta added to course cid with role ROLE_TA successfully: false
+2019-10-02 13:27:31.968 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.969 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:31.975 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:31.976 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:31.989 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.992 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:31.993 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeAssignmentAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:31.993 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, alreadyExists]
+2019-10-02 13:27:31.994 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : Removed assignment alreadyExists successfully: true
+2019-10-02 13:27:31.994 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:31.995 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:32.001 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.002 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.009 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.011 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.012 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:32.014 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@d78d8df4]
+2019-10-02 13:27:32.014 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@3116a1c7]
+2019-10-02 13:27:32.015 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.model.Course@d78d8df4, org.springframework.validation.BeanPropertyBindingResult: 1 errors
+Field error in object 'course' on field 'name': rejected value [null]; codes [name.empty.course.name,name.empty.name,name.empty.java.lang.String,name.empty]; arguments []; default message [Name cannot be empty]]
+2019-10-02 13:27:32.016 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.016 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: Name cannot be empty, ServletWebRequest: uri=/api/v1/course;client=127.0.0.1]
+2019-10-02 13:27:32.016 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course;client=127.0.0.1 generated a(n) FIELD_TYPE_MISMATCH error
+
+nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: Name cannot be empty
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.checkForErrors(ControllerBase.java:88)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(CourseController.java:113)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.addCourseMissingNameTest(CourseControllerTest.java:212)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.017 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.018 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@11d45c84]}]
+2019-10-02 13:27:32.019 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: Name cannot be empty]
+2019-10-02 13:27:32.027 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.028 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.037 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.040 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.041 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeAssignmentAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:32.042 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [empty, alreadyExists]
+2019-10-02 13:27:32.042 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.043 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException, ServletWebRequest: uri=/api/v1/course/empty/assignment/alreadyExists;client=127.0.0.1]
+2019-10-02 13:27:32.043 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/empty/assignment/alreadyExists;client=127.0.0.1 generated a(n) NO_SUCH_COURSE error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException: null
+	at nl.tudelft.ewi.auta.core.controller.CourseController.removeAssignmentAction(CourseController.java:317)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.deleteAssignmenInvalidCourseTest(CourseControllerTest.java:351)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.044 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.044 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@1340e9dc]}]
+2019-10-02 13:27:32.045 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException]
+2019-10-02 13:27:32.053 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.053 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.068 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.071 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.072 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:32.073 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, ROLE_TA, ta]
+2019-10-02 13:27:32.074 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : Removed TA ta successfully: true
+2019-10-02 13:27:32.074 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:32.075 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:32.081 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.082 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.089 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.092 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.093 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.deleteCourseAction(java.lang.String)
+2019-10-02 13:27:32.094 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [empty]
+2019-10-02 13:27:32.095 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.095 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException, ServletWebRequest: uri=/api/v1/course/empty;client=127.0.0.1]
+2019-10-02 13:27:32.095 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/empty;client=127.0.0.1 generated a(n) NO_SUCH_COURSE error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException: null
+	at nl.tudelft.ewi.auta.core.controller.CourseController.deleteCourseAction(CourseController.java:135)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.deleteCourseNotExistingTest(CourseControllerTest.java:337)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.096 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.097 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@3b8fb744]}]
+2019-10-02 13:27:32.098 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException]
+2019-10-02 13:27:32.103 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.104 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.112 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.115 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.116 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:32.117 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, ROLE_TEACHER, admin]
+2019-10-02 13:27:32.118 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : Removed instructor admin successfully: true
+2019-10-02 13:27:32.118 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:32.119 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:32.128 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.129 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.137 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.140 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.141 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.updateCourseAction(java.lang.String,nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:32.144 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@2ba9f8fc]
+2019-10-02 13:27:32.144 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@404a0714]
+2019-10-02 13:27:32.144 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, nl.tudelft.ewi.auta.core.model.Course@2ba9f8fc, org.springframework.validation.BeanPropertyBindingResult: 0 errors]
+2019-10-02 13:27:32.145 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:32.146 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:32.152 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.152 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.159 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.164 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.165 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.getCourseAction(java.lang.String)
+2019-10-02 13:27:32.165 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [empty]
+2019-10-02 13:27:32.166 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.166 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException, ServletWebRequest: uri=/api/v1/course/empty;client=127.0.0.1]
+2019-10-02 13:27:32.166 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/empty;client=127.0.0.1 generated a(n) NO_SUCH_COURSE error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException: null
+	at nl.tudelft.ewi.auta.core.controller.CourseController.getCourseAction(CourseController.java:174)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.getSpecificCourseNotExistsTest(CourseControllerTest.java:438)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.167 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.168 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@650afbfb]}]
+2019-10-02 13:27:32.169 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException]
+2019-10-02 13:27:32.179 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.180 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.187 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.190 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.191 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:32.194 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@e0938ac]
+2019-10-02 13:27:32.194 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@61e001e2]
+2019-10-02 13:27:32.195 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.model.Course@e0938ac, org.springframework.validation.BeanPropertyBindingResult: 1 errors
+Field error in object 'course' on field 'courseCode': rejected value [null]; codes [courseCode.empty.course.courseCode,courseCode.empty.courseCode,courseCode.empty.java.lang.String,courseCode.empty]; arguments []; default message [course code cannot be empty]]
+2019-10-02 13:27:32.196 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.196 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: course code cannot be empty, ServletWebRequest: uri=/api/v1/course;client=127.0.0.1]
+2019-10-02 13:27:32.196 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course;client=127.0.0.1 generated a(n) FIELD_TYPE_MISMATCH error
+
+nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: course code cannot be empty
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.checkForErrors(ControllerBase.java:88)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(CourseController.java:113)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.addCourseMissingCourseCodeTest(CourseControllerTest.java:228)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.197 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.197 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@73c3ee05]}]
+2019-10-02 13:27:32.198 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: course code cannot be empty]
+2019-10-02 13:27:32.204 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.205 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.213 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.216 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.218 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:32.221 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@3c431028]
+2019-10-02 13:27:32.221 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@43bf8bcc]
+2019-10-02 13:27:32.222 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.model.Course@3c431028, org.springframework.validation.BeanPropertyBindingResult: 0 errors]
+2019-10-02 13:27:32.228 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.228 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.CourseAlreadyExistsException: Course with code: courseCode, year: 2019 already exists, ServletWebRequest: uri=/api/v1/course;client=127.0.0.1]
+2019-10-02 13:27:32.228 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course;client=127.0.0.1 generated a(n) COURSE_ALREADY_EXISTS error
+
+nl.tudelft.ewi.auta.core.response.exception.CourseAlreadyExistsException: Course with code: courseCode, year: 2019 already exists
+	at nl.tudelft.ewi.auta.core.controller.CourseController.lambda$addNewCourseAction$1(CourseController.java:119)
+	at java.base/java.util.Optional.ifPresent(Optional.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(CourseController.java:117)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.addCourseAlreadyExistsTest(CourseControllerTest.java:158)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.229 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.231 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@192a59d4]}]
+2019-10-02 13:27:32.232 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.CourseAlreadyExistsException: Course with code: courseCode, year: 2019 already exists]
+2019-10-02 13:27:32.239 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.240 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.252 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.256 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.258 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(nl.tudelft.ewi.auta.core.model.Course,org.springframework.validation.BindingResult)
+2019-10-02 13:27:32.261 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.model.Course@79cc2c3c]
+2019-10-02 13:27:32.261 TRACE 14367 --- [Test worker] o.s.w.m.support.InvocableHandlerMethod   : Arguments: [org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder@559a02fe]
+2019-10-02 13:27:32.262 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.model.Course@79cc2c3c, org.springframework.validation.BeanPropertyBindingResult: 1 errors
+Field error in object 'course' on field 'year': rejected value [1835]; codes [too.old.course.year,too.old.year,too.old.java.lang.Integer,too.old]; arguments []; default message [year must be greater than 1970]]
+2019-10-02 13:27:32.263 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.263 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: year must be greater than 1970, ServletWebRequest: uri=/api/v1/course;client=127.0.0.1]
+2019-10-02 13:27:32.263 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course;client=127.0.0.1 generated a(n) FIELD_TYPE_MISMATCH error
+
+nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: year must be greater than 1970
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.checkForErrors(ControllerBase.java:88)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addNewCourseAction(CourseController.java:113)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.addCourseTooOldTest(CourseControllerTest.java:244)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.264 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.265 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@464f9ef8]}]
+2019-10-02 13:27:32.267 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.FieldTypeMismatchException: year must be greater than 1970]
+2019-10-02 13:27:32.282 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.284 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.295 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.299 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.300 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:32.301 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [empty, ROLE_TA, ta]
+2019-10-02 13:27:32.303 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.303 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException, ServletWebRequest: uri=/api/v1/course/empty/user/ROLE_TA/ta;client=127.0.0.1]
+2019-10-02 13:27:32.303 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/empty/user/ROLE_TA/ta;client=127.0.0.1 generated a(n) NO_SUCH_COURSE error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException: null
+	at nl.tudelft.ewi.auta.core.controller.CourseController.removeUserAction(CourseController.java:289)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.deleteUserNotExistingCourseTest(CourseControllerTest.java:379)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.304 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.305 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@2aa18743]}]
+2019-10-02 13:27:32.306 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchCourseException]
+2019-10-02 13:27:32.319 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.320 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.332 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.336 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.338 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:32.341 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=student, role=ROLE_TA}]
+2019-10-02 13:27:32.341 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=student, role=ROLE_TA}]
+2019-10-02 13:27:32.343  WARN 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User student has max authority -1, could not add course null with role ROLE_TA
+2019-10-02 13:27:32.344 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.345 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user student as a ROLE_TA, user does not have high enough authority, ServletWebRequest: uri=/api/v1/course/cid/user;client=127.0.0.1]
+2019-10-02 13:27:32.345 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/cid/user;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user student as a ROLE_TA, user does not have high enough authority
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addUser(CourseController.java:358)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(CourseController.java:259)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.assignUserTooLowAuthorityTest(CourseControllerTest.java:258)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:198)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:136)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:104)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:104)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:40)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.346 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.347 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@47a528ea]}]
+2019-10-02 13:27:32.349 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user student as a ROLE_TA, user does not have high enough authority]
+2019-10-02 13:27:32.370 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.371 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.384 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.388 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.389 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:32.391 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=student, role=ROLE_TEACHER}]
+2019-10-02 13:27:32.391 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=student, role=ROLE_TEACHER}]
+2019-10-02 13:27:32.392  WARN 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User student has max authority -1, could not add course null with role ROLE_TEACHER
+2019-10-02 13:27:32.393 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.393 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user student as a ROLE_TEACHER, user does not have high enough authority, ServletWebRequest: uri=/api/v1/course/cid/user;client=127.0.0.1]
+2019-10-02 13:27:32.393 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/cid/user;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user student as a ROLE_TEACHER, user does not have high enough authority
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addUser(CourseController.java:358)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(CourseController.java:259)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.assignUserTooLowAuthorityTest(CourseControllerTest.java:258)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:198)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:136)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:104)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:104)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:40)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.395 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.395 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@1947bbe5]}]
+2019-10-02 13:27:32.396 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user student as a ROLE_TEACHER, user does not have high enough authority]
+2019-10-02 13:27:32.404 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.405 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.414 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.418 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.419 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:32.421 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=ta, role=ROLE_TEACHER}]
+2019-10-02 13:27:32.422 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {username=ta, role=ROLE_TEACHER}]
+2019-10-02 13:27:32.423  WARN 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : User ta has max authority 0, could not add course null with role ROLE_TEACHER
+2019-10-02 13:27:32.423 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.424 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user ta as a ROLE_TEACHER, user does not have high enough authority, ServletWebRequest: uri=/api/v1/course/cid/user;client=127.0.0.1]
+2019-10-02 13:27:32.424 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/course/cid/user;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user ta as a ROLE_TEACHER, user does not have high enough authority
+	at nl.tudelft.ewi.auta.core.controller.CourseController.addUser(CourseController.java:358)
+	at nl.tudelft.ewi.auta.core.controller.CourseController.assignRoleAction(CourseController.java:259)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.CourseControllerTest.assignUserTooLowAuthorityTest(CourseControllerTest.java:258)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:198)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:136)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:104)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:104)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:40)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.425 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.425 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@2579e550]}]
+2019-10-02 13:27:32.426 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: Cannot add user ta as a ROLE_TEACHER, user does not have high enough authority]
+2019-10-02 13:27:32.432 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.433 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.442 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.446 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.447 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.deleteCourseAction(java.lang.String)
+2019-10-02 13:27:32.448 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid]
+2019-10-02 13:27:32.449 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:32.450 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:32.459 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CourseController:
+	{GET /api/v1/course, produces [application/json]}: getAllAction()
+	{PUT /api/v1/course/{cid}/assignment, produces [application/json]}: addAssignmentAction(String,Map)
+	{POST /api/v1/course, produces [application/json]}: addNewCourseAction(Course,BindingResult)
+	{DELETE /api/v1/course/{cid}, produces [application/json]}: deleteCourseAction(String)
+	{PUT /api/v1/course/{cid}, produces [application/json]}: updateCourseAction(String,Course,BindingResult)
+	{GET /api/v1/course/{cid}, produces [application/json]}: getCourseAction(String)
+	{PUT /api/v1/course/{cid}/user, produces [application/json]}: assignRoleAction(String,Map)
+	{DELETE /api/v1/course/{cid}/user/{role}/{username}, produces [application/json]}: removeUserAction(String,String,String)
+	{DELETE /api/v1/course/{cid}/assignment/{aid}, produces [application/json]}: removeAssignmentAction(String,String)
+2019-10-02 13:27:32.460 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 9 mappings in <unknown>
+2019-10-02 13:27:32.472 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.478 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.479 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.CourseController.addAssignmentAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:32.481 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{aid=alreadyExists}]
+2019-10-02 13:27:32.481 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [cid, {aid=alreadyExists}]
+2019-10-02 13:27:32.482 DEBUG 14367 --- [Test worker] n.t.e.a.c.controller.CourseController    : Assignment alreadyExists added to course cid successfully: false
+2019-10-02 13:27:32.482 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:32.483 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:32.498 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.MetricsController:
+	{GET /api/v1/worker/metrics, produces [application/json]}: getMetricsAction()
+	{GET /api/v1/worker/metrics.js, produces [text/javascript]}: getMetricsJsAction()
+	{GET /api/v1/worker/metrics/test-fixtures, produces [application/json]}: getMetricTestFixturesAction()
+2019-10-02 13:27:32.498 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:32.505 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.508 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.509 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.MetricsController.getMetricTestFixturesAction()
+2019-10-02 13:27:32.510 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:32.510 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:32.511 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[], fixtures={ASSEMBLY_INSTRUCTION_COUNT=[3.0, 1461.0], ASSEMBLY_RECURSION_TARGET=[[], [factorial], [mult, main, factorial]], ASSERTIONS_PER_TEST=[0.0, 1.0, 3.0], COMMENTED_LINE_COUNT=[0.0, 150.0], CONSTRUCTOR_COUNT=[0.0, 1.0, 3.0, 14.0], CYCLOMATIC_COMPLEXITY=[1.0, 4.0, 9.0, 12.0, 16.0, 759.0], DOCKER_LOGS=[BUILD FAILED, BUILD SUCCESS], FIELD_COUNT=[0.0, 3.0, 28.0], FILE_COUNT=[0.0, 1.0, 8.0, 114.0], JAVADOC_EXISTS=[false, true], JAVADOC_VIOLATIONS=[[], [Missing @return statement], [Missing @param tag for parameter arg, Missing @return statement]], LINE_LENGTH=[[], [2.0, 2.0], [16.0, 0.0, 3.0, 72.0, 0.0, 1.0], [16.0, 0.0, 3.0, 214.0, 91.0, 18.0, 22.0, 0.0]], LINES_OF_CODE=[0.0, 13.0, 182.0, 638.0, 21047.0], METHOD_COUNT=[0.0, 2.0, 38.0], METHOD_EFFECTIVE_LOC=[0.0, 8.0, 9131.0], PARAMETER_COUNT=[0.0, 3.0, 7.0, 225.0], PERCENTAGE_COMMENTED_LINES=[0.0, 0.23, 0.79, 1.0], TEST_METHOD_COUNT=[0.0, 5.0, 413.0], MAINTAINABILITY_INDEX=[0.0, 0.08, 0.13, 0.61, 1.0], UNIQUE_WORDS_COUNT=[5.0, 1047.0], LAMBDAS_COUNT=[0.0, 1.0, 17.0], SUBCLASSES_COUNT=[0.0, 1.0, 12.0], ANONYMOUS_CLASSES_COUNT=[0.0, 1.0, 3.0, 162.0], MAX_NESTED_BLOCKS=[0.0, 2.0, 59.0], MATH_OPERATIONS_COUNT=[0.0, 1.0, 10.0, 12065.0], ASSIGNMENTS_COUNT=[0.0, 4.0, 721.0], NUMBER_COUNT=[0.0, 2.0, 132.0], STRING_LITERAL_COUNT=[0.0, 6.0, 613.0], PARENTHESIZED_EXPRESSION_COUNT=[0.0, 1.0, 75.0], TRY_CATCH_COUNT=[0.0, 1.0, 5.0, 48.0], COMPARISON_COUNT=[0.0, 1.0, 90.0], LOOP_COUNT=[0.0, 1.0, 14.0], VARIABLES_COUNT=[0.0, 3.0, 53.0], RETURN_COUNT=[0.0, 1.0, 3.0, 326.0], WEIGHT_METHOD_CLASS=[0.0, 6.0, 527.0], RESPONSE_FOR_A_CLASS=[0.0, 12.0, 1895.0], COUPLING_BETWEEN_OBJECTS=[0.0, 4.0, 37.0, 172.0], VARIABLES_USAGE=[{}, {i=14.0}], FIELD_USAGE=[{}, {value=3.0}], STATIC_METHOD_COUNT=[0.0, 1.0, 9.0], PUBLIC_METHOD_COUNT=[0.0, 1.0, 8.0, 37.0], PRIVATE_METHOD_COUNT=[0.0, 1.0, 5.0, 47.0], PROTECTED_METHOD_COUNT=[0.0, 1.0, 3.0, 39.0], SYNCHRONIZED_METHOD_COUNT=[0.0, 1.0, 20.0], FINAL_METHOD_COUNT=[0.0, 1.0, 7.0], DEFAULT_METHOD_COUNT=[0.0, 1.0, 3.0], ABSTRACT_METHOD_COUNT=[0.0, 1.0, 6.0], PUBLIC_FIELD_COUNT=[0.0, 1.0, 8.0, 37.0], PRIVATE_FIELD_COUNT=[0.0, 1.0, 5.0, 47.0], PROTECTED_FIELD_COUNT=[0.0, 1.0, 3.0, 39.0], SYNCHRONIZED_FIELD_COUNT=[0.0, 1.0, 20.0], FINAL_FIELD_COUNT=[0.0, 1.0, 7.0], DEFAULT_FIELD_COUNT=[0.0, 1.0, 3.0], ABSTRACT_FIELD_COUNT=[0.0, 1.0, 6.0], STATIC_FIELD_COUNT=[0.0, 1.0, 9.0], NUMBER_OF_STATIC_INVOCATIONS=[0.0, 3.0, 27.0], LACK_OF_COHESION_OF_METHODS=[13.0, 2.0, 0.0], DEPTH_INHERITANCE_TREE=[0.0, 1.0, 29.0], TEST_SMELLS=[[], [sleepy]], PYLINT=[[]], DUPLICATE_CODE_BLOCKS=[[], [{filenames=[], lineNumbers=[], lineCount=3.0, tokenCount=14.0, occurences=2.0}]], SUPPRESSIONS=[[], [{name=TestClass, justification=for testing}]], FILE_EFFECTIVE_LOC=[2.0, 38.0, 2162.0], RELATIVE_NUMBER_OF_ASSERTIONS=[1.0, 0.0, 0.0021, 0.0153], RELATIVE_NUMBER_OF_TESTCASES=[0.0, 0.0019, 0.0139], AVERAGE_ASSERTIONS_PER_TESTCASE=[0.893, 1.027, 2.103], RELATIVE_CYCLOMATIC_COMPLEXITY=[0.00174, 0.0248, 0.1659], RELATIVE_COUPLING_BETWEEN_OBJECTS=[0.0437, 0.115, 0.721], RELATIVE_DEPTH_INHERITANCE_TREE=[2.74E-4, 0.00164, 0.0512], RELATIVE_WEIGHT_METHOD_CLASS=[0.5], TEST_PRODUCTION_RATIO=[0.0, 0.8, 1.0, 1.2], PROFANITY=[[], [Line 6 contains profanity]], TESTS=[Assertion failure]}}]
+2019-10-02 13:27:32.521 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.MetricsController:
+	{GET /api/v1/worker/metrics, produces [application/json]}: getMetricsAction()
+	{GET /api/v1/worker/metrics.js, produces [text/javascript]}: getMetricsJsAction()
+	{GET /api/v1/worker/metrics/test-fixtures, produces [application/json]}: getMetricTestFixturesAction()
+2019-10-02 13:27:32.522 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:32.533 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.537 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.538 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.MetricsController.getMetricsAction()
+2019-10-02 13:27:32.539 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:32.539 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:32.540 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{metrics=[{java=[cyclomatic complexity], *=[method length]}], errors=[]}]
+2019-10-02 13:27:32.555 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment1" }, "u" : { "_id" : "assignment1", "name" : "assignment1", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 77 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.556 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 77 completed successfully in 1.56 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.558 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment2" }, "u" : { "_id" : "assignment2", "name" : "assignment2", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 78 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.559 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 78 completed successfully in 0.95 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.560 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment3" }, "u" : { "_id" : "assignment3", "name" : "assignment3", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 79 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.561 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 79 completed successfully in 0.90 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.562 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course1" }, "u" : { "_id" : "course1", "name" : "NO_TA_NO_INSTRUCTORS", "courseCode" : "AB1234", "instructorSet" : [], "taSet" : [], "assignmentIds" : ["assignment1"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 80 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.563 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 80 completed successfully in 1.00 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.570 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course2" }, "u" : { "_id" : "course2", "name" : "TA_AND_INSTRUCTOR", "courseCode" : "AB1234", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment2"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 81 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.573 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 81 completed successfully in 4.22 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.577 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course3" }, "u" : { "_id" : "course3", "name" : "TA_AND_INSTRUCTOR2", "courseCode" : "AB1234_2", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment3"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 82 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.577 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 82 completed successfully in 1.29 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.579 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "assignmentId" : "assignment1", "name" : "submission1", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 83 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.580 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 83 completed successfully in 1.13 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.582 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "assignmentId" : "assignment2", "name" : "submission2", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 84 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.583 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 84 completed successfully in 1.05 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.585 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "identifier" : "id1", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 85 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.586 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 85 completed successfully in 0.92 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.588 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "identifier" : "id2", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 86 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.588 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 86 completed successfully in 1.05 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.591 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container1" }, "u" : { "_id" : "container1", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission1", "assignmentId" : "assignment1", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 87 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.591 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 87 completed successfully in 1.10 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.593 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container2" }, "u" : { "_id" : "container2", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission2", "assignmentId" : "assignment2", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 88 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.594 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 88 completed successfully in 1.18 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.604 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:32.605 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment2, json, excel]
+2019-10-02 13:27:32.607 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment2" }, "limit" : 1, "singleBatch" : true }' with request id 89 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.608 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 89 completed successfully in 0.80 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.609 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:32.611 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 90 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.612 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 90 completed successfully in 0.83 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.613 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:32.613 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:32.626 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:32.630 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "submission", "filter" : { "assignmentId" : "assignment2" } }' with request id 91 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.631 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Execution of command with request id 91 completed successfully in 1.25 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.634 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "identity", "filter" : { "_id" : "submission2" }, "limit" : 1, "singleBatch" : true }' with request id 92 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.635 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Execution of command with request id 92 completed successfully in 1.31 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.638 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "submission2", "assignmentId" : "assignment2" }, "limit" : 2 }' with request id 93 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.639 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Execution of command with request id 93 completed successfully in 0.90 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.642 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "identity", "filter" : { "_id" : { "$oid" : "5d9489a2f4446f381f0849fb" } }, "limit" : 1, "singleBatch" : true }' with request id 94 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.642 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Execution of command with request id 94 completed successfully in 0.87 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.643 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsInAssignmentForIdentityAction(java.lang.String,java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:32.644 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment2, id2, json, excel]
+2019-10-02 13:27:32.644 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "5d9489a2f4446f381f0849fb", "assignmentId" : "assignment2" }, "limit" : 2 }' with request id 95 to database auta-test on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.645 DEBUG 14367 --- [task-1] org.mongodb.driver.protocol.command      : Execution of command with request id 95 completed successfully in 0.74 ms on connection [connectionId{localValue:2, serverValue:2}] to server localhost:42071
+2019-10-02 13:27:32.645  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:32.645+0200 I NETWORK  [thread1] connection accepted from 127.0.0.1:44688 #3 (3 connections now open)
+2019-10-02 13:27:32.646 DEBUG 14367 --- [task-1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/assignment2/export
+2019-10-02 13:27:32.646  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:32.646+0200 I NETWORK  [conn3] received client metadata from 127.0.0.1:44688 conn3: { driver: { name: "mongo-java-driver", version: "3.8.2" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "4.16.0-2-amd64" }, platform: "Java/Debian/11.0.5-ea+6-post-Debian-2" }
+2019-10-02 13:27:32.648  INFO 14367 --- [Test worker] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:3, serverValue:3}] to localhost:42071
+2019-10-02 13:27:32.648 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment2" }, "limit" : 1, "singleBatch" : true }' with request id 99 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.649 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 99 completed successfully in 0.83 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.650 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:32.652 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 100 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.653 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 100 completed successfully in 0.77 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.654 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:32.654 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:32.655 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:32.659 DEBUG 14367 --- [task-2] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "identity", "filter" : { "identifier" : "id2" } }' with request id 101 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.659 DEBUG 14367 --- [task-2] org.mongodb.driver.protocol.command      : Execution of command with request id 101 completed successfully in 0.91 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.662 DEBUG 14367 --- [task-2] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "submission", "filter" : { "assignmentId" : "assignment2", "_id" : "submission2" }, "limit" : 2 }' with request id 102 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.664 DEBUG 14367 --- [task-2] org.mongodb.driver.protocol.command      : Execution of command with request id 102 completed successfully in 1.68 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.667 DEBUG 14367 --- [task-2] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "submission2", "assignmentId" : "assignment2" }, "limit" : 2 }' with request id 103 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.668 DEBUG 14367 --- [task-2] org.mongodb.driver.protocol.command      : Execution of command with request id 103 completed successfully in 1.80 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.672 DEBUG 14367 --- [task-2] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/assignment2/export/id2
+2019-10-02 13:27:32.675 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:32.676 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, json, excel]
+2019-10-02 13:27:32.677 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 104 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.678 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 104 completed successfully in 0.89 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.679 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:32.681 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 105 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.681 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 105 completed successfully in 0.63 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.683 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:32.683 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:32.683 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.684 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1, ServletWebRequest: uri=/api/v1/assignment/assignment1/export;client=127.0.0.1]
+2019-10-02 13:27:32.684 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/export;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForAssignmentAccess(CourseSecuredService.java:222)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForAssignmentAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.findAssignment(SubmissionExportController.java:267)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.runExport(SubmissionExportController.java:237)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(SubmissionExportController.java:169)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportControllerIntegrationTest.instructorCannotAccessUnauthorizedSubmissionExport(SubmissionExportControllerIntegrationTest.java:19)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:198)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:136)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:104)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:104)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:40)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.685 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.685 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@1d1611d3]}]
+2019-10-02 13:27:32.686 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1]
+2019-10-02 13:27:32.694 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsInAssignmentForIdentityAction(java.lang.String,java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:32.695 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, id1, json, excel]
+2019-10-02 13:27:32.696 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 106 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.696 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 106 completed successfully in 0.60 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.697 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:32.699 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 107 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.699 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 107 completed successfully in 0.64 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.700 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:32.700 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:32.700 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:32.700 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1, ServletWebRequest: uri=/api/v1/assignment/assignment1/export/id1;client=127.0.0.1]
+2019-10-02 13:27:32.701 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/export/id1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForAssignmentAccess(CourseSecuredService.java:222)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForAssignmentAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.findAssignment(SubmissionExportController.java:267)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.runExport(SubmissionExportController.java:237)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsInAssignmentForIdentityAction(SubmissionExportController.java:195)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportControllerIntegrationTest.instructorCannotAccessUnauthorizedSubmissionExport(SubmissionExportControllerIntegrationTest.java:19)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:198)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:136)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:104)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
+	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
+	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
+	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
+	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
+	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
+	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
+	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:104)
+	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:40)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:32.702 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:32.702 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@33f5e43b]}]
+2019-10-02 13:27:32.702 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1]
+2019-10-02 13:27:32.735 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.736 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.743 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.745 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.747 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Received CPM application event with sid: randomID
+2019-10-02 13:27:32.754 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.755 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.764 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.767 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.767 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Received CPM message, assignment id INVALID_AID
+2019-10-02 13:27:32.774 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.775 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.785 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.788 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.789 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Sending report to CPM, status: disapproved, feedback: feedback
+2019-10-02 13:27:32.840 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.841 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.860 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.865 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.866 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Received CPM message, assignment id UNIQUE_AID
+2019-10-02 13:27:32.867 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Created new submission for CPM submission, submission id UNIQUE_SID
+2019-10-02 13:27:32.867 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : CPM submission UNIQUE_SID belongs to 
+2019-10-02 13:27:32.876 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.877 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.883 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.886 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.886 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Received CPM application event with sid: UNIQUE_SID
+2019-10-02 13:27:32.887  WARN 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Sending result status disapproved to CPM, got verdict PENDING
+2019-10-02 13:27:32.887 TRACE 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Mapped verdict PENDING to disapproved
+2019-10-02 13:27:32.887 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Sending report to CPM, status: disapproved, feedback: report
+2019-10-02 13:27:32.897 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.898 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.904 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.906 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.907 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Received CPM application event with sid: UNIQUE_SID
+2019-10-02 13:27:32.907 TRACE 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Mapped verdict PASS to approved
+2019-10-02 13:27:32.908 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Sending report to CPM, status: approved, feedback: report
+2019-10-02 13:27:32.918 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.918 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.927 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.929 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.930 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Received CPM application event with sid: UNIQUE_SID
+2019-10-02 13:27:32.930  WARN 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Sending result status disapproved to CPM, got verdict PENDING
+2019-10-02 13:27:32.930 TRACE 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Mapped verdict PENDING to disapproved
+2019-10-02 13:27:32.930 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Sending report to CPM, status: disapproved, feedback: report
+2019-10-02 13:27:32.941 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.CPMController:
+	{POST /api/v1/cpm/{aid}}: uploadAction(MultipartFile,String,CPMDataModel,BindingResult)
+2019-10-02 13:27:32.941 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:32.949 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.952 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:32.955 DEBUG 14367 --- [Test worker] n.t.e.a.core.controller.CPMController    : Received CPM application event with sid: UNIQUE_SID
+2019-10-02 13:27:32.971 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment1" }, "u" : { "_id" : "assignment1", "name" : "assignment1", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 108 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.972 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 108 completed successfully in 0.84 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.973 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment2" }, "u" : { "_id" : "assignment2", "name" : "assignment2", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 109 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.974 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 109 completed successfully in 0.84 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.975 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment3" }, "u" : { "_id" : "assignment3", "name" : "assignment3", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 110 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.976 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 110 completed successfully in 0.86 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.977 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course1" }, "u" : { "_id" : "course1", "name" : "NO_TA_NO_INSTRUCTORS", "courseCode" : "AB1234", "instructorSet" : [], "taSet" : [], "assignmentIds" : ["assignment1"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 111 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.978 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 111 completed successfully in 0.80 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.980 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course2" }, "u" : { "_id" : "course2", "name" : "TA_AND_INSTRUCTOR", "courseCode" : "AB1234", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment2"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 112 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.980 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 112 completed successfully in 0.78 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.981 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course3" }, "u" : { "_id" : "course3", "name" : "TA_AND_INSTRUCTOR2", "courseCode" : "AB1234_2", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment3"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 113 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.982 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 113 completed successfully in 0.91 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.984 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "assignmentId" : "assignment1", "name" : "submission1", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 114 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.984 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 114 completed successfully in 0.77 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.986 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "assignmentId" : "assignment2", "name" : "submission2", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 115 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.987 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 115 completed successfully in 0.84 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.988 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "identifier" : "id1", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 116 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.989 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 116 completed successfully in 0.79 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.990 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "identifier" : "id2", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 117 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.990 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 117 completed successfully in 0.65 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.992 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container1" }, "u" : { "_id" : "container1", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission1", "assignmentId" : "assignment1", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 118 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.992 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 118 completed successfully in 0.76 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.994 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container2" }, "u" : { "_id" : "container2", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission2", "assignmentId" : "assignment2", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 119 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:32.994 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 119 completed successfully in 0.74 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.002 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:33.005 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@3c732d4]
+2019-10-02 13:27:33.006 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@7e57761d, assignment1, submission1, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@3c732d4]
+2019-10-02 13:27:33.007 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "submission1", "assignmentId" : "assignment1" }, "limit" : 2 }' with request id 120 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.008 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 120 completed successfully in 0.87 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.010 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:33.012 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 121 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.013 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 121 completed successfully in 0.99 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.014 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:33.014 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:33.015 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.015 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access container: container1, ServletWebRequest: uri=/api/v1/assignment/assignment1/submission/submission1/benchmark/rank;client=127.0.0.1]
+2019-10-02 13:27:33.015 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/submission/submission1/benchmark/rank;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access container: container1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForEntityContainerAccess(CourseSecuredService.java:257)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForEntityContainerAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(BenchmarkingController.java:108)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.postForbidden(AbstractWebSecurityIntegrationTest.java:74)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerIntegrationTest.instructorCannotAccessUnautorizedSubmission(BenchmarkingControllerIntegrationTest.java:20)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.016 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.016 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@16aa92e9]}]
+2019-10-02 13:27:33.017 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access container: container1]
+2019-10-02 13:27:33.018 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getScore(java.lang.String,java.lang.String) throws java.io.IOException,freemarker.template.TemplateException
+2019-10-02 13:27:33.019 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, submission1]
+2019-10-02 13:27:33.020 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "submission1", "assignmentId" : "assignment1" }, "limit" : 2 }' with request id 122 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.021 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 122 completed successfully in 0.97 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.022 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:33.024 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 123 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.025 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 123 completed successfully in 0.73 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.025 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:33.025 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:33.026 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.026 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access container: container1, ServletWebRequest: uri=/api/v1/assignment/assignment1/submission/submission1/benchmark/score;client=127.0.0.1]
+2019-10-02 13:27:33.026 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/submission/submission1/benchmark/score;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access container: container1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForEntityContainerAccess(CourseSecuredService.java:257)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForEntityContainerAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getScore(BenchmarkingController.java:142)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerIntegrationTest.instructorCannotAccessUnautorizedSubmission(BenchmarkingControllerIntegrationTest.java:23)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.027 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.027 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@2cc1537a]}]
+2019-10-02 13:27:33.028 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access container: container1]
+2019-10-02 13:27:33.039 TRACE 14367 --- [Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped to HandlerExecutionChain with [ResourceHttpRequestHandler ["classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "/"]] and 3 interceptors
+2019-10-02 13:27:33.044 DEBUG 14367 --- [Test worker] o.s.w.s.r.ResourceHttpRequestHandler     : Resource not found
+2019-10-02 13:27:33.056 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getScore(java.lang.String,java.lang.String) throws java.io.IOException,freemarker.template.TemplateException
+2019-10-02 13:27:33.057 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment2, submission2]
+2019-10-02 13:27:33.058 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "submission2", "assignmentId" : "assignment2" }, "limit" : 2 }' with request id 124 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.059 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 124 completed successfully in 0.80 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.060 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:33.061 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 125 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.062 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 125 completed successfully in 0.72 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.063 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:33.063 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:33.066 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "benchmarking_data_container", "filter" : { "aid" : "assignment2" }, "limit" : 2 }' with request id 126 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.068 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 126 completed successfully in 2.28 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.072 DEBUG 14367 --- [Test worker] n.t.e.a.c.benchmarking.BadgeGenerator    : Generating badge for assignment id assignment2
+2019-10-02 13:27:33.213 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.213 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{badge=<svg xmlns="http://www.w3.org/2000/svg" width="134" height="20">
+    <linearGradient xmlns="http://www.w3.org/2000/svg" id="b" x2="0" y2="100%">
+        <stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
+        <stop offset="1" stop-opacity=".1"/>
+    </linearGradient>
+    <clipPath xmlns="http://www.w3.org/2000/svg" id="a">
+        <rect width="134" height="20" rx="3" fill="#fff"/>
+    </clipPath>
+    <g xmlns="http://www.w3.org/2000/svg" clip-path="url(#a)">
+        <path fill="#555" d="M0 0h75v20H0z"/>
+                    <path fill="#4c1" d="M75 0h59v20H75z"/>
+        <path fill="url(#b)" d="M0 0h134v20H0z"/>
+    </g>
+    <g xmlns="http://www.w3.org/2000/svg" fill="#fff" text-anchor="middle"
+       font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
+        <text x="385" y="150" fill="#010101" fill-opacity=".3"
+              transform="scale(.1)" textLength="650">
+            AuTA score
+        </text>
+        <text x="385" y="140" transform="scale(.1)" textLength="650">
+            AuTA score
+        </text>
+        <text x="1035" y="150" fill="#010101" fill-opacity=".3"
+              transform="scale(.1)" textLength="490">
+5.0/5.0
+        </text>
+        <text x="1035" y="140" transform="scale(.1)" textLength="490">
+5.0/5.0
+        </text>
+    </g>
+</svg>
+
+
+, errors=[]}]
+2019-10-02 13:27:33.223 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment1" }, "u" : { "_id" : "assignment1", "name" : "assignment1", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 127 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.223 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 127 completed successfully in 0.78 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.225 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment2" }, "u" : { "_id" : "assignment2", "name" : "assignment2", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 128 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.225 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 128 completed successfully in 0.72 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.226 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment3" }, "u" : { "_id" : "assignment3", "name" : "assignment3", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 129 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.227 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 129 completed successfully in 0.74 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.228 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course1" }, "u" : { "_id" : "course1", "name" : "NO_TA_NO_INSTRUCTORS", "courseCode" : "AB1234", "instructorSet" : [], "taSet" : [], "assignmentIds" : ["assignment1"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 130 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.229 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 130 completed successfully in 0.61 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.230 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course2" }, "u" : { "_id" : "course2", "name" : "TA_AND_INSTRUCTOR", "courseCode" : "AB1234", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment2"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 131 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.230 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 131 completed successfully in 0.65 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.231 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course3" }, "u" : { "_id" : "course3", "name" : "TA_AND_INSTRUCTOR2", "courseCode" : "AB1234_2", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment3"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 132 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.232 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 132 completed successfully in 0.66 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.233 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "assignmentId" : "assignment1", "name" : "submission1", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 133 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.234 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 133 completed successfully in 0.65 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.235 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "assignmentId" : "assignment2", "name" : "submission2", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 134 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.235 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 134 completed successfully in 0.64 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.237 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "identifier" : "id1", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 135 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.237 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 135 completed successfully in 0.63 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.238 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "identifier" : "id2", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 136 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.239 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 136 completed successfully in 0.60 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.240 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container1" }, "u" : { "_id" : "container1", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission1", "assignmentId" : "assignment1", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 137 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.241 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 137 completed successfully in 0.83 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.242 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container2" }, "u" : { "_id" : "container2", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission2", "assignmentId" : "assignment2", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 138 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.243 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 138 completed successfully in 0.80 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.250 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAllAction(javax.servlet.http.HttpServletRequest)
+2019-10-02 13:27:33.250 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@6a4d1350]
+2019-10-02 13:27:33.252 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "deleted" : false } }' with request id 139 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.253 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 139 completed successfully in 0.79 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.255 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:33.256 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 140 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.257 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 140 completed successfully in 0.74 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.258 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:33.258 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:33.258 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:33.259 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 141 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.260 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 141 completed successfully in 0.65 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.260 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:33.260 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:33.261 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment3
+2019-10-02 13:27:33.262 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment3"] } } }' with request id 142 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.263 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 142 completed successfully in 0.75 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.264 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course3
+2019-10-02 13:27:33.264 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course3
+2019-10-02 13:27:33.264 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.264 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{assignments=[nl.tudelft.ewi.auta.core.model.Assignment@41773ec, nl.tudelft.ewi.auta.core.model.Assignment@8d4597cc], errors=[]}]
+2019-10-02 13:27:33.274 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAction(java.lang.String)
+2019-10-02 13:27:33.274 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1]
+2019-10-02 13:27:33.275 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 143 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.276 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 143 completed successfully in 0.59 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.276 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user admin, cid assignment1
+2019-10-02 13:27:33.276 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.277 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{languages=[java], name=assignment1, options={static=[], language=java}, id=assignment1, errors=[]}]
+2019-10-02 13:27:33.284 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAction(java.lang.String)
+2019-10-02 13:27:33.285 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1]
+2019-10-02 13:27:33.286 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 144 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.286 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 144 completed successfully in 0.62 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.287 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:33.288 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 145 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.289 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 145 completed successfully in 0.65 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.290 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:33.290 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:33.291 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.291 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1, ServletWebRequest: uri=/api/v1/assignment/assignment1;client=127.0.0.1]
+2019-10-02 13:27:33.291 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForAssignmentAccess(CourseSecuredService.java:222)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForAssignmentAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.getAction(AssignmentController.java:147)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerIntegrationTest.instructorCannotAccessUnautorizedCourse(AssignmentControllerIntegrationTest.java:45)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.292 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.292 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@3ead15f]}]
+2019-10-02 13:27:33.292 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1]
+2019-10-02 13:27:33.300 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:33.301 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{language=java, name=test}]
+2019-10-02 13:27:33.301 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, {language=java, name=test}]
+2019-10-02 13:27:33.302 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 146 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.303 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 146 completed successfully in 0.61 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.303 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:33.305 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 147 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.306 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 147 completed successfully in 0.66 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.306 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:33.306 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:33.307 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.307 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1, ServletWebRequest: uri=/api/v1/assignment/assignment1;client=127.0.0.1]
+2019-10-02 13:27:33.307 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForAssignmentAccess(CourseSecuredService.java:222)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForAssignmentAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(AssignmentController.java:175)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.putForbidden(AbstractWebSecurityIntegrationTest.java:79)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerIntegrationTest.instructorCannotUpdateUnautorizedCourse(AssignmentControllerIntegrationTest.java:57)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.308 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.308 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@1deed77c]}]
+2019-10-02 13:27:33.308 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1]
+2019-10-02 13:27:33.315 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.deleteAction(java.lang.String)
+2019-10-02 13:27:33.316 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1]
+2019-10-02 13:27:33.317 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 148 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.318 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 148 completed successfully in 0.73 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.318 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:33.320 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 149 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.323 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 149 completed successfully in 3.13 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.324 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:33.324 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:33.325 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.325 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1, ServletWebRequest: uri=/api/v1/assignment/assignment1;client=127.0.0.1]
+2019-10-02 13:27:33.325 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForAssignmentAccess(CourseSecuredService.java:222)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForAssignmentAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.deleteAction(AssignmentController.java:198)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.deleteForbidden(AbstractWebSecurityIntegrationTest.java:70)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerIntegrationTest.instructorCannotDeleteUnautorizedCourse(AssignmentControllerIntegrationTest.java:51)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.326 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.326 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@21cf9876]}]
+2019-10-02 13:27:33.326 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access assignment: assignment1]
+2019-10-02 13:27:33.333 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAllAction(javax.servlet.http.HttpServletRequest)
+2019-10-02 13:27:33.334 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@5e100548]
+2019-10-02 13:27:33.335 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "deleted" : false } }' with request id 150 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.336 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 150 completed successfully in 0.73 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:33.337 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user admin, cid assignment1
+2019-10-02 13:27:33.338 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user admin, cid assignment2
+2019-10-02 13:27:33.338 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user admin, cid assignment3
+2019-10-02 13:27:33.339 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.339 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{assignments=[nl.tudelft.ewi.auta.core.model.Assignment@7ae9500c, nl.tudelft.ewi.auta.core.model.Assignment@41773ec, nl.tudelft.ewi.auta.core.model.Assignment@8d4597cc], errors=[]}]
+2019-10-02 13:27:33.354 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SettingsController:
+	{PUT /api/v1/settings, produces [application/json]}: update(Map)
+	{GET /api/v1/settings, produces [application/json]}: retrieve()
+2019-10-02 13:27:33.355 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 2 mappings in <unknown>
+2019-10-02 13:27:33.371 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.375 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.379 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.SettingsController.retrieve()
+2019-10-02 13:27:33.380 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:33.382 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.384 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{settings={settings path=/srv/auta/settings.json, security check interval=30, bcrypt work factor=13, token management interval=5, mongodb port=27017, allowed API origins=[http://localhost:8080, http://localhost:8081, http://127.0.0.1:8080, http://127.0.0.1:8081], SAML_SIGNING_KEY_NAME=samlsigning, worker ping interval=20, worker metrics=[], SAML_SERVICE_PROVIDER_CONTACT_INFORMATION_LOCATION=sso/contact.xml, build date=1570015589, plugins directory=/srv/auta/plugins, security check interval unit=MINUTES, SAML_AUTHENTICATION_REQUEST_LIFETIME=30, mongodb database=auta, token length=512, SAML_SERVICE_PROVIDER_ORGANIZATION_INFORMATION_LOCATION=sso/org.xml, SAML_KEYSTORE_PASSWORD=hastalavista, SAML_IDENTITY_PROVIDER_METADATA_LOCATION=sso/idps.xml, script runtime plugin class=nl.tudelft.ewi.auta.j2v8.J2V8ScriptExecutionContextFactory, AUTHENTICATION_DATABASE_LOCATION=auth.db, _worker account name=_xXx_JobSlay3r69_xXx_, encryption key length=256, BASE_PATH=/srv/auta, SAML_SERVICE_PROVIDER_ENTITY_ID=urn:uuid:d419ecf3-e9d2-4d37-9db2-90e1b0568019:please:configure, SAML_KEYSTORE_LOCATION=sso/sks.p12, version=2.1.0, worker ping timeout=30, token management interval unit=MINUTES, nice=20, worker port=12728, mongodb host=localhost, file store path=/srv/auta/uploads, SAML_ENABLED=false, cpm submission url=https://cpm.ewi.tudelft.nl/projects/scriptResult.php}, errors=[]}]
+2019-10-02 13:27:33.393 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.394 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.403 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.407 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.408 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.deleteAction(java.lang.String)
+2019-10-02 13:27:33.408 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [not+found]
+2019-10-02 13:27:33.409 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.409 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found, ServletWebRequest: uri=/api/v1/assignment/not+found;client=127.0.0.1]
+2019-10-02 13:27:33.409 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/not+found;client=127.0.0.1 generated a(n) NO_SUCH_ASSIGNMENT error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.deleteAction(AssignmentController.java:197)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:666)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testDeleteNonexistent(AssignmentControllerTest.java:261)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.410 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.411 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@102529b0]}]
+2019-10-02 13:27:33.412 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found]
+2019-10-02 13:27:33.416 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.417 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.426 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.429 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.430 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAction(java.lang.String)
+2019-10-02 13:27:33.431 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing]
+2019-10-02 13:27:33.431 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.432 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{languages=[unspeakable], name=name, options={static=[], language=unspeakable}, id=existing, errors=[]}]
+2019-10-02 13:27:33.438 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.438 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.449 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.454 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.455 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAction(java.lang.String)
+2019-10-02 13:27:33.456 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [not+found]
+2019-10-02 13:27:33.456 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.457 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found, ServletWebRequest: uri=/api/v1/assignment/not+found;client=127.0.0.1]
+2019-10-02 13:27:33.457 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/not+found;client=127.0.0.1 generated a(n) NO_SUCH_ASSIGNMENT error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.getAction(AssignmentController.java:146)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testGetNonexistent(AssignmentControllerTest.java:235)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.457 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.458 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@54e23095]}]
+2019-10-02 13:27:33.459 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found]
+2019-10-02 13:27:33.462 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.462 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.469 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.471 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.472 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(java.util.Map<java.lang.String, java.lang.Object>) throws java.net.URISyntaxException
+2019-10-02 13:27:33.474 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=name, language=java}]
+2019-10-02 13:27:33.474 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{name=name, language=java}]
+2019-10-02 13:27:33.475 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.475 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.AssignmentAlreadyExistsException: There already is an assignment named name, ServletWebRequest: uri=/api/v1/assignment;client=127.0.0.1]
+2019-10-02 13:27:33.476 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment;client=127.0.0.1 generated a(n) ASSIGNMENT_ALREADY_EXISTS error
+
+nl.tudelft.ewi.auta.core.response.exception.AssignmentAlreadyExistsException: There already is an assignment named name
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(AssignmentController.java:120)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testCreateDuplicateName(AssignmentControllerTest.java:162)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+Caused by: org.springframework.dao.DuplicateKeyException: null
+
+2019-10-02 13:27:33.477 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.477 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@25fa2a2]}]
+2019-10-02 13:27:33.478 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.AssignmentAlreadyExistsException: There already is an assignment named name]
+2019-10-02 13:27:33.481 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.482 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.488 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.490 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.491 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:33.493 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{not name=test}]
+2019-10-02 13:27:33.493 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, {not name=test}]
+2019-10-02 13:27:33.494 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.494 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The name field is required, ServletWebRequest: uri=/api/v1/assignment/existing;client=127.0.0.1]
+2019-10-02 13:27:33.494 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/existing;client=127.0.0.1 generated a(n) MISSING_FIELD error
+
+nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The name field is required
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getParam(ControllerBase.java:32)
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getString(ControllerBase.java:60)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.populateFromRequest(AssignmentController.java:216)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(AssignmentController.java:177)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testUpdateWithoutName(AssignmentControllerTest.java:189)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.495 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.495 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@c71f110]}]
+2019-10-02 13:27:33.496 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The name field is required]
+2019-10-02 13:27:33.499 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.500 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.506 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.509 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.510 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAllAction(javax.servlet.http.HttpServletRequest)
+2019-10-02 13:27:33.511 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@37de6769]
+2019-10-02 13:27:33.511 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.512 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{assignments=[], errors=[]}]
+2019-10-02 13:27:33.516 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.516 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.525 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.528 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.529 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(java.util.Map<java.lang.String, java.lang.Object>) throws java.net.URISyntaxException
+2019-10-02 13:27:33.531 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=test!, language=}]
+2019-10-02 13:27:33.531 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{name=test!, language=}]
+2019-10-02 13:27:33.531 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.532 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidLanguageException: "" is not a valid language, ServletWebRequest: uri=/api/v1/assignment;client=127.0.0.1]
+2019-10-02 13:27:33.532 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment;client=127.0.0.1 generated a(n) INVALID_LANGUAGE error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidLanguageException: "" is not a valid language
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.populateFromRequest(AssignmentController.java:230)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(AssignmentController.java:114)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testCreateWithEmptyLang(AssignmentControllerTest.java:146)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.533 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.533 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@3c5321a]}]
+2019-10-02 13:27:33.534 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidLanguageException: "" is not a valid language]
+2019-10-02 13:27:33.538 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.539 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.549 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.553 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.554 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(java.util.Map<java.lang.String, java.lang.Object>) throws java.net.URISyntaxException
+2019-10-02 13:27:33.556 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=, language=java}]
+2019-10-02 13:27:33.557 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{name=, language=java}]
+2019-10-02 13:27:33.557 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.558 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidAssignmentNameException: "" is not a valid assignment name, ServletWebRequest: uri=/api/v1/assignment;client=127.0.0.1]
+2019-10-02 13:27:33.558 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment;client=127.0.0.1 generated a(n) INVALID_ASSIGNMENT_NAME error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidAssignmentNameException: "" is not a valid assignment name
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.populateFromRequest(AssignmentController.java:224)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(AssignmentController.java:114)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testCreateWithEmptyName(AssignmentControllerTest.java:133)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.559 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.559 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@631e826d]}]
+2019-10-02 13:27:33.562 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidAssignmentNameException: "" is not a valid assignment name]
+2019-10-02 13:27:33.567 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.568 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.584 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.587 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.587 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(java.util.Map<java.lang.String, java.lang.Object>) throws java.net.URISyntaxException
+2019-10-02 13:27:33.589 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{not name=test}]
+2019-10-02 13:27:33.589 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{not name=test}]
+2019-10-02 13:27:33.590 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.590 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The name field is required, ServletWebRequest: uri=/api/v1/assignment;client=127.0.0.1]
+2019-10-02 13:27:33.590 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment;client=127.0.0.1 generated a(n) MISSING_FIELD error
+
+nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The name field is required
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getParam(ControllerBase.java:32)
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getString(ControllerBase.java:60)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.populateFromRequest(AssignmentController.java:216)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(AssignmentController.java:114)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testCreateWithoutName(AssignmentControllerTest.java:120)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.591 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.591 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@38bcfcc0]}]
+2019-10-02 13:27:33.592 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The name field is required]
+2019-10-02 13:27:33.597 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.598 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.614 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.617 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.617 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.createAction(java.util.Map<java.lang.String, java.lang.Object>) throws java.net.URISyntaxException
+2019-10-02 13:27:33.619 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=test, language=java}]
+2019-10-02 13:27:33.619 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{name=test, language=java}]
+2019-10-02 13:27:33.619 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.AssignmentController         : Added assignment UNIQUE_ID with name test
+2019-10-02 13:27:33.620 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.620 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{id=UNIQUE_ID, errors=[]}]
+2019-10-02 13:27:33.625 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.625 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.632 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.635 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.636 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:33.638 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=name, language=java}]
+2019-10-02 13:27:33.638 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, {name=name, language=java}]
+2019-10-02 13:27:33.639 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.639 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.AssignmentAlreadyExistsException: There already is an assignment named name, ServletWebRequest: uri=/api/v1/assignment/existing;client=127.0.0.1]
+2019-10-02 13:27:33.640 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/existing;client=127.0.0.1 generated a(n) ASSIGNMENT_ALREADY_EXISTS error
+
+nl.tudelft.ewi.auta.core.response.exception.AssignmentAlreadyExistsException: There already is an assignment named name
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(AssignmentController.java:183)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testUpdateDuplicateName(AssignmentControllerTest.java:205)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+Caused by: org.springframework.dao.DuplicateKeyException: null
+
+2019-10-02 13:27:33.641 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.641 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@3ddd279d]}]
+2019-10-02 13:27:33.642 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.AssignmentAlreadyExistsException: There already is an assignment named name]
+2019-10-02 13:27:33.647 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.647 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.657 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.662 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.666 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.deleteAction(java.lang.String)
+2019-10-02 13:27:33.668 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing]
+2019-10-02 13:27:33.669 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.AssignmentController         : Marked assignment UNIQUE_ID (name (deleted on 2019-10-02T13:27:33.669263+02:00[Europe/Amsterdam])) as deleted
+2019-10-02 13:27:33.669 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.670 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{id=UNIQUE_ID, errors=[]}]
+2019-10-02 13:27:33.673 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.674 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.681 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.683 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.685 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:33.686 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=name!, language=java}]
+2019-10-02 13:27:33.686 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [not+found, {name=name!, language=java}]
+2019-10-02 13:27:33.687 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.687 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found, ServletWebRequest: uri=/api/v1/assignment/not+found;client=127.0.0.1]
+2019-10-02 13:27:33.687 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/not+found;client=127.0.0.1 generated a(n) NO_SUCH_ASSIGNMENT error
+
+nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found
+	at nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(AssignmentController.java:174)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AssignmentControllerTest.testUpdateNonexistent(AssignmentControllerTest.java:221)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.688 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.688 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@34f5244d]}]
+2019-10-02 13:27:33.689 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoSuchAssignmentException: not found]
+2019-10-02 13:27:33.693 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.693 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.700 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.703 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.704 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.getAllAction(javax.servlet.http.HttpServletRequest)
+2019-10-02 13:27:33.704 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@44ba18a2]
+2019-10-02 13:27:33.705 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.705 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{assignments=[], errors=[]}]
+2019-10-02 13:27:33.709 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AssignmentController:
+	{GET /api/v1/assignment/{id}, produces [application/json]}: getAction(String)
+	{GET /api/v1/assignment, produces [application/json]}: getAllAction(HttpServletRequest)
+	{POST /api/v1/assignment, produces [application/json]}: createAction(Map)
+	{PUT /api/v1/assignment/{id}, produces [application/json]}: updateAction(String,Map)
+	{DELETE /api/v1/assignment/{id}, produces [application/json]}: deleteAction(String)
+2019-10-02 13:27:33.709 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.716 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.718 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.719 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AssignmentController.updateAction(java.lang.String,java.util.Map<java.lang.String, java.lang.Object>)
+2019-10-02 13:27:33.721 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{name=test, language=java}]
+2019-10-02 13:27:33.721 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [existing, {name=test, language=java}]
+2019-10-02 13:27:33.722 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.AssignmentController         : Updated assignment UNIQUE_ID (test)
+2019-10-02 13:27:33.722 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.723 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{id=UNIQUE_ID, errors=[]}]
+2019-10-02 13:27:33.743 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.744 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.754 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.758 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.760 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.updateUser(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.761 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{enabled=false, username=invalid, authority=ROLE_ADMIN}]
+2019-10-02 13:27:33.761 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{enabled=false, username=invalid, authority=ROLE_ADMIN}]
+2019-10-02 13:27:33.762 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.AuthenticationController     : Updating user invalid with authority ROLE_ADMIN and enabled: false
+2019-10-02 13:27:33.763 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.763 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.MissingUserException: No user with username invalid, ServletWebRequest: uri=/api/v1/user;client=127.0.0.1]
+2019-10-02 13:27:33.763 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/user;client=127.0.0.1 generated a(n) MISSING_USER error
+
+nl.tudelft.ewi.auta.core.response.exception.MissingUserException: No user with username invalid
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.lambda$updateUser$0(AuthenticationController.java:167)
+	at java.base/java.util.Optional.orElseThrow(Optional.java:408)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.updateUser(AuthenticationController.java:166)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationControllerTest.testUpdateMissingUser(AuthenticationControllerTest.java:279)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.764 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.765 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@4e97f375]}]
+2019-10-02 13:27:33.767 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.MissingUserException: No user with username invalid]
+2019-10-02 13:27:33.775 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.776 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.783 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.786 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.786 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.login(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.788 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{password=hastalavista}]
+2019-10-02 13:27:33.788 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{password=hastalavista}]
+2019-10-02 13:27:33.788 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.788 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The username field is required, ServletWebRequest: uri=/api/v1/user/login;client=127.0.0.1]
+2019-10-02 13:27:33.789 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/user/login;client=127.0.0.1 generated a(n) MISSING_FIELD error
+
+nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The username field is required
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getParam(ControllerBase.java:32)
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getString(ControllerBase.java:60)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.login(AuthenticationController.java:82)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationControllerTest.testLoginNoUsername(AuthenticationControllerTest.java:124)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.790 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.790 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@3617546e]}]
+2019-10-02 13:27:33.791 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The username field is required]
+2019-10-02 13:27:33.794 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.795 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.804 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.808 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.809 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.login(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.811 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=Arnold, password=A choir boy!}]
+2019-10-02 13:27:33.811 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{username=Arnold, password=A choir boy!}]
+2019-10-02 13:27:33.811 TRACE 14367 --- [Test worker] n.t.e.a.c.c.AuthenticationController     : Username Arnold exists in database
+2019-10-02 13:27:33.812 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.812 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UnauthenticatedException: Incorrect username or password, ServletWebRequest: uri=/api/v1/user/login;client=127.0.0.1]
+2019-10-02 13:27:33.812 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/user/login;client=127.0.0.1 generated a(n) NOT_AUTHENTICATED error
+
+nl.tudelft.ewi.auta.core.response.exception.UnauthenticatedException: Incorrect username or password
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.login(AuthenticationController.java:97)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationControllerTest.testBadPassword(AuthenticationControllerTest.java:137)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.813 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.814 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@5efd35ca]}]
+2019-10-02 13:27:33.815 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UnauthenticatedException: Incorrect username or password]
+2019-10-02 13:27:33.821 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.821 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.829 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.832 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.833 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.login(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.835 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=Arnold, password=hastalavista}]
+2019-10-02 13:27:33.835 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{username=Arnold, password=hastalavista}]
+2019-10-02 13:27:33.836 TRACE 14367 --- [Test worker] n.t.e.a.c.c.AuthenticationController     : Username Arnold exists in database
+2019-10-02 13:27:33.837 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.838 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[], token=Come on bennet, let's party. consider it a divorce.}]
+2019-10-02 13:27:33.843 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.844 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.854 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.859 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.860 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.register(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.862 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=Arnold, password=hastalavista, authority=ROLE_SHOPPING}]
+2019-10-02 13:27:33.862 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{username=Arnold, password=hastalavista, authority=ROLE_SHOPPING}]
+2019-10-02 13:27:33.864 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.865 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: Authority ROLE_SHOPPING is not valid, ServletWebRequest: uri=/api/v1/user/register;client=127.0.0.1]
+2019-10-02 13:27:33.865 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/user/register;client=127.0.0.1 generated a(n) INVALID_ROLE error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: Authority ROLE_SHOPPING is not valid
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.register(AuthenticationController.java:120)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationControllerTest.testRegisterWeirdAuthority(AuthenticationControllerTest.java:204)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.867 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.869 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@628ff4c6]}]
+2019-10-02 13:27:33.872 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidRoleException: Authority ROLE_SHOPPING is not valid]
+2019-10-02 13:27:33.878 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.878 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.889 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.894 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.895 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.register(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.897 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=Arnold, password=hastalavista, authority=ROLE_TA}]
+2019-10-02 13:27:33.898 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{username=Arnold, password=hastalavista, authority=ROLE_TA}]
+2019-10-02 13:27:33.899 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:33.900 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:33.907 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.908 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.920 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.924 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.926 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.register(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.928 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=Arnold, password=hastalavista}]
+2019-10-02 13:27:33.928 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{username=Arnold, password=hastalavista}]
+2019-10-02 13:27:33.929 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.929 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The authority field is required, ServletWebRequest: uri=/api/v1/user/register;client=127.0.0.1]
+2019-10-02 13:27:33.930 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/user/register;client=127.0.0.1 generated a(n) MISSING_FIELD error
+
+nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The authority field is required
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getParam(ControllerBase.java:32)
+	at nl.tudelft.ewi.auta.core.controller.ControllerBase.getString(ControllerBase.java:60)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.register(AuthenticationController.java:115)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationControllerTest.testRegisterNoAuthority(AuthenticationControllerTest.java:193)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.930 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.931 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@31c124d1]}]
+2019-10-02 13:27:33.933 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: The authority field is required]
+2019-10-02 13:27:33.939 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.939 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.950 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.957 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.959 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.register(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.961 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=Arnold, password=hastalavista, authority=ROLE_TA}]
+2019-10-02 13:27:33.961 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{username=Arnold, password=hastalavista, authority=ROLE_TA}]
+2019-10-02 13:27:33.964 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.964 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.DuplicateUserException, ServletWebRequest: uri=/api/v1/user/register;client=127.0.0.1]
+2019-10-02 13:27:33.964 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/user/register;client=127.0.0.1 generated a(n) DUPLICATE_USER error
+
+nl.tudelft.ewi.auta.core.response.exception.DuplicateUserException: null
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.register(AuthenticationController.java:133)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationControllerTest.testRegisterNameCollision(AuthenticationControllerTest.java:220)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.966 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.968 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@40f7dd68]}]
+2019-10-02 13:27:33.970 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.DuplicateUserException]
+2019-10-02 13:27:33.976 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.976 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:33.983 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.985 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:33.986 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.login(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:33.988 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{username=Sisko, password=constable}]
+2019-10-02 13:27:33.988 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{username=Sisko, password=constable}]
+2019-10-02 13:27:33.989 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:33.989 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UnauthenticatedException: Incorrect username or password, ServletWebRequest: uri=/api/v1/user/login;client=127.0.0.1]
+2019-10-02 13:27:33.989 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/user/login;client=127.0.0.1 generated a(n) NOT_AUTHENTICATED error
+
+nl.tudelft.ewi.auta.core.response.exception.UnauthenticatedException: Incorrect username or password
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationController.login(AuthenticationController.java:89)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AuthenticationControllerTest.testBadUsername(AuthenticationControllerTest.java:158)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:33.990 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:33.990 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@29a4711a]}]
+2019-10-02 13:27:33.991 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UnauthenticatedException: Incorrect username or password]
+2019-10-02 13:27:33.994 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:33.995 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.001 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.004 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.005 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.logout(java.lang.String) throws java.sql.SQLException
+2019-10-02 13:27:34.007 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [Come on bennet, let's party. consider it a divorce.]
+2019-10-02 13:27:34.008 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.008 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:34.012 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.AuthenticationController:
+	{POST /api/v1/user/register, produces [application/json]}: register(Map)
+	{PUT /api/v1/user/password, produces [application/json]}: password(Authentication,Map)
+	{PUT /api/v1/user, produces [application/json]}: updateUser(Map)
+	{POST /api/v1/user/login, produces [application/json]}: login(Map)
+	{DELETE /api/v1/user/logout, produces [application/json]}: logout(String)
+2019-10-02 13:27:34.012 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.018 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.020 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.021 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.AuthenticationController.updateUser(java.util.Map<java.lang.String, java.lang.Object>) throws java.sql.SQLException
+2019-10-02 13:27:34.023 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [{enabled=false, username=Arnold, authority=ROLE_ADMIN}]
+2019-10-02 13:27:34.023 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [{enabled=false, username=Arnold, authority=ROLE_ADMIN}]
+2019-10-02 13:27:34.023 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.AuthenticationController     : Updating user Arnold with authority ROLE_ADMIN and enabled: false
+2019-10-02 13:27:34.024 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.024 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[]}]
+2019-10-02 13:27:34.034 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.034 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.041 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.044 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.045 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsForIdentityAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.045 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [Arnold Schwarzenegger, csv, excel]
+2019-10-02 13:27:34.046 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.051 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/identity/Arnold%20Schwarzenegger/export
+2019-10-02 13:27:34.053 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsForIdentityAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.053 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.056 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.069 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.069 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.079 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.082 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.084 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.085 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.086 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.089 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.089 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.090 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.090 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.097 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.097 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.104 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.107 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.108 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.109 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.110 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.112 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.113 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.113 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.113 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.119 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.119 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.127 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.129 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.130 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.131 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.132 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.135 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.136 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.136 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.136 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.143 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.143 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.151 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.155 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.157 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.158 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.158 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.160 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.161 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.161 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.162 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.171 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.172 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.183 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.186 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.187 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsForIdentityAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.188 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [Arnold Schwarzenegger, json, excel]
+2019-10-02 13:27:34.189 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.191 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/identity/Arnold%20Schwarzenegger/export
+2019-10-02 13:27:34.193 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsForIdentityAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.193 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.193 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.204 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.204 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.214 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.219 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.220 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.221 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.222 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.224 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.225 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.225 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.225 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.235 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.236 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.246 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.249 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.250 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.251 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, csv, excel]
+2019-10-02 13:27:34.252 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.257 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.258 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.258 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.259 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.273 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.275 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.286 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.290 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.291 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.292 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.294 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.296 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.297 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.297 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.297 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.306 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.307 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.316 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.319 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.320 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.321 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, csv, excel]
+2019-10-02 13:27:34.322 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.325 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.326 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.326 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.326 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.332 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.333 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.339 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.343 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.344 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.345 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.346 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.348 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.351 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.351 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.352 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.361 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.361 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.373 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.376 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.377 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.378 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, csv, colons]
+2019-10-02 13:27:34.379 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:34.379 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidFormatException: colons is not a known CSV format, ServletWebRequest: uri=/api/v1/assignment/test%20assignment%20ID/export;client=127.0.0.1]
+2019-10-02 13:27:34.379 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/test%20assignment%20ID/export;client=127.0.0.1 generated a(n) INVALID_FORMAT error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidFormatException: colons is not a known CSV format
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAsCsvAction(SubmissionExportController.java:412)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.runExport(SubmissionExportController.java:243)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(SubmissionExportController.java:169)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportControllerTest.testExplicitCsvWithBadFormat(SubmissionExportControllerTest.java:286)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:34.380 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:34.381 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@21704325]}]
+2019-10-02 13:27:34.381 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidFormatException: colons is not a known CSV format]
+2019-10-02 13:27:34.387 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.387 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.394 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.396 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.397 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.398 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.398 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.400 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.401 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.401 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.401 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.407 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.408 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.414 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.416 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.417 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsInAssignmentForIdentityAction(java.lang.String,java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.418 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, Arnold Schwarzenegger, json, excel]
+2019-10-02 13:27:34.419 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.420 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export/Arnold%20Schwarzenegger
+2019-10-02 13:27:34.421 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsInAssignmentForIdentityAction(java.lang.String,java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.421 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.421 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.427 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.427 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.433 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.435 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.436 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.437 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, csv, mysql]
+2019-10-02 13:27:34.438 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.439 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.440 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.440 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.440 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.446 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.446 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.453 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.456 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.457 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.457 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.458 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.460 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.463 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.464 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.465 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.475 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.475 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.482 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.485 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.486 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.487 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.488 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.490 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.491 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.491 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.491 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.497 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.497 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.504 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.506 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.507 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.508 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, csv, excel]
+2019-10-02 13:27:34.509 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.511 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.511 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.512 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.512 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.520 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.520 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.526 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.528 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.529 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsInAssignmentForIdentityAction(java.lang.String,java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.530 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, Arnold Schwarzenegger, csv, excel]
+2019-10-02 13:27:34.531 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.532 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export/Arnold%20Schwarzenegger
+2019-10-02 13:27:34.533 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsInAssignmentForIdentityAction(java.lang.String,java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.533 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.533 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.539 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.539 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.545 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.549 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.550 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.550 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, fortune-cookie, excel]
+2019-10-02 13:27:34.551 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:34.551 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidFormatException: fortune-cookie is not a known export format, ServletWebRequest: uri=/api/v1/assignment/test%20assignment%20ID/export;client=127.0.0.1]
+2019-10-02 13:27:34.552 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/test%20assignment%20ID/export;client=127.0.0.1 generated a(n) INVALID_FORMAT error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidFormatException: fortune-cookie is not a known export format
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.runExport(SubmissionExportController.java:245)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(SubmissionExportController.java:169)
+	at jdk.internal.reflect.GeneratedMethodAccessor204.invoke(Unknown Source)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.SubmissionExportControllerTest.testBadFormat(SubmissionExportControllerTest.java:264)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:34.552 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:34.553 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@70c42c89]}]
+2019-10-02 13:27:34.554 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidFormatException: fortune-cookie is not a known export format]
+2019-10-02 13:27:34.563 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.SubmissionExportController:
+	{GET /api/v1/assignment/{aid}/export, produces [application/json || text/csv]}: exportAllSubmissionsAction(String,String,String)
+	{GET /api/v1/assignment/{aid}/export/{iid}, produces [application/json || text/csv]}: exportAllSubmissionsInAssignmentForIdentityAction(String,String,String,String)
+	{GET /api/v1/identity/{iid}/export, produces [application/json || text/csv]}: exportAllSubmissionsForIdentityAction(String,String,String)
+2019-10-02 13:27:34.563 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in <unknown>
+2019-10-02 13:27:34.569 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.571 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.572 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.573 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [test assignment ID, json, excel]
+2019-10-02 13:27:34.573 DEBUG 14367 --- [Test worker] o.s.w.c.request.async.WebAsyncManager    : Started async request
+2019-10-02 13:27:34.575 DEBUG 14367 --- [MvcAsync1] o.s.w.c.request.async.WebAsyncManager    : Async result set, dispatch to /api/v1/assignment/test%20assignment%20ID/export
+2019-10-02 13:27:34.575 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody> nl.tudelft.ewi.auta.core.controller.SubmissionExportController.exportAllSubmissionsAction(java.lang.String,java.lang.String,java.lang.String)
+2019-10-02 13:27:34.575 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result []
+2019-10-02 13:27:34.576 TRACE 14367 --- [Test worker] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
+2019-10-02 13:27:34.578 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UiController:
+	{GET [/{what:(?!api|js|css|img|index).+.*}, /{what:(?!api|js|css|img|sso).*}/{w2}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}/{w8}]}: get()
+2019-10-02 13:27:34.578 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.584 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.586 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.586  WARN 14367 --- [Test worker] o.s.web.servlet.PageNotFound             : No mapping for GET /
+2019-10-02 13:27:34.587 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UiController:
+	{GET [/{what:(?!api|js|css|img|index).+.*}, /{what:(?!api|js|css|img|sso).*}/{w2}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}/{w8}]}: get()
+2019-10-02 13:27:34.588 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.593 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.595 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.596  WARN 14367 --- [Test worker] o.s.web.servlet.PageNotFound             : No mapping for GET /index.html
+2019-10-02 13:27:34.599 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UiController:
+	{GET [/{what:(?!api|js|css|img|index).+.*}, /{what:(?!api|js|css|img|sso).*}/{w2}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}/{w8}]}: get()
+2019-10-02 13:27:34.600 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.605 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.607 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.608 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String nl.tudelft.ewi.auta.core.controller.UiController.get()
+2019-10-02 13:27:34.608 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:34.611 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : View [InternalResourceView], model {}
+2019-10-02 13:27:34.612 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : Forwarding to [/index.html]
+2019-10-02 13:27:34.613 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UiController:
+	{GET [/{what:(?!api|js|css|img|index).+.*}, /{what:(?!api|js|css|img|sso).*}/{w2}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}/{w8}]}: get()
+2019-10-02 13:27:34.613 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.620 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.623 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.624 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String nl.tudelft.ewi.auta.core.controller.UiController.get()
+2019-10-02 13:27:34.624 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:34.624 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : View [InternalResourceView], model {}
+2019-10-02 13:27:34.624 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : Forwarding to [/index.html]
+2019-10-02 13:27:34.626 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UiController:
+	{GET [/{what:(?!api|js|css|img|index).+.*}, /{what:(?!api|js|css|img|sso).*}/{w2}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}/{w8}]}: get()
+2019-10-02 13:27:34.626 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.632 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.634 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.635 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String nl.tudelft.ewi.auta.core.controller.UiController.get()
+2019-10-02 13:27:34.635 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:34.635 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : View [InternalResourceView], model {}
+2019-10-02 13:27:34.636 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : Forwarding to [/index.html]
+2019-10-02 13:27:34.637 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.UiController:
+	{GET [/{what:(?!api|js|css|img|index).+.*}, /{what:(?!api|js|css|img|sso).*}/{w2}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}, /{what:(?!api|js|css|img|sso).*}/{w2}/{w3}/{w4}/{w5}/{w6}/{w7}/{w8}]}: get()
+2019-10-02 13:27:34.638 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.647 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.650 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.652 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String nl.tudelft.ewi.auta.core.controller.UiController.get()
+2019-10-02 13:27:34.652 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:34.652 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : View [InternalResourceView], model {}
+2019-10-02 13:27:34.652 DEBUG 14367 --- [Test worker] o.s.w.servlet.view.InternalResourceView  : Forwarding to [/index.html]
+2019-10-02 13:27:34.681 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.WorkerController:
+	{GET /api/v1/workers, produces [application/json]}: getWorkersAction()
+2019-10-02 13:27:34.681 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.692 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.695 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.697 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.WorkerController.getWorkersAction()
+2019-10-02 13:27:34.697 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:34.699 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.700 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{workers=[{hostname=here, load=20.0, name=test #2, lastPing=1570015654696, job={assignment=123, submission=456}}], errors=[]}]
+2019-10-02 13:27:34.704 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.WorkerController:
+	{GET /api/v1/workers, produces [application/json]}: getWorkersAction()
+2019-10-02 13:27:34.704 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:34.711 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.713 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.714 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.WorkerController.getWorkersAction()
+2019-10-02 13:27:34.714 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:34.715 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.715 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{workers=[{hostname=here, load=20.0, name=test #1, lastPing=1570015654713}], errors=[]}]
+2019-10-02 13:27:34.734 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.735 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.745 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.749 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.750 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getScore(java.lang.String,java.lang.String) throws java.io.IOException,freemarker.template.TemplateException
+2019-10-02 13:27:34.751 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [aid, invalid]
+2019-10-02 13:27:34.752 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:34.752 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoResultsException, ServletWebRequest: uri=/api/v1/assignment/aid/submission/invalid/benchmark/score;client=127.0.0.1]
+2019-10-02 13:27:34.753 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/invalid/benchmark/score;client=127.0.0.1 generated a(n) NO_RESULTS error
+
+nl.tudelft.ewi.auta.core.response.exception.NoResultsException: null
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getScore(BenchmarkingController.java:141)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.getBadgeNoResultsTest(BenchmarkingControllerTest.java:130)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:34.754 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:34.755 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@22a87765]}]
+2019-10-02 13:27:34.757 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoResultsException]
+2019-10-02 13:27:34.764 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.766 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.778 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.781 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.784 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkAggregated(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:34.787 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@6aa1a2e]
+2019-10-02 13:27:34.787 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@1c4e3aa0, aid, sid, invalidType, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@6aa1a2e]
+2019-10-02 13:27:34.788 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.BenchmarkingController       : Received benchmark aggregation request for sid sid, metric CYCLOMATIC_COMPLEXITY and level METHOD
+2019-10-02 13:27:34.789 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.789 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@7f4c2aac]}]
+2019-10-02 13:27:34.794 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.795 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.802 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.805 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.807 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.core.io.InputStreamResource> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkReport(java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException,freemarker.template.TemplateException
+2019-10-02 13:27:34.810 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@388e06b8]
+2019-10-02 13:27:34.810 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [WRONG_ID, WRONG_ID, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@388e06b8]
+2019-10-02 13:27:34.811 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:34.811 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoResultsException, ServletWebRequest: uri=/api/v1/assignment/WRONG_ID/submission/WRONG_ID/benchmark/report;client=127.0.0.1]
+2019-10-02 13:27:34.811 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/WRONG_ID/submission/WRONG_ID/benchmark/report;client=127.0.0.1 generated a(n) NO_RESULTS error
+
+nl.tudelft.ewi.auta.core.response.exception.NoResultsException: null
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkReport(BenchmarkingController.java:276)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.reportGeneratorInvalidProjectEntityTest(BenchmarkingControllerTest.java:349)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:34.812 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:34.812 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@b86ccb]}]
+2019-10-02 13:27:34.813 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoResultsException]
+2019-10-02 13:27:34.818 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.818 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.826 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.829 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.830 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:34.834 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@5ccfb28e]
+2019-10-02 13:27:34.834 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@8538f5e, aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@5ccfb28e]
+2019-10-02 13:27:34.835 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.836 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{rank=4, errors=[]}]
+2019-10-02 13:27:34.842 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.843 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.849 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.852 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.853 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:34.856 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@2573971b]
+2019-10-02 13:27:34.857 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@6d32c078, aid, WRONG_SID, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@2573971b]
+2019-10-02 13:27:34.858 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:34.858 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoResultsException, ServletWebRequest: uri=/api/v1/assignment/aid/submission/WRONG_SID/benchmark/rank;client=127.0.0.1]
+2019-10-02 13:27:34.858 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/WRONG_SID/benchmark/rank;client=127.0.0.1 generated a(n) NO_RESULTS error
+
+nl.tudelft.ewi.auta.core.response.exception.NoResultsException: null
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(BenchmarkingController.java:107)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.invalidProjectEntityRankTest(BenchmarkingControllerTest.java:187)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:34.860 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:34.861 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@5f056f12]}]
+2019-10-02 13:27:34.862 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoResultsException]
+2019-10-02 13:27:34.866 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.866 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.879 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.882 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.884 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkChartData(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData)
+2019-10-02 13:27:34.886 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@7a1b2bd0]
+2019-10-02 13:27:34.887 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@60d6f19c, aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@7a1b2bd0]
+2019-10-02 13:27:34.887 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.888 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{entities={1=file1, 2=file2}, dataset=[1.0, 7.0], errors=[], labels=[1, 2, 3]}]
+2019-10-02 13:27:34.922 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.923 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.932 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.936 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.938 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:34.941 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@3893924b]
+2019-10-02 13:27:34.941 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@9105779, aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@3893924b]
+2019-10-02 13:27:34.942 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:34.943 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidEntityLevelException: notanentity is not a valid entity level, ServletWebRequest: uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1]
+2019-10-02 13:27:34.943 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1 generated a(n) INVALID_ENTITY_LEVEL error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidEntityLevelException: notanentity is not a valid entity level
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateMetricAndEntity(BenchmarkingData.java:153)
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateAllFields(BenchmarkingData.java:174)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(BenchmarkingController.java:112)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.invalidEntityLevelTest(BenchmarkingControllerTest.java:202)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+Caused by: java.lang.IllegalArgumentException: No enum constant nl.tudelft.ewi.auta.common.model.entity.EntityLevel.notanentity
+	at java.base/java.lang.Enum.valueOf(Enum.java:240)
+	at nl.tudelft.ewi.auta.common.model.entity.EntityLevel.valueOf(EntityLevel.java:3)
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateMetricAndEntity(BenchmarkingData.java:151)
+	... 100 common frames omitted
+
+2019-10-02 13:27:34.944 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:34.945 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@1f8ed169]}]
+2019-10-02 13:27:34.946 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidEntityLevelException: notanentity is not a valid entity level]
+2019-10-02 13:27:34.951 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.951 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.962 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.968 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.972 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkAggregated(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:34.976 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@1eab8540]
+2019-10-02 13:27:34.976 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@5fe236d, aid, sid, raw, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@1eab8540]
+2019-10-02 13:27:34.976 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.BenchmarkingController       : Received benchmark aggregation request for sid sid, metric CYCLOMATIC_COMPLEXITY and level METHOD
+2019-10-02 13:27:34.977 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.BenchmarkingController       : Finished benchmarking for sid sid
+2019-10-02 13:27:34.977 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:34.978 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{data={1=0.75, 10=0.25}, errors=[]}]
+2019-10-02 13:27:34.984 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:34.984 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:34.993 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.996 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:34.999 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.core.io.InputStreamResource> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkReport(java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException,freemarker.template.TemplateException
+2019-10-02 13:27:35.003 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@380d5228]
+2019-10-02 13:27:35.003 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@380d5228]
+2019-10-02 13:27:35.004 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.BenchmarkingController       : Done generating benchmarking report
+2019-10-02 13:27:35.005 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'text/html', given [*/*] and supported [text/html]
+2019-10-02 13:27:35.006 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [InputStream resource [resource loaded through InputStream]]
+2019-10-02 13:27:35.011 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.011 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.017 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.020 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.023 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkAggregated(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:35.026 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@32653f3f]
+2019-10-02 13:27:35.026 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@5db3b051, aid, sid, entity, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@32653f3f]
+2019-10-02 13:27:35.026 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.BenchmarkingController       : Received benchmark aggregation request for sid sid, metric CYCLOMATIC_COMPLEXITY and level METHOD
+2019-10-02 13:27:35.027 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:35.027 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@4dab7b56]}]
+2019-10-02 13:27:35.031 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.032 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.041 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.044 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.046 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:35.049 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@67d94910]
+2019-10-02 13:27:35.049 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@67a6d0a6, aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@67d94910]
+2019-10-02 13:27:35.050 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:35.051 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.benchmarking.IllegalSystemRankTableException: Expected 4risk categories, got 0, ServletWebRequest: uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1]
+2019-10-02 13:27:35.051 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1 generated a(n) INVALID_SYSTEM_RANK_TABLE error
+
+nl.tudelft.ewi.auta.core.benchmarking.IllegalSystemRankTableException: Expected 4risk categories, got 0
+	at nl.tudelft.ewi.auta.core.benchmarking.SystemRanking.<init>(SystemRanking.java:48)
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateAllFields(BenchmarkingData.java:184)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(BenchmarkingController.java:112)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.invalidRankingTableTest(BenchmarkingControllerTest.java:159)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:35.052 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:35.052 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@1a7e7d73]}]
+2019-10-02 13:27:35.054 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.benchmarking.IllegalSystemRankTableException: Expected 4risk categories, got 0]
+2019-10-02 13:27:35.058 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.059 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.065 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.071 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.075 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkAggregated(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:35.079 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@21e3ab40]
+2019-10-02 13:27:35.079 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@7dd00d05, aid, WRONG_SID, entity, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@21e3ab40]
+2019-10-02 13:27:35.080 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:35.080 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.NoResultsException, ServletWebRequest: uri=/api/v1/assignment/aid/submission/WRONG_SID/benchmark/aggregate;client=127.0.0.1]
+2019-10-02 13:27:35.080 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/WRONG_SID/benchmark/aggregate;client=127.0.0.1 generated a(n) NO_RESULTS error
+
+nl.tudelft.ewi.auta.core.response.exception.NoResultsException: null
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkAggregated(BenchmarkingController.java:231)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.aggregateInvalidProjectEntityTest(BenchmarkingControllerTest.java:306)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:35.081 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:35.082 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@4f639ae6]}]
+2019-10-02 13:27:35.082 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.NoResultsException]
+2019-10-02 13:27:35.086 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.086 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.094 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.097 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.098 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:35.101 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@3663a63]
+2019-10-02 13:27:35.101 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@3076741b, aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@3663a63]
+2019-10-02 13:27:35.102 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:35.102 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.benchmarking.IllegalSystemRankTableException: Expected risk assignment table of size: 3, got size: 0, ServletWebRequest: uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1]
+2019-10-02 13:27:35.102 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1 generated a(n) INVALID_SYSTEM_RANK_TABLE error
+
+nl.tudelft.ewi.auta.core.benchmarking.IllegalSystemRankTableException: Expected risk assignment table of size: 3, got size: 0
+	at nl.tudelft.ewi.auta.core.benchmarking.SystemRanking.aggregateMetrics(SystemRanking.java:134)
+	at nl.tudelft.ewi.auta.core.benchmarking.SystemRanking.getRank(SystemRanking.java:105)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(BenchmarkingController.java:116)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.invalidRiskAssignmentTableTest(BenchmarkingControllerTest.java:238)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:35.103 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:35.103 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@24ecb7ef]}]
+2019-10-02 13:27:35.104 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.benchmarking.IllegalSystemRankTableException: Expected risk assignment table of size: 3, got size: 0]
+2019-10-02 13:27:35.108 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.108 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.115 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.117 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.119 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkAggregated(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:35.122 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@e76291e]
+2019-10-02 13:27:35.122 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@d3e7231, aid, sid, entity, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@e76291e]
+2019-10-02 13:27:35.123 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.BenchmarkingController       : Received benchmark aggregation request for sid sid, metric CYCLOMATIC_COMPLEXITY and level METHOD
+2019-10-02 13:27:35.124 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.BenchmarkingController       : Finished benchmarking for sid sid
+2019-10-02 13:27:35.124 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:35.124 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{data={1=[root/name1], 10=[root/name2]}, errors=[]}]
+2019-10-02 13:27:35.130 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.130 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.137 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.140 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.142 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<org.springframework.core.io.InputStreamResource> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkReport(java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException,freemarker.template.TemplateException
+2019-10-02 13:27:35.145 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@676d9a82]
+2019-10-02 13:27:35.145 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@676d9a82]
+2019-10-02 13:27:35.146 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:35.146 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: Missing metric name, ServletWebRequest: uri=/api/v1/assignment/aid/submission/sid/benchmark/report;client=127.0.0.1]
+2019-10-02 13:27:35.146 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/sid/benchmark/report;client=127.0.0.1 generated a(n) MISSING_FIELD error
+
+nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: Missing metric name
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateMetricAndEntity(BenchmarkingData.java:135)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkReport(BenchmarkingController.java:279)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.reportGeneratorMissingDataTest(BenchmarkingControllerTest.java:336)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:35.147 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:35.148 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@23c6f872]}]
+2019-10-02 13:27:35.149 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.MissingFieldException: Missing metric name]
+2019-10-02 13:27:35.154 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.155 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.162 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.166 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.168 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData) throws java.io.IOException
+2019-10-02 13:27:35.171 TRACE 14367 --- [Test worker] m.m.a.RequestResponseBodyMethodProcessor : Read "application/json" to [nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@56a82c1f]
+2019-10-02 13:27:35.171 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.mock.web.MockHttpServletRequest@3cef3473, aid, sid, nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData@56a82c1f]
+2019-10-02 13:27:35.172 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:35.173 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.InvalidMetricNameException: notametric is not a valid metric name, ServletWebRequest: uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1]
+2019-10-02 13:27:35.173 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/aid/submission/sid/benchmark/rank;client=127.0.0.1 generated a(n) INVALID_METRIC_NAME error
+
+nl.tudelft.ewi.auta.core.response.exception.InvalidMetricNameException: notametric is not a valid metric name
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateMetricAndEntity(BenchmarkingData.java:141)
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateAllFields(BenchmarkingData.java:174)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getBenchmarkRank(BenchmarkingController.java:112)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.BenchmarkingControllerTest.invalidMetricNameTest(BenchmarkingControllerTest.java:174)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+Caused by: java.lang.IllegalArgumentException: No enum constant nl.tudelft.ewi.auta.common.model.metric.MetricName.notametric
+	at java.base/java.lang.Enum.valueOf(Enum.java:240)
+	at nl.tudelft.ewi.auta.common.model.metric.MetricName.valueOf(MetricName.java:10)
+	at nl.tudelft.ewi.auta.core.benchmarking.BenchmarkingData.validateMetricAndEntity(BenchmarkingData.java:139)
+	... 100 common frames omitted
+
+2019-10-02 13:27:35.175 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:35.177 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@432a74d1]}]
+2019-10-02 13:27:35.181 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.InvalidMetricNameException: notametric is not a valid metric name]
+2019-10-02 13:27:35.187 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.BenchmarkingController:
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/chartdata, produces [application/json]}: getBenchmarkChartData(HttpServletRequest,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/rank, produces [application/json]}: getBenchmarkRank(HttpServletRequest,String,String,BenchmarkingData)
+	{GET /api/v1/assignment/{aid}/submission/{sid}/benchmark/score, produces [application/json]}: getScore(String,String)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/aggregate, produces [application/json]}: getBenchmarkAggregated(HttpServletRequest,String,String,String,BenchmarkingData)
+	{POST /api/v1/assignment/{aid}/submission/{sid}/benchmark/report, produces [text/html]}: getBenchmarkReport(String,String,BenchmarkingData)
+2019-10-02 13:27:35.187 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 5 mappings in <unknown>
+2019-10-02 13:27:35.195 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.197 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.199 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.BenchmarkingController.getScore(java.lang.String,java.lang.String) throws java.io.IOException,freemarker.template.TemplateException
+2019-10-02 13:27:35.200 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [aid, sid]
+2019-10-02 13:27:35.200 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:35.201 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{badge=badge, errors=[]}]
+2019-10-02 13:27:35.265 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment1" }, "u" : { "_id" : "assignment1", "name" : "assignment1", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 151 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.266 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 151 completed successfully in 1.04 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.268 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment2" }, "u" : { "_id" : "assignment2", "name" : "assignment2", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 152 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.269 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 152 completed successfully in 1.06 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.273 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "assignment", "ordered" : true, "updates" : [{ "q" : { "_id" : "assignment3" }, "u" : { "_id" : "assignment3", "name" : "assignment3", "priority" : 0.0, "deleted" : false, "metricSettings" : [], "allowedLanguages" : ["java"], "maxWarnings" : 0, "maxFailures" : 0, "_class" : "nl.tudelft.ewi.auta.core.model.Assignment" }, "upsert" : true }] }' with request id 153 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.275 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 153 completed successfully in 2.55 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.279 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course1" }, "u" : { "_id" : "course1", "name" : "NO_TA_NO_INSTRUCTORS", "courseCode" : "AB1234", "instructorSet" : [], "taSet" : [], "assignmentIds" : ["assignment1"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 154 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.281 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 154 completed successfully in 1.84 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.282 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course2" }, "u" : { "_id" : "course2", "name" : "TA_AND_INSTRUCTOR", "courseCode" : "AB1234", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment2"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 155 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.283 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 155 completed successfully in 0.95 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.285 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "course", "ordered" : true, "updates" : [{ "q" : { "_id" : "course3" }, "u" : { "_id" : "course3", "name" : "TA_AND_INSTRUCTOR2", "courseCode" : "AB1234_2", "instructorSet" : ["instructor"], "taSet" : ["ta"], "assignmentIds" : ["assignment3"], "_class" : "nl.tudelft.ewi.auta.core.model.Course" }, "upsert" : true }] }' with request id 156 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.286 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 156 completed successfully in 0.90 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.287 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "assignmentId" : "assignment1", "name" : "submission1", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 157 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.288 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 157 completed successfully in 0.80 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.289 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "submission", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "assignmentId" : "assignment2", "name" : "submission2", "pipelineLog" : { }, "_class" : "nl.tudelft.ewi.auta.core.model.Submission" }, "upsert" : true }] }' with request id 158 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.290 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 158 completed successfully in 0.88 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.291 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission1" }, "u" : { "_id" : "submission1", "identifier" : "id1", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 159 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.292 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 159 completed successfully in 0.83 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.293 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "identity", "ordered" : true, "updates" : [{ "q" : { "_id" : "submission2" }, "u" : { "_id" : "submission2", "identifier" : "id2", "_class" : "nl.tudelft.ewi.auta.core.database.IdentityContainer" }, "upsert" : true }] }' with request id 160 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.294 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 160 completed successfully in 0.65 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.296 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container1" }, "u" : { "_id" : "container1", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission1", "assignmentId" : "assignment1", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 161 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.296 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 161 completed successfully in 0.84 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.298 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "update" : "entity", "ordered" : true, "updates" : [{ "q" : { "_id" : "container2" }, "u" : { "_id" : "container2", "entity" : { "children" : [], "name" : { "name" : "root" }, "isTestEntity" : false, "level" : "PROJECT", "metrics" : [], "metricReports" : [] }, "hadException" : false, "submissionId" : "submission2", "assignmentId" : "assignment2", "verdict" : "PENDING", "_class" : "nl.tudelft.ewi.auta.core.database.EntityContainer" }, "upsert" : true }] }' with request id 162 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.299 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 162 completed successfully in 1.00 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.310 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:35.311 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment1, submission1]
+2019-10-02 13:27:35.312 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment1" }, "limit" : 1, "singleBatch" : true }' with request id 163 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.313 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 163 completed successfully in 0.84 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.315 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "submission", "filter" : { "assignmentId" : "assignment1", "_id" : "submission1" }, "limit" : 2 }' with request id 164 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.318 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 164 completed successfully in 3.17 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.319 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment1
+2019-10-02 13:27:35.322 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment1"] } } }' with request id 165 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.323 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 165 completed successfully in 0.82 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.323 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course1
+2019-10-02 13:27:35.324 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor does not have access to course course1
+2019-10-02 13:27:35.324 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler protected org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.RestExceptionHandler.handle(nl.tudelft.ewi.auta.core.response.exception.ApiException,org.springframework.web.context.request.WebRequest)
+2019-10-02 13:27:35.324 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access submission: submission1, ServletWebRequest: uri=/api/v1/assignment/assignment1/submission/submission1/verdict;client=127.0.0.1]
+2019-10-02 13:27:35.324 TRACE 14367 --- [Test worker] n.t.e.a.c.c.RestExceptionHandler         : API call uri=/api/v1/assignment/assignment1/submission/submission1/verdict;client=127.0.0.1 generated a(n) FORBIDDEN error
+
+nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access submission: submission1
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService.checkForSubmissionAccess(CourseSecuredService.java:239)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$FastClassBySpringCGLIB$$a8d45d96.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
+	at nl.tudelft.ewi.auta.core.controller.CourseSecuredService$$EnhancerBySpringCGLIB$$70bf645d.checkForSubmissionAccess(<generated>)
+	at nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(ReportController.java:47)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
+	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
+	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
+	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167)
+	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134)
+	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:183)
+	at nl.tudelft.ewi.auta.core.controller.AbstractWebSecurityIntegrationTest.getForbidden(AbstractWebSecurityIntegrationTest.java:66)
+	at nl.tudelft.ewi.auta.core.controller.ReportControllerIntegrationTest.instructorCannotAccessUnauthorizedSubmission(ReportControllerIntegrationTest.java:13)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:628)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:117)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:184)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:180)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
+	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
+	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
+	at com.sun.proxy.$Proxy5.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
+	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
+	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
+	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
+	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
+	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
+	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
+	at java.base/java.lang.Thread.run(Thread.java:834)
+
+2019-10-02 13:27:35.325 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Found 'Content-Type:application/json' in response
+2019-10-02 13:27:35.325 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[nl.tudelft.ewi.auta.core.response.Error@70980513]}]
+2019-10-02 13:27:35.325 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [nl.tudelft.ewi.auta.core.response.exception.UserNotAuthorizedException: User is not authorized to access submission: submission1]
+2019-10-02 13:27:35.331 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.ReportController.verdictAction(java.lang.String,java.lang.String)
+2019-10-02 13:27:35.332 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [assignment2, submission2]
+2019-10-02 13:27:35.334 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "assignment", "filter" : { "_id" : "assignment2" }, "limit" : 1, "singleBatch" : true }' with request id 166 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.334 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 166 completed successfully in 0.73 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.336 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "submission", "filter" : { "assignmentId" : "assignment2", "_id" : "submission2" }, "limit" : 2 }' with request id 167 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.337 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 167 completed successfully in 0.83 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.338 TRACE 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking assignment access for user instructor, cid assignment2
+2019-10-02 13:27:35.340 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "course", "filter" : { "assignmentIds" : { "$in" : ["assignment2"] } } }' with request id 168 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.340 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 168 completed successfully in 0.79 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.341 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : Checking course access for user instructor, cid course2
+2019-10-02 13:27:35.341 DEBUG 14367 --- [Test worker] n.t.e.a.c.c.CourseSecuredService         : User instructor is registered as an instructor in course course2
+2019-10-02 13:27:35.343 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Sending command '{ "find" : "entity", "filter" : { "submissionId" : "submission2", "assignmentId" : "assignment2" }, "limit" : 2 }' with request id 169 to database auta-test on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.344 DEBUG 14367 --- [Test worker] org.mongodb.driver.protocol.command      : Execution of command with request id 169 completed successfully in 0.84 ms on connection [connectionId{localValue:3, serverValue:3}] to server localhost:42071
+2019-10-02 13:27:35.345 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:35.345 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{verdict=pending, errors=[]}]
+2019-10-02 13:27:35.397 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.LogController:
+	{GET /api/v1/logs/core, produces [application/json]}: getCoreLogAction()
+2019-10-02 13:27:35.397 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:35.405 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.408 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.409 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.LogController.getCoreLogAction()
+2019-10-02 13:27:35.409 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:35.410 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:35.410 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{log=[], errors=[]}]
+2019-10-02 13:27:35.413 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.LogController:
+	{GET /api/v1/logs/core, produces [application/json]}: getCoreLogAction()
+2019-10-02 13:27:35.413 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:35.420 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.424 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 1 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.424 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.LogController.getCoreLogAction()
+2019-10-02 13:27:35.425 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:35.425 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:35.426 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{log=[error!, info...], errors=[]}]
+2019-10-02 13:27:35.429 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 
+	n.t.e.a.c.c.TokenController:
+	{GET /api/v1/worker/token, produces [application/json]}: getToken()
+2019-10-02 13:27:35.429 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 1 mappings in <unknown>
+2019-10-02 13:27:35.435 DEBUG 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.437 DEBUG 14367 --- [Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2019-10-02 13:27:35.438 TRACE 14367 --- [Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<nl.tudelft.ewi.auta.core.response.Response> nl.tudelft.ewi.auta.core.controller.TokenController.getToken() throws java.sql.SQLException
+2019-10-02 13:27:35.438 TRACE 14367 --- [Test worker] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
+2019-10-02 13:27:35.438 DEBUG 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json]
+2019-10-02 13:27:35.439 TRACE 14367 --- [Test worker] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{errors=[], token=token}]
+2019-10-02 13:27:35.444 DEBUG 14367 --- [Thread-20] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@cf2c369, started on Wed Oct 02 13:27:18 CEST 2019
+2019-10-02 13:27:35.589  INFO 14367 --- [Thread-20] org.mongodb.driver.connection            : Closed connection [connectionId{localValue:2, serverValue:2}] to localhost:42071 because the pool has been closed.
+2019-10-02 13:27:35.589 DEBUG 14367 --- [Thread-20] org.mongodb.driver.connection            : Closing connection connectionId{localValue:2, serverValue:2}
+2019-10-02 13:27:35.589  INFO 14367 --- [Thread-20] org.mongodb.driver.connection            : Closed connection [connectionId{localValue:3, serverValue:3}] to localhost:42071 because the pool has been closed.
+2019-10-02 13:27:35.589 DEBUG 14367 --- [Thread-20] org.mongodb.driver.connection            : Closing connection connectionId{localValue:3, serverValue:3}
+2019-10-02 13:27:35.589  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.589+0200 I -        [conn2] end connection 127.0.0.1:44686 (3 connections now open)
+2019-10-02 13:27:35.590  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.589+0200 I -        [conn3] end connection 127.0.0.1:44688 (2 connections now open)
+2019-10-02 13:27:35.590 DEBUG 14367 --- [cluster-ClusterId{value='5d94899ff4446f381f0849fa', description='null'}-localhost:42071] org.mongodb.driver.connection            : Closing connection connectionId{localValue:1, serverValue:1}
+2019-10-02 13:27:35.590  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.590+0200 I -        [conn1] end connection 127.0.0.1:44684 (1 connection now open)
+2019-10-02 13:27:35.591  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.591+0200 I NETWORK  [thread1] connection accepted from 127.0.0.1:44692 #4 (1 connection now open)
+2019-10-02 13:27:35.592  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.592+0200 I COMMAND  [conn4] terminating, shutdown command received
+2019-10-02 13:27:35.592  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.592+0200 I NETWORK  [conn4] shutdown: going to close listening sockets...
+2019-10-02 13:27:35.592  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.592+0200 I NETWORK  [conn4] closing listening socket: 7
+2019-10-02 13:27:35.592  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.592+0200 I NETWORK  [conn4] closing listening socket: 8
+2019-10-02 13:27:35.592  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.592+0200 I NETWORK  [conn4] removing socket file: /tmp/mongodb-42071.sock
+2019-10-02 13:27:35.592  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.592+0200 I NETWORK  [conn4] shutdown: going to flush diaglog...
+2019-10-02 13:27:35.592  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.592+0200 I FTDC     [conn4] Shutting down full-time diagnostic data capture
+2019-10-02 13:27:35.593  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.593+0200 I STORAGE  [conn4] WiredTigerKVEngine shutting down
+2019-10-02 13:27:35.792  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.792+0200 I STORAGE  [conn4] shutdown: removing fs lock...
+2019-10-02 13:27:35.793  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.792+0200 I CONTROL  [conn4] now exiting
+2019-10-02 13:27:35.793  INFO 14367 --- [Thread-17] o.s.b.a.mongo.embedded.EmbeddedMongo     : 2019-10-02T13:27:35.792+0200 I CONTROL  [conn4] shutting down with code:0
diff --git a/doc/api/proposal/index.html b/doc/api/proposal/index.html
index 63c19fb06275bb41cf218f5e722f97e237b42f03..61a611dc702226471e142c8216811d882412ea30 100644
--- a/doc/api/proposal/index.html
+++ b/doc/api/proposal/index.html
@@ -206,35 +206,6 @@ Content-Type: application/json
       <p>Returns a list of normal users.</p>
     </section>
 
-    <section id="f-api-metrisjs">
-      <h1><span class="method">GET</span> /api/v1/worker/metrics.js</h1>
-      <div>
-        <table>
-          <tr>
-            <th>Property</th>
-            <th>Type</th>
-            <th>Required</th>
-            <th>Description</th>
-          </tr>
-          <tr>
-            <td>token</td>
-            <td>string</td>
-            <td>yes</td>
-            <td>the token to invalidate</td>
-          </tr>
-        </table>
-      </div>
-      <h2>Example response</h2>
-      <response>
-{
-  "java": ["LINES_OF_CODE", "CYCLOMATIC_COMPLEXITY"],
-  "python": ["LINES_OF_CODE"],
-  "assembly": ["RECURSION"]
-}
-      </response>
-      <p>Gets a map of all languages and their metrics.</p>
-    </section>
-
     <section id="f-api-user-logout">
       <h1><span class="method">DELETE</span> /api/v1/user/logout</h1>
 
@@ -2150,6 +2121,196 @@ UEsDBBQAAAAAAGdjOEoAAAAAAAAAAAAAAAAFAAAAam...
       </div>
     </section>
 
+    <section id="f-api-worker-metrisjs">
+      <h1><span class="method">GET</span> <del>/api/v1/worker/metrics.js</del></h1>
+      <div>
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Type</th>
+            <th>Required</th>
+            <th>Description</th>
+          </tr>
+          <tr>
+            <td>token</td>
+            <td>string</td>
+            <td>yes</td>
+            <td>the user's authentication token</td>
+          </tr>
+        </table>
+      </div>
+      <h2>Example response</h2>
+      <response class="javascript">
+MetricEditor.metrics = {
+  "metrics": {
+    "python": [
+      "cyclomatic complexity",
+      "method length"
+    ],
+    "cpp": [
+      "cyclomatic complexity",
+      "method length",
+      "lines of code"
+    ],
+    "*": [
+      "comment count",
+      "line length"
+    ]
+  },
+  "errors": []
+}
+      </response>
+      <p>Gets a map of all languages and their metrics.</p>
+      <p>
+        <strong>Deprecated</strong> - originally a hack for the old UI to allow this resource
+        to load in a blocking fashion, no longer necessary
+      </p>
+    </section>
+
+    <section id="f-api-worker-metrics-test-fixtures">
+      <h1><span class="method">GET</span> /api/v1/worker/metrics/test-fixtures</h1>
+      <div>
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Type</th>
+            <th>Required</th>
+            <th>Description</th>
+          </tr>
+          <tr>
+            <td>token</td>
+            <td>string</td>
+            <td>yes</td>
+            <td>the user's authentication token</td>
+          </tr>
+        </table>
+      </div>
+      <h2>Example response</h2>
+      <response>
+{
+  "fixtures": {
+    "CYCLOMATIC_COMPLEXITY": [
+      1,
+      7,
+      14,
+      615
+    ],
+    "DOCKER_LOGS": [
+      "BUILD SUCCESSFUL",
+      "BUILD FAILED"
+    ]
+  }
+}
+      </response>
+      <p>Returns a map containing test fixtures for criteria scripts.</p>
+      <p>
+        It is important to note that the fixtures can be of any type, as long as the type is valid
+        for the metric it belongs to.
+      </p>
+    </section>
+
+    <section id="f-api-script-test-passing-script">
+      <h1><span class="method">POST</span> /api/v1/script/test/passing-script</h1>
+      <div>
+        <h2>Request</h2>
+        <table>
+          <tr>
+            <th>Property</th>
+            <th>Type</th>
+            <th>Required</th>
+            <th>Description</th>
+          </tr>
+          <tr>
+            <td>token</td>
+            <td>string</td>
+            <td>yes</td>
+            <td>the user's authentication token</td>
+          </tr>
+          <tr>
+            <td>script</td>
+            <td>string</td>
+            <td>yes</td>
+            <td>the script to test</td>
+          </tr>
+          <tr>
+            <td>tests</td>
+            <td>list&lt;spec&gt;</td>
+            <td>yes</td>
+            <td>the tests to run</td>
+          </tr>
+        </table>
+        <p>
+          A unit test specification ("spec") is an object containing an identifier <tt>id</tt>
+          for the test and a value <tt>value</tt> to pass to the script under test.
+        </p>
+      </div>
+
+      <div>
+        <h2>Example request</h2>
+        <request>
+{
+  "script": "(() => count => {\n    const minWarnThreshold = 4;\n    const minFailThreshold = 2;\n    const maxWarnThreshold = 20;\n    const maxFailThreshold = 30;\n    if (count > 0) {\n        if (count < minFailThreshold) {\n            fail(`Has too few test methods:' ${count} < ${minFailThreshold}`);\n        } else if (count < minWarnThreshold) {\n            warn(`Has few test methods:' ${count} < ${minWarnThreshold}`);\n        } else if (count > maxFailThreshold) {\n            fail(`Has too many test methods:' ${count} > ${maxFailThreshold}`);\n        } else if (count > maxWarnThreshold) {\n            warn(`Has many methods:' ${count} > ${maxWarnThreshold}`);\n        }\n    }\n})();\n",
+  "tests": [
+    {
+      "id": "test:t16oyi-k3m42o-ie108e-318ntg",
+      "value": "3"
+    },
+    {
+      "id": "test:va47q4-7ti1jg-5ubb30-1xllc6",
+      "value": "24"
+    }
+  ]
+}
+        </request>
+      </div>
+
+      <div>
+        <h2>Example response</h2>
+        <response>
+{
+  "compiles": true,
+  "results": [
+    {
+      "id": "test:t16oyi-k3m42o-ie108e-318ntg",
+      "error": null,
+      "notes": {
+        "notes": [
+          {
+            "severity": "WARNING",
+            "message": "Has few test methods:' 3 < 4"
+          }
+        ]
+      },
+      "grade": null
+    },
+    {
+      "id": "test:va47q4-7ti1jg-5ubb30-1xllc6",
+      "error": null,
+      "notes": {
+        "notes": [
+          {
+            "severity": "WARNING",
+            "message": "Has many methods:' 24 > 20"
+          }
+        ]
+      },
+      "grade": null
+    }
+  ]
+}
+        </response>
+      </div>
+
+      <div>
+        <p>Validates a passing script.</p>
+        <p>
+          The script is checked whether it compiles (mostly for syntax errors) and is then run
+          against the provided values. The results are returned, along with any errors generated
+          when running the test, as if the script were run on an entity.
+        </p>
+      </div>
+    </section>
+
     <section id="f-api-get-workers">
       <h1><span class="method">GET</span> /api/v1/workers</h1>
 
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/PassingScriptTestCase.java b/src/main/java/nl/tudelft/ewi/auta/common/model/PassingScriptTestCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..7485244cf40d8f3e2326c1e0c489fff15f686753
--- /dev/null
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/PassingScriptTestCase.java
@@ -0,0 +1,94 @@
+package nl.tudelft.ewi.auta.common.model;
+
+import javax.annotation.Nullable;
+import java.util.Objects;
+
+/**
+ * A test for passing (criteria) scripts.
+ */
+public class PassingScriptTestCase {
+    /**
+     * The identifier of the test.
+     */
+    @Nullable
+    private String id;
+
+    /**
+     * The value to pass to the script.
+     */
+    @Nullable
+    private Object value;
+
+    /**
+     * Creates a new passing script test.
+     */
+    public PassingScriptTestCase() {
+        this.id = null;
+        this.value = null;
+    }
+
+    /**
+     * Creates a new passing script test.
+     *
+     * @param id the identifier of the test
+     * @param value the value to pass to the script
+     */
+    public PassingScriptTestCase(final String id, final Object value) {
+        this.id = id;
+        this.value = value;
+    }
+
+    /**
+     * Returns the test's identifier.
+     *
+     * @return the identifier
+     */
+    @Nullable
+    public String getId() {
+        return this.id;
+    }
+
+    /**
+     * Sets the test's identifier.
+     *
+     * @param id the identifier
+     */
+    public void setId(final @Nullable String id) {
+        this.id = id;
+    }
+
+    /**
+     * Returns the value to pass to the script.
+     *
+     * @return the value
+     */
+    @Nullable
+    public Object getValue() {
+        return this.value;
+    }
+
+    /**
+     * Sets the value to pass to the script.
+     *
+     * @param value the value
+     */
+    public void setValue(final @Nullable Object value) {
+        this.value = value;
+    }
+
+    @Override
+    public final boolean equals(final Object obj) {
+        if (!(obj instanceof PassingScriptTestCase)) {
+            return false;
+        }
+
+        final var other = (PassingScriptTestCase) obj;
+
+        return Objects.equals(this.id, other.id) && Objects.equals(this.value, other.value);
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(this.id, this.value);
+    }
+}
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/DoubleMetric.java b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/DoubleMetric.java
index fcaa5fdcdb7f7efdc414739f4f331cbadde2f4f2..1606781f83cac607f29938bf95f8a3fe70a50f44 100644
--- a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/DoubleMetric.java
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/DoubleMetric.java
@@ -1,6 +1,6 @@
 package nl.tudelft.ewi.auta.common.model.metric;
 
-public class DoubleMetric extends Metric<Double> {
+public class DoubleMetric extends NumberMetric<Double> {
     /**
      * Create a metric with a value and a name.
      *
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/IntegerMetric.java b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/IntegerMetric.java
index 1dd573753ccc1a2c16c656e2a6eec7b812156395..3a1707fa7866863aa418ba366cd433056f871e7a 100644
--- a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/IntegerMetric.java
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/IntegerMetric.java
@@ -1,6 +1,6 @@
 package nl.tudelft.ewi.auta.common.model.metric;
 
-public class IntegerMetric extends Metric<Integer> {
+public class IntegerMetric extends NumberMetric<Integer> {
     /**
      * Create a metric with a value and a name.
      *
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/Metric.java b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/Metric.java
index e01c04c8c706fdd56a2f406b9797d5ee67b64025..c5f088eeadd670cbe4d6db654cbf9483a2336a93 100644
--- a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/Metric.java
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/Metric.java
@@ -1,11 +1,14 @@
 package nl.tudelft.ewi.auta.common.model.metric;
 
 import org.jetbrains.annotations.Contract;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.annotation.Nullable;
 import java.util.Objects;
 
 public abstract class Metric<T> {
+    private static final Logger logger = LoggerFactory.getLogger(Metric.class);
 
     /**
      * The value of the metric.
@@ -32,6 +35,18 @@ public abstract class Metric<T> {
      * @param name the name of the metric
      */
     public Metric(final T value, final MetricName name) {
+        if (!name.isMetricCompatible(this)) {
+            logger.warn(
+                    "A metric instance with name {} was given an instance of {}, "
+                            + "while it expects instances of {}. This is allowed in the worker, "
+                            + "but reporting scripts may fail due to the mismatch.",
+                    name, this.getClass().getCanonicalName(), name.getType().getCanonicalName()
+            );
+            if (logger.isDebugEnabled()) {
+                logger.debug("This warning was issued due to:", new Throwable());
+            }
+        }
+
         this.value = value;
         this.name = name;
     }
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricFixturesProvider.java b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricFixturesProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fcc2933a44e1532cbd6052a223615345bc80580f
--- /dev/null
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricFixturesProvider.java
@@ -0,0 +1,62 @@
+package nl.tudelft.ewi.auta.common.model.metric;
+
+import com.google.gson.Gson;
+import nl.tudelft.ewi.auta.common.threads.CheckedExceptionTunnel;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A provider class for testing metrics.
+ *
+ * These values are meant to be used when generating criteria script unit tests. The values were
+ * picked to be both edge-cases and normal values to fully cover the range of decisions a script
+ * could take.
+ */
+public class MetricFixturesProvider {
+    /**
+     * The fixtures container the values are stored in.
+     */
+    private final MetricFixturesContainer container;
+
+    /**
+     * Creates a new metric fixtures provider.
+     *
+     * @param gson the GSON instance to deserialize the fixtures with
+     */
+    public MetricFixturesProvider(final Gson gson) {
+        try (var in = new InputStreamReader(
+                MetricFixturesProvider.class.getResourceAsStream("test-fixtures.json"),
+                StandardCharsets.UTF_8
+        )) {
+            this.container = gson.fromJson(in, MetricFixturesContainer.class);
+        } catch (final IOException ex) {
+            throw new CheckedExceptionTunnel(ex);
+        }
+    }
+
+    /**
+     * Returns the test fixtures.
+     *
+     * @return the fixtures
+     */
+    public Map<MetricName, List<Object>> getFixtures() {
+        return this.container.fixtures;
+    }
+
+    /**
+     * The container class the fixtures are stored in.
+     *
+     * This class describes the file format for the serialized fixtures.
+     */
+    private static final class MetricFixturesContainer {
+        /**
+         * The map of fixtures.
+         */
+        private final Map<MetricName, List<Object>> fixtures = Collections.emptyMap();
+    }
+}
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricName.java b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricName.java
index 25af88eb0fb337c82469bcb823fc80f5f80798fb..08df3757d2f7f9038de7a456303b3b6a90bbf248 100644
--- a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricName.java
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricName.java
@@ -1,5 +1,9 @@
 package nl.tudelft.ewi.auta.common.model.metric;
 
+import org.jetbrains.annotations.Contract;
+
+import javax.annotation.Nullable;
+
 /**
  * The names of the metrics.
  */
@@ -8,388 +12,425 @@ public enum MetricName {
     /**
      * The number of instructions in an assembly file.
      */
-    ASSEMBLY_INSTRUCTION_COUNT,
+    ASSEMBLY_INSTRUCTION_COUNT(IntegerMetric.class),
 
     /**
      * The recursion targets for an assembly file.
      */
-    ASSEMBLY_RECURSION_TARGET,
+    ASSEMBLY_RECURSION_TARGET(StringSetMetric.class),
 
     /**
      * The number of assertions per test method.
      */
-    ASSERTIONS_PER_TEST,
+    ASSERTIONS_PER_TEST(IntegerMetric.class),
 
     /**
      * The number of commented lines in a file.
      */
-    COMMENTED_LINE_COUNT,
+    COMMENTED_LINE_COUNT(IntegerMetric.class),
 
     /**
      * The number of constructors in a file or class.
      */
-    CONSTRUCTOR_COUNT,
+    CONSTRUCTOR_COUNT(IntegerMetric.class),
 
     /**
      * The cyclomatic complexity of a method.
      */
-    CYCLOMATIC_COMPLEXITY,
+    CYCLOMATIC_COMPLEXITY(NumberMetric.class),
 
     /**
      * The logs of the docker container.
      */
-    DOCKER_LOGS,
+    DOCKER_LOGS(StringMetric.class),
 
     /**
      * The number of fields in a file or class.
      */
-    FIELD_COUNT,
+    FIELD_COUNT(IntegerMetric.class),
 
     /**
      * The number of files in a project.
      */
-    FILE_COUNT,
+    FILE_COUNT(IntegerMetric.class),
 
     /**
      * Whether the method has javadocs.
      */
-    JAVADOC_EXISTS,
+    JAVADOC_EXISTS(BooleanMetric.class),
 
     /**
      * The set of javadoc violations (tags).
      */
-    JAVADOC_VIOLATIONS,
+    JAVADOC_VIOLATIONS(StringSetMetric.class),
 
     /**
      * The length of each line in a file.
      */
-    LINE_LENGTH,
+    LINE_LENGTH(IntegerListMetric.class),
 
     /**
      * The number of lines of code in a code block.
      */
-    LINES_OF_CODE,
+    LINES_OF_CODE(IntegerMetric.class),
 
     /**
      * The number of methods in a file or class.
      */
-    METHOD_COUNT,
+    METHOD_COUNT(IntegerMetric.class),
 
     /**
      * The number of effective lines of code in each method. This is excluding commented lines and
      * blank lines.
      */
-    METHOD_EFFECTIVE_LOC,
+    METHOD_EFFECTIVE_LOC(IntegerMetric.class),
 
     /**
      * The number of parameters in a method.
      */
-    PARAMETER_COUNT,
+    PARAMETER_COUNT(IntegerMetric.class),
 
     /**
      * The percentage of commented liens in a file.
      */
-    PERCENTAGE_COMMENTED_LINES,
+    PERCENTAGE_COMMENTED_LINES(DoubleMetric.class),
 
     /**
      * The number of methods with a Test annotation.
      */
-    TEST_METHOD_COUNT,
+    TEST_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * The UML SVG file as a string.
      */
-    UML,
+    UML(StringMetric.class),
 
     /**
      * The maintainability index.
      */
-    MAINTAINABILITY_INDEX,
+    MAINTAINABILITY_INDEX(DoubleMetric.class),
 
     /**
      * The number of unique words in a class or method.
      */
-    UNIQUE_WORDS_COUNT,
+    UNIQUE_WORDS_COUNT(IntegerMetric.class),
 
     /**
      * The number of lambdas in a class or method.
      */
-    LAMBDAS_COUNT,
+    LAMBDAS_COUNT(IntegerMetric.class),
 
     /**
      * The number of subclasses in a class or method.
      */
-    SUBCLASSES_COUNT,
+    SUBCLASSES_COUNT(IntegerMetric.class),
 
     /**
      * The number of anonymous classes in a class or method.
      */
-    ANONYMOUS_CLASSES_COUNT,
+    ANONYMOUS_CLASSES_COUNT(IntegerMetric.class),
 
     /**
      * The maximum number of nested blocks in a class or method.
      */
-    MAX_NESTED_BLOCKS,
+    MAX_NESTED_BLOCKS(IntegerMetric.class),
 
     /**
      * The number of math operations in a class or method.
      */
-    MATH_OPERATIONS_COUNT,
+    MATH_OPERATIONS_COUNT(IntegerMetric.class),
 
     /**
      * The number of assignments in a class or method.
      */
-    ASSIGNMENTS_COUNT,
+    ASSIGNMENTS_COUNT(IntegerMetric.class),
 
     /**
      * The amount of numbers in a class or method.
      */
-    NUMBER_COUNT,
+    NUMBER_COUNT(IntegerMetric.class),
 
     /**
      * The amount of string literals in a class or method.
      */
-    STRING_LITERAL_COUNT,
+    STRING_LITERAL_COUNT(IntegerMetric.class),
 
     /**
      * The number of parenthesized expressions in a class or method.
      */
-    PARENTHESIZED_EXPRESSION_COUNT,
+    PARENTHESIZED_EXPRESSION_COUNT(IntegerMetric.class),
 
     /**
      * The number of try catch blocks in a class or method.
      */
-    TRY_CATCH_COUNT,
+    TRY_CATCH_COUNT(IntegerMetric.class),
 
     /**
      * The number of comparisons in a class or method.
      */
-    COMPARISON_COUNT,
+    COMPARISON_COUNT(IntegerMetric.class),
 
     /**
      * The number of loops in a class or method.
      */
-    LOOP_COUNT,
+    LOOP_COUNT(IntegerMetric.class),
 
     /**
      * The number of variables used in a class or method.
      */
-    VARIABLES_COUNT,
+    VARIABLES_COUNT(IntegerMetric.class),
 
     /**
      * The number of return calls in a class or method.
      */
-    RETURN_COUNT,
+    RETURN_COUNT(IntegerMetric.class),
 
     /**
      *The number of branch instructions in a class or method.
      */
-    WEIGHT_METHOD_CLASS,
+    WEIGHT_METHOD_CLASS(IntegerMetric.class),
 
     /**
      * The number of unique invocations in a class or method.
      */
-    RESPONSE_FOR_A_CLASS,
+    RESPONSE_FOR_A_CLASS(IntegerMetric.class),
 
     /**
      * Counts the number of dependencies a class has.
      */
-    COUPLING_BETWEEN_OBJECTS,
+    COUPLING_BETWEEN_OBJECTS(IntegerMetric.class),
 
     /**
      * Counts how many times each variable is used.
      */
-    VARIABLES_USAGE,
+    VARIABLES_USAGE(StringToIntegerMetric.class),
 
     /**
      * Counts how many times each field is used.
      */
-    FIELD_USAGE,
+    FIELD_USAGE(StringToIntegerMetric.class),
 
     /**
      * Counts the number of static methods.
      */
-    STATIC_METHOD_COUNT,
+    STATIC_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of public methods.
      */
-    PUBLIC_METHOD_COUNT,
+    PUBLIC_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of private methods.
      */
-    PRIVATE_METHOD_COUNT,
+    PRIVATE_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of protected methods.
      */
-    PROTECTED_METHOD_COUNT,
+    PROTECTED_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of synchronized methods.
      */
-    SYNCHRONIZED_METHOD_COUNT,
+    SYNCHRONIZED_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of final methods.
      */
-    FINAL_METHOD_COUNT,
+    FINAL_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of default methods.
      */
-    DEFAULT_METHOD_COUNT,
+    DEFAULT_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of abstract methods.
      */
-    ABSTRACT_METHOD_COUNT,
+    ABSTRACT_METHOD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of public fields.
      */
-    PUBLIC_FIELD_COUNT,
+    PUBLIC_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of private fields.
      */
-    PRIVATE_FIELD_COUNT,
+    PRIVATE_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of protected fields.
      */
-    PROTECTED_FIELD_COUNT,
+    PROTECTED_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of synchronized fields.
      */
-    SYNCHRONIZED_FIELD_COUNT,
+    SYNCHRONIZED_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of final fields.
      */
-    FINAL_FIELD_COUNT,
+    FINAL_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of default fields.
      */
-    DEFAULT_FIELD_COUNT,
+    DEFAULT_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of abstract fields.
      */
-    ABSTRACT_FIELD_COUNT,
+    ABSTRACT_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts the number of static fields.
      */
-    STATIC_FIELD_COUNT,
+    STATIC_FIELD_COUNT(IntegerMetric.class),
 
     /**
      * Counts how many time a static invocation is performed in a class.
      */
-    NUMBER_OF_STATIC_INVOCATIONS,
+    NUMBER_OF_STATIC_INVOCATIONS(IntegerMetric.class),
 
     /**
      * Calculates the lack of cohesion between methods.
      */
-    LACK_OF_COHESION_OF_METHODS,
+    LACK_OF_COHESION_OF_METHODS(IntegerMetric.class),
 
     /**
      * Calculates the depth of the inheritance tree.
      */
-    DEPTH_INHERITANCE_TREE,
+    DEPTH_INHERITANCE_TREE(IntegerMetric.class),
 
     /**
      * A list of test smells.
      */
-    TEST_SMELLS,
+    TEST_SMELLS(StringSetMetric.class),
 
     /**
      * A PyLint result.
      */
-    PYLINT,
+    PYLINT(PyLintResultMetric.class),
 
     /**
      * A list of duplicate code blocks.
      */
-    DUPLICATE_CODE_BLOCKS,
+    DUPLICATE_CODE_BLOCKS(DuplicateCodeBlockListMetric.class),
 
     /**
      * Suppressed files or entities.
      */
-    SUPPRESSIONS,
+    SUPPRESSIONS(SuppressedEntityCollectionMetric.class),
 
     /**
      * The number of effective LOC in a file. That is, excluding both comment lines and blank lines.
      */
-    FILE_EFFECTIVE_LOC,
+    FILE_EFFECTIVE_LOC(IntegerMetric.class),
 
     /**
      * The total number of assertions divided by the effective lines of source code.
      */
-    RELATIVE_NUMBER_OF_ASSERTIONS,
+    RELATIVE_NUMBER_OF_ASSERTIONS(DoubleMetric.class),
 
     /**
      * The total number of testcases divided by the effective lines of source code.
      */
-    RELATIVE_NUMBER_OF_TESTCASES,
+    RELATIVE_NUMBER_OF_TESTCASES(NumberMetric.class),
 
     /**
      * The average number of assertions per testcase.
      */
-    AVERAGE_ASSERTIONS_PER_TESTCASE,
+    AVERAGE_ASSERTIONS_PER_TESTCASE(NumberMetric.class),
 
     /**
      * The total complexity of the test cases divided by the complexity of the source code.
      */
-    RELATIVE_CYCLOMATIC_COMPLEXITY,
+    RELATIVE_CYCLOMATIC_COMPLEXITY(NumberMetric.class),
 
     /**
      * Coupling between objects of the test cases divided by the coupling in the source code.
      */
-    RELATIVE_COUPLING_BETWEEN_OBJECTS,
+    RELATIVE_COUPLING_BETWEEN_OBJECTS(NumberMetric.class),
 
     /**
      * The depth of the test cases divided by the depth of the source code.
      */
-    RELATIVE_DEPTH_INHERITANCE_TREE,
+    RELATIVE_DEPTH_INHERITANCE_TREE(NumberMetric.class),
 
     /**
      * Test WMC divided by source code WMC.
      */
-    RELATIVE_WEIGHT_METHOD_CLASS,
+    RELATIVE_WEIGHT_METHOD_CLASS(NumberMetric.class),
 
     /**
      * The ratio between test code and production code.
      */
-    TEST_PRODUCTION_RATIO,
+    TEST_PRODUCTION_RATIO(NumberMetric.class),
 
     /**
      * The profanity checker metric.
      */
-    PROFANITY,
+    PROFANITY(StringListMetric.class),
 
     /**
      * The list of failing tests.
      */
-    TESTS,
+    TESTS(StringMetric.class),
 
     /**
      * Test coverage percentage.
      */
-    TEST_COVERAGE,
+    TEST_COVERAGE(DoubleMetric.class),
 
     /**
      * Checkstyle complaints.
      */
-    CHECKSTYLE,
+    CHECKSTYLE(Metric.class),
 
     /**
      * SpotBugs/FindBugs complaints.
      */
-    SPOTBUGS;
+    SPOTBUGS(Metric.class);
+
+    /**
+     * The type of the metric produced by instances with this name.
+     */
+    private final Class<? extends Metric> type;
+
+    /**
+     * Creates a new metric name.
+     *
+     * @param type the type of metric produces by instances with this name
+     */
+    MetricName(final Class<? extends Metric> type) {
+        this.type = type;
+    }
+
+    /**
+     * Returns the type of metric instances with this name accept.
+     *
+     * @return the type
+     */
+    @Contract(pure = true)
+    public Class<? extends Metric> getType() {
+        return this.type;
+    }
+
+    /**
+     * Checks whether the given metric instance is compatible with this metric name.
+     *
+     * @param instance the metric instance to check
+     *
+     * @return if the metric instance is {@code null} or if the instance is not compatible with
+     *         the type of instances this metric name expects
+     */
+    @Contract(value = "null -> false", pure = true)
+    public boolean isMetricCompatible(final @Nullable Metric<?> instance) {
+        return instance != null && this.getType().isAssignableFrom(instance.getClass());
+    }
 
     /**
      * Converts the metric name to a name without underscores and in lower case.
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricSettings.java b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricSettings.java
index 3c5de3ec94c9a2fae37e5629758fbefc4f4f2fd6..e8755447f02473dc564bf0fa08391cbdc8e4fbe0 100644
--- a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricSettings.java
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/MetricSettings.java
@@ -1,8 +1,13 @@
 package nl.tudelft.ewi.auta.common.model.metric;
 
+import nl.tudelft.ewi.auta.common.annotation.Unmodifiable;
+import nl.tudelft.ewi.auta.common.model.PassingScriptTestCase;
 import org.intellij.lang.annotations.Language;
 
 import javax.annotation.Nullable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -27,6 +32,11 @@ public class MetricSettings {
     @Nullable
     private String passingScript;
 
+    /**
+     * Unit tests for {@link #passingScript}.
+     */
+    private Collection<PassingScriptTestCase> passingScriptTestCases = Collections.emptyList();
+
     /**
      * The JavaScript function to use to format the results.
      */
@@ -67,15 +77,7 @@ public class MetricSettings {
             final @Nullable Integer maxWarnings,
             final @Nullable Integer maxFailures
     ) {
-        this.metric = metric;
-        this.passingScript = passingScript;
-        this.formattingScript = formattingScript;
-        if (maxWarnings != null) {
-            this.maxWarnings = maxWarnings;
-        }
-        if (maxFailures != null) {
-            this.maxFailures = maxFailures;
-        }
+        this(metric, passingScript, formattingScript, maxWarnings, maxFailures, null);
     }
 
     /**
@@ -126,9 +128,11 @@ public class MetricSettings {
     public MetricSettings(final MetricSettings other) {
         this.metric = other.metric;
         this.passingScript = other.passingScript;
+        this.passingScriptTestCases = List.copyOf(other.passingScriptTestCases);
         this.formattingScript = other.formattingScript;
         this.maxWarnings = other.maxWarnings;
         this.maxFailures = other.maxFailures;
+        this.dockerfile = other.dockerfile;
     }
 
     /**
@@ -170,6 +174,25 @@ public class MetricSettings {
         this.passingScript = passingScript;
     }
 
+    /**
+     * Returns the unit tests for the metric's passing script.
+     *
+     * @return the unit tests
+     */
+    @Unmodifiable
+    public Collection<PassingScriptTestCase> getPassingScriptTestCases() {
+        return this.passingScriptTestCases;
+    }
+
+    /**
+     * Sets the unit tests for the metric's passing script.
+     *
+     * @param tests the unit tests
+     */
+    public void setPassingScriptTestCases(final Collection<PassingScriptTestCase> tests) {
+        this.passingScriptTestCases = List.copyOf(tests);
+    }
+
     /**
      * Returns the script used to format the results.
      *
@@ -230,13 +253,15 @@ public class MetricSettings {
                 && Objects.equals(this.formattingScript, other.formattingScript)
                 && Objects.equals(this.maxFailures, other.maxFailures)
                 && Objects.equals(this.maxWarnings, other.maxWarnings)
-                && Objects.equals(this.dockerfile, other.dockerfile);
+                && Objects.equals(this.dockerfile, other.dockerfile)
+                && Objects.equals(this.passingScriptTestCases, other.passingScriptTestCases);
     }
 
     @Override
     public final int hashCode() {
         return Objects.hash(this.metric, this.passingScript, this.formattingScript,
-                this.maxWarnings, this.maxFailures, this.dockerfile
+                this.maxWarnings, this.maxFailures, this.dockerfile,
+                this.passingScriptTestCases
         );
     }
 }
diff --git a/src/main/java/nl/tudelft/ewi/auta/common/model/metric/NumberMetric.java b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/NumberMetric.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2e6d14a3fca176c8e4d2e56c406dfeccc650643
--- /dev/null
+++ b/src/main/java/nl/tudelft/ewi/auta/common/model/metric/NumberMetric.java
@@ -0,0 +1,18 @@
+package nl.tudelft.ewi.auta.common.model.metric;
+
+/**
+ * A type for metrics that contain single numbers.
+ *
+ * @param <T> the exact type of number stored
+ */
+public class NumberMetric<T extends Number> extends Metric<T> {
+    /**
+     * Creates a new number metric.
+     *
+     * @param value the value of the metric
+     * @param name the name of the metric
+     */
+    public NumberMetric(final T value, final MetricName name) {
+        super(value, name);
+    }
+}
diff --git a/src/main/resources/nl/tudelft/ewi/auta/common/model/metric/test-fixtures.json b/src/main/resources/nl/tudelft/ewi/auta/common/model/metric/test-fixtures.json
new file mode 100644
index 0000000000000000000000000000000000000000..a7165a9e3c9e8ec8c44548df06a1dbc0733721e6
--- /dev/null
+++ b/src/main/resources/nl/tudelft/ewi/auta/common/model/metric/test-fixtures.json
@@ -0,0 +1,428 @@
+{
+  "fixtures": {
+    "ASSEMBLY_INSTRUCTION_COUNT": [
+      3,
+      1461
+    ],
+    "ASSEMBLY_RECURSION_TARGET": [
+      [],
+      [
+        "factorial"
+      ],
+      [
+        "mult",
+        "main",
+        "factorial"
+      ]
+    ],
+    "ASSERTIONS_PER_TEST": [
+      0,
+      1,
+      3
+    ],
+    "COMMENTED_LINE_COUNT": [
+      0,
+      150
+    ],
+    "CONSTRUCTOR_COUNT": [
+      0,
+      1,
+      3,
+      14
+    ],
+    "CYCLOMATIC_COMPLEXITY": [
+      1,
+      4,
+      9,
+      12,
+      16,
+      759
+    ],
+    "DOCKER_LOGS": [
+      "BUILD FAILED",
+      "BUILD SUCCESS"
+    ],
+    "FIELD_COUNT": [
+      0,
+      3,
+      28
+    ],
+    "FILE_COUNT": [
+      0,
+      1,
+      8,
+      114
+    ],
+    "JAVADOC_EXISTS": [
+      false,
+      true
+    ],
+    "JAVADOC_VIOLATIONS": [
+      [],
+      [
+        "Missing @return statement"
+      ],
+      [
+        "Missing @param tag for parameter arg",
+        "Missing @return statement"
+      ]
+    ],
+    "LINE_LENGTH": [
+      [],
+      [
+        2,
+        2
+      ],
+      [
+        16,
+        0,
+        3,
+        72,
+        0,
+        1
+      ],
+      [
+        16,
+        0,
+        3,
+        214,
+        91,
+        18,
+        22,
+        0
+      ]
+    ],
+    "LINES_OF_CODE": [
+      0,
+      13,
+      182,
+      638,
+      21047
+    ],
+    "METHOD_COUNT": [
+      0,
+      2,
+      38
+    ],
+    "METHOD_EFFECTIVE_LOC": [
+      0,
+      8,
+      9131
+    ],
+    "PARAMETER_COUNT": [
+      0,
+      3,
+      7,
+      225
+    ],
+    "PERCENTAGE_COMMENTED_LINES": [
+      0.0,
+      0.23,
+      0.79,
+      1.0
+    ],
+    "TEST_METHOD_COUNT": [
+      0,
+      5,
+      413
+    ],
+    "MAINTAINABILITY_INDEX": [
+      0.0,
+      0.08,
+      0.13,
+      0.61,
+      1.0
+    ],
+    "UNIQUE_WORDS_COUNT": [
+      5,
+      1047
+    ],
+    "LAMBDAS_COUNT": [
+      0,
+      1,
+      17
+    ],
+    "SUBCLASSES_COUNT": [
+      0,
+      1,
+      12
+    ],
+    "ANONYMOUS_CLASSES_COUNT": [
+      0,
+      1,
+      3,
+      162
+    ],
+    "MAX_NESTED_BLOCKS": [
+      0,
+      2,
+      59
+    ],
+    "MATH_OPERATIONS_COUNT": [
+      0,
+      1,
+      10,
+      12065
+    ],
+    "ASSIGNMENTS_COUNT": [
+      0,
+      4,
+      721
+    ],
+    "NUMBER_COUNT": [
+      0,
+      2,
+      132
+    ],
+    "STRING_LITERAL_COUNT": [
+      0,
+      6,
+      613
+    ],
+    "PARENTHESIZED_EXPRESSION_COUNT": [
+      0,
+      1,
+      75
+    ],
+    "TRY_CATCH_COUNT": [
+      0,
+      1,
+      5,
+      48
+    ],
+    "COMPARISON_COUNT": [
+      0,
+      1,
+      90
+    ],
+    "LOOP_COUNT": [
+      0,
+      1,
+      14
+    ],
+    "VARIABLES_COUNT": [
+      0,
+      3,
+      53
+    ],
+    "RETURN_COUNT": [
+      0,
+      1,
+      3,
+      326
+    ],
+    "WEIGHT_METHOD_CLASS": [
+      0,
+      6,
+      527
+    ],
+    "RESPONSE_FOR_A_CLASS": [
+      0,
+      12,
+      1895
+    ],
+    "COUPLING_BETWEEN_OBJECTS": [
+      0,
+      4,
+      37,
+      172
+    ],
+    "VARIABLES_USAGE": [
+      {},
+      {
+        "i": 14
+      }
+    ],
+    "FIELD_USAGE": [
+      {},
+      {
+        "value": 3
+      }
+    ],
+    "STATIC_METHOD_COUNT": [
+      0,
+      1,
+      9
+    ],
+    "PUBLIC_METHOD_COUNT": [
+      0,
+      1,
+      8,
+      37
+    ],
+    "PRIVATE_METHOD_COUNT": [
+      0,
+      1,
+      5,
+      47
+    ],
+    "PROTECTED_METHOD_COUNT": [
+      0,
+      1,
+      3,
+      39
+    ],
+    "SYNCHRONIZED_METHOD_COUNT": [
+      0,
+      1,
+      20
+    ],
+    "FINAL_METHOD_COUNT": [
+      0,
+      1,
+      7
+    ],
+    "DEFAULT_METHOD_COUNT": [
+      0,
+      1,
+      3
+    ],
+    "ABSTRACT_METHOD_COUNT": [
+      0,
+      1,
+      6
+    ],
+    "PUBLIC_FIELD_COUNT": [
+      0,
+      1,
+      8,
+      37
+    ],
+    "PRIVATE_FIELD_COUNT": [
+      0,
+      1,
+      5,
+      47
+    ],
+    "PROTECTED_FIELD_COUNT": [
+      0,
+      1,
+      3,
+      39
+    ],
+    "SYNCHRONIZED_FIELD_COUNT": [
+      0,
+      1,
+      20
+    ],
+    "FINAL_FIELD_COUNT": [
+      0,
+      1,
+      7
+    ],
+    "DEFAULT_FIELD_COUNT": [
+      0,
+      1,
+      3
+    ],
+    "ABSTRACT_FIELD_COUNT": [
+      0,
+      1,
+      6
+    ],
+    "STATIC_FIELD_COUNT": [
+      0,
+      1,
+      9
+    ],
+    "NUMBER_OF_STATIC_INVOCATIONS": [
+      0,
+      3,
+      27
+    ],
+    "LACK_OF_COHESION_OF_METHODS": [
+      13,
+      2,
+      0
+    ],
+    "DEPTH_INHERITANCE_TREE": [
+      0,
+      1,
+      29
+    ],
+    "TEST_SMELLS": [
+      [],
+      [
+        "sleepy"
+      ]
+    ],
+    "PYLINT": [
+      []
+    ],
+    "DUPLICATE_CODE_BLOCKS": [
+      [],
+      [
+        {
+          "filenames": [],
+          "lineNumbers": [],
+          "lineCount": 3,
+          "tokenCount": 14,
+          "occurences": 2
+        }
+      ]
+    ],
+    "SUPPRESSIONS": [
+      [],
+      [
+        {
+          "name": "TestClass",
+          "justification": "for testing"
+        }
+      ]
+    ],
+    "FILE_EFFECTIVE_LOC": [
+      2,
+      38,
+      2162
+    ],
+    "RELATIVE_NUMBER_OF_ASSERTIONS": [
+      1,
+      0.0,
+      0.0021,
+      0.0153
+    ],
+    "RELATIVE_NUMBER_OF_TESTCASES": [
+      0.0,
+      0.0019,
+      0.0139
+    ],
+    "AVERAGE_ASSERTIONS_PER_TESTCASE": [
+      0.893,
+      1.027,
+      2.103
+    ],
+    "RELATIVE_CYCLOMATIC_COMPLEXITY": [
+      0.00174,
+      0.0248,
+      0.1659
+    ],
+    "RELATIVE_COUPLING_BETWEEN_OBJECTS": [
+      0.0437,
+      0.115,
+      0.721
+    ],
+    "RELATIVE_DEPTH_INHERITANCE_TREE": [
+      0.000274,
+      0.00164,
+      0.0512
+    ],
+    "RELATIVE_WEIGHT_METHOD_CLASS": [
+      0.5
+    ],
+    "TEST_PRODUCTION_RATIO": [
+      0.0,
+      0.8,
+      1.0,
+      1.2
+    ],
+    "PROFANITY": [
+      [],
+      [
+        "Line 6 contains profanity"
+      ]
+    ],
+    "TESTS": [
+      "Assertion failure"
+    ]
+  }
+}
diff --git a/src/test/java/nl/tudelft/ewi/auta/common/model/PassingScriptTestCaseTest.java b/src/test/java/nl/tudelft/ewi/auta/common/model/PassingScriptTestCaseTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b3615f100fc3e24ead5cf957ddbf880e5557f20f
--- /dev/null
+++ b/src/test/java/nl/tudelft/ewi/auta/common/model/PassingScriptTestCaseTest.java
@@ -0,0 +1,14 @@
+package nl.tudelft.ewi.auta.common.model;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+import nl.jqno.equalsverifier.Warning;
+import org.junit.jupiter.api.Test;
+
+public class PassingScriptTestCaseTest {
+    @Test
+    public void testEquals() {
+        EqualsVerifier.forClass(PassingScriptTestCase.class)
+                .suppress(Warning.NONFINAL_FIELDS)
+                .verify();
+    }
+}
diff --git a/src/test/java/nl/tudelft/ewi/auta/common/model/metric/MetricFixturesProviderTest.java b/src/test/java/nl/tudelft/ewi/auta/common/model/metric/MetricFixturesProviderTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0d815e501c683636f74dc5c84647eba32893ded
--- /dev/null
+++ b/src/test/java/nl/tudelft/ewi/auta/common/model/metric/MetricFixturesProviderTest.java
@@ -0,0 +1,18 @@
+package nl.tudelft.ewi.auta.common.model.metric;
+
+import com.google.gson.Gson;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class MetricFixturesProviderTest {
+    @Test
+    public void testGetFixtures() {
+        final var provider = new MetricFixturesProvider(new Gson());
+        final var fixtures = provider.getFixtures();
+
+        // Basic metrics that should have fixtures as a baseline
+        assertThat(fixtures)
+                .containsKeys(MetricName.CYCLOMATIC_COMPLEXITY, MetricName.LINES_OF_CODE);
+    }
+}
diff --git a/worker/src/main/java/nl/tudelft/ewi/auta/worker/control/ControlProcessor.java b/worker/src/main/java/nl/tudelft/ewi/auta/worker/control/ControlProcessor.java
index ec35bdb299192eff0af2877d4c76a45d1259dd37..04066d3e45d287bcdbe00c1e2a4a17db0e104bd6 100644
--- a/worker/src/main/java/nl/tudelft/ewi/auta/worker/control/ControlProcessor.java
+++ b/worker/src/main/java/nl/tudelft/ewi/auta/worker/control/ControlProcessor.java
@@ -200,6 +200,7 @@ public class ControlProcessor {
 
                     metric.put("name", metricName);
                     metric.put("internal_name", metricName);
+                    metric.put("value_type", metricName.getType().getSimpleName());
                     metric.put("languages", analyzer.getLanguages());
                     metric.put("class", analyzer.getType() == Job.class ? "dynamic" : "static");
                     metric.put("script_presets", scriptPresets.get(metricName));