diff --git a/src/main/java/de/thm/arsnova/controller/AbstractController.java b/src/main/java/de/thm/arsnova/controller/AbstractController.java
index 983a998ce5b76151836096d4d81047a7f61a35cd..755a5625b6b01262b89c700902282acbd20491bc 100644
--- a/src/main/java/de/thm/arsnova/controller/AbstractController.java
+++ b/src/main/java/de/thm/arsnova/controller/AbstractController.java
@@ -12,6 +12,7 @@ import de.thm.arsnova.exceptions.BadRequestException;
 import de.thm.arsnova.exceptions.ForbiddenException;
 import de.thm.arsnova.exceptions.NoContentException;
 import de.thm.arsnova.exceptions.NotFoundException;
+import de.thm.arsnova.exceptions.NotImplementedException;
 import de.thm.arsnova.exceptions.PreconditionFailedException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 
@@ -58,4 +59,9 @@ public class AbstractController {
 	@ExceptionHandler(PreconditionFailedException.class)
 	public void handlePreconditionFailedException(final Exception e, final HttpServletRequest request) {
 	}
+
+	@ResponseStatus(HttpStatus.NOT_IMPLEMENTED)
+	@ExceptionHandler(NotImplementedException.class)
+	public void handleNotImplementedException(final Exception e, final HttpServletRequest request) {
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/controller/CourseController.java b/src/main/java/de/thm/arsnova/controller/CourseController.java
index 4276c453aade6a3b15538e9e6c248fd8c1d85311..b6178e368c3c1ae0a2c0ce3cc2909c6ca5a92262 100644
--- a/src/main/java/de/thm/arsnova/controller/CourseController.java
+++ b/src/main/java/de/thm/arsnova/controller/CourseController.java
@@ -35,7 +35,8 @@ import org.springframework.web.bind.annotation.RestController;
 import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.connector.model.UserRole;
-import de.thm.arsnova.exceptions.NotFoundException;
+import de.thm.arsnova.entities.User;
+import de.thm.arsnova.exceptions.NotImplementedException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 import de.thm.arsnova.services.IUserService;
 
@@ -55,19 +56,20 @@ public class CourseController extends AbstractController {
 	public final List<Course> myCourses(
 			@RequestParam(value = "sortby", defaultValue = "name") final String sortby
 			) {
-		String username = userService.getCurrentUser().getUsername();
 
-		if (username == null) {
+		final User currentUser = userService.getCurrentUser();
+
+		if (currentUser == null || currentUser.getUsername() == null) {
 			throw new UnauthorizedException();
 		}
 
 		if (connectorClient == null) {
-			throw new NotFoundException();
+			throw new NotImplementedException();
 		}
 
-		List<Course> result = new ArrayList<Course>();
+		final List<Course> result = new ArrayList<Course>();
 
-		for (Course course : connectorClient.getCourses(username).getCourse()) {
+		for (final Course course : connectorClient.getCourses(currentUser.getUsername()).getCourse()) {
 			if (
 					course.getMembership().isMember()
 					&& course.getMembership().getUserrole().equals(UserRole.TEACHER)
@@ -76,7 +78,7 @@ public class CourseController extends AbstractController {
 			}
 		}
 
-		if (sortby != null && sortby.equals("shortname")) {
+		if ("shortname".equals(sortby)) {
 			Collections.sort(result, new CourseShortNameComperator());
 		} else {
 			Collections.sort(result, new CourseNameComperator());
@@ -89,7 +91,7 @@ public class CourseController extends AbstractController {
 		private static final long serialVersionUID = 1L;
 
 		@Override
-		public int compare(Course course1, Course course2) {
+		public int compare(final Course course1, final Course course2) {
 			return course1.getFullname().compareToIgnoreCase(course2.getFullname());
 		}
 	}
@@ -98,7 +100,7 @@ public class CourseController extends AbstractController {
 		private static final long serialVersionUID = 1L;
 
 		@Override
-		public int compare(Course course1, Course course2) {
+		public int compare(final Course course1, final Course course2) {
 			return course1.getShortname().compareToIgnoreCase(course2.getShortname());
 		}
 	}
diff --git a/src/test/java/de/thm/arsnova/controller/CourseControllerTest.java b/src/test/java/de/thm/arsnova/controller/CourseControllerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..7b122982ca65b02e078cdf85140ceea5efca3dcc
--- /dev/null
+++ b/src/test/java/de/thm/arsnova/controller/CourseControllerTest.java
@@ -0,0 +1,85 @@
+package de.thm.arsnova.controller;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+
+import de.thm.arsnova.connector.client.ConnectorClient;
+import de.thm.arsnova.services.StubUserService;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@WebAppConfiguration
+@ContextConfiguration(locations = {
+		"file:src/main/webapp/WEB-INF/spring/arsnova-servlet.xml",
+		"file:src/main/webapp/WEB-INF/spring/spring-main.xml",
+		"file:src/main/webapp/WEB-INF/spring/spring-security.xml",
+		"file:src/test/resources/test-config.xml",
+		"file:src/test/resources/test-socketioconfig.xml"
+})
+public class CourseControllerTest {
+
+	private MockMvc mockMvc;
+
+	@InjectMocks
+	private final CourseController courseController = new CourseController();
+
+	@Autowired
+	private WebApplicationContext webApplicationContext;
+
+	@Autowired
+	private StubUserService userService;
+
+	@Mock
+	private ConnectorClient connectorClient;
+
+	private void setAuthenticated(final boolean isAuthenticated, final String username) {
+		if (isAuthenticated) {
+			final List<GrantedAuthority> ga = new ArrayList<GrantedAuthority>();
+			final UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, "secret", ga);
+			SecurityContextHolder.getContext().setAuthentication(token);
+			userService.setUserAuthenticated(isAuthenticated, username);
+		} else {
+			userService.setUserAuthenticated(isAuthenticated);
+		}
+	}
+
+	@Before
+	public void setup() {
+		mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
+	}
+
+	@Test
+	public final void testShouldIndicateNotImplementedIfInactiveClient() throws Exception {
+		setAuthenticated(true, "ptsr00");
+
+		mockMvc.perform(get("/mycourses").accept(MediaType.TEXT_PLAIN))
+		.andExpect(status().isNotImplemented());
+	}
+
+	@Test
+	public final void testShouldNotReturnCurrentUsersCoursesIfUnauthorized() throws Exception {
+		setAuthenticated(false, "nobody");
+
+		mockMvc.perform(get("/mycourses").accept(MediaType.TEXT_PLAIN))
+		.andExpect(status().isUnauthorized());
+	}
+}