Skip to content
Snippets Groups Projects
Commit 38532557 authored by Paul-Christian Volkmer's avatar Paul-Christian Volkmer
Browse files

Added test to check service and controller behavior if user is added

parent 92ed22c4
Branches
Tags
No related merge requests found
/*
* Copyright (C) 2012 THM webMedia
*
*
* This file is part of ARSnova.
*
* ARSnova is free software: you can redistribute it and/or modify
......@@ -20,8 +20,6 @@
package de.thm.arsnova.services;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -31,66 +29,63 @@ import de.thm.arsnova.dao.IDatabaseDao;
import de.thm.arsnova.entities.LoggedIn;
import de.thm.arsnova.entities.Session;
import de.thm.arsnova.entities.User;
import de.thm.arsnova.socket.ARSnovaSocketIOServer;
@Service
public class SessionService implements ISessionService {
@Autowired
ARSnovaSocketIOServer server;
@Autowired
IDatabaseDao databaseDao;
private IDatabaseDao databaseDao;
@Autowired
IUserService userService;
private IUserService userService;
public void setDatabaseDao(IDatabaseDao databaseDao) {
this.databaseDao = databaseDao;
public void setDatabaseDao(final IDatabaseDao newDatabaseDao) {
this.databaseDao = newDatabaseDao;
}
@Override
@Authenticated
public Session joinSession(String keyword) {
public final Session joinSession(final String keyword) {
userService.addCurrentUserToSessionMap(keyword);
return databaseDao.getSession(keyword);
}
@Override
public List<Session> getMySessions(String username) {
public final List<Session> getMySessions(final String username) {
return databaseDao.getMySessions(username);
}
@Override
@Authenticated
public Session saveSession(Session session) {
public final Session saveSession(final Session session) {
return databaseDao.saveSession(session);
}
@Override
public boolean sessionKeyAvailable(String keyword) {
public final boolean sessionKeyAvailable(final String keyword) {
return databaseDao.sessionKeyAvailable(keyword);
}
@Override
public String generateKeyword() {
public final String generateKeyword() {
final int low = 10000000;
final int high = 100000000;
String keyword = String
.valueOf((int) (Math.random() * (high - low) + low));
if (this.sessionKeyAvailable(keyword))
if (this.sessionKeyAvailable(keyword)) {
return keyword;
}
return generateKeyword();
}
@Override
@Authenticated
public LoggedIn registerAsOnlineUser(User user, String sessionkey) {
public final LoggedIn registerAsOnlineUser(final User user, final String sessionkey) {
Session session = this.joinSession(sessionkey);
if (session == null)
if (session == null) {
return null;
}
if (session.getCreator().equals(user.getUsername())) {
databaseDao.updateSessionOwnerActivity(session);
}
......
......@@ -38,7 +38,7 @@ import de.thm.arsnova.exceptions.UnauthorizedException;
public class UserService implements IUserService, InitializingBean, DisposableBean {
public static final Logger logger = LoggerFactory.getLogger(UserService.class);
public static final Logger LOGGER = LoggerFactory.getLogger(UserService.class);
private static final ConcurrentHashMap<UUID, User> socketid2user = new ConcurrentHashMap<UUID, User>();
private static final ConcurrentHashMap<String, String> user2session = new ConcurrentHashMap<String, String>();
......@@ -150,15 +150,15 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
Map<UUID, User> s2u = (Map<UUID, User>) map.get("socketid2user");
Map<String, String> u2s = (Map<String, String>) map.get("user2session");
logger.info("load from store: {}", map);
LOGGER.info("load from store: {}", map);
socketid2user.putAll(s2u);
user2session.putAll(u2s);
} catch (IOException e) {
logger.error("IOException during restoring UserService", e);
LOGGER.error("IOException during restoring UserService", e);
} catch (ClassNotFoundException e) {
logger.error("ClassNotFoundException during restoring UserService", e);
LOGGER.error("ClassNotFoundException during restoring UserService", e);
}
}
......@@ -173,7 +173,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
File store = new File(tmpDir, "arsnova.bin");
if (!store.exists()) {
if (! store.createNewFile()) {
logger.info("Could not create store file");
LOGGER.info("Could not create store file");
}
}
OutputStream file = new FileOutputStream(store);
......@@ -181,9 +181,9 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
objOut.writeObject(map);
objOut.close();
file.close();
logger.info("saved to store: {}", map);
LOGGER.info("saved to store: {}", map);
} catch (IOException e) {
logger.error("IOException while saving UserService", e);
LOGGER.error("IOException while saving UserService", e);
}
}
}
......@@ -46,13 +46,13 @@ public class StatisticsControllerTest {
}
@Test
public final void testShouldNotGetUnknownSession() throws Exception {
public final void testShouldGetCurrentOnlineUsers() throws Exception {
userService.setUserAuthenticated(true);
request.setMethod("GET");
request.setRequestURI("/statistics/activeusercount");
handlerAdapter.handle(request, response, statisticsController);
assertEquals("0", response.getContentAsString());
assertEquals("1", response.getContentAsString());
}
}
package de.thm.arsnova.dao;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
......@@ -26,6 +25,7 @@ public class StubDatabaseDao implements IDatabaseDao {
private static Map<String, Session> stubSessions = new ConcurrentHashMap<String, Session>();
private static Map<String, Feedback> stubFeedbacks = new ConcurrentHashMap<String, Feedback>();
private static Map<String, List<Question>> stubQuestions = new ConcurrentHashMap<String, List<Question>>();
private static Map<String, User> stubUsers = new ConcurrentHashMap<String, User>();
public StubDatabaseDao() {
fillWithDummySessions();
......@@ -167,8 +167,9 @@ public class StubDatabaseDao implements IDatabaseDao {
@Override
public LoggedIn registerAsOnlineUser(User u, Session s) {
// TODO Auto-generated method stub
return null;
stubUsers.put(s.getKeyword(), u);
System.out.println("X");
return new LoggedIn();
}
@Override
......@@ -227,8 +228,7 @@ public class StubDatabaseDao implements IDatabaseDao {
@Override
public int getActiveUsers(long since) {
// TODO Auto-generated method stub
return 0;
return stubUsers.size();
}
}
......@@ -8,6 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import de.thm.arsnova.dao.StubDatabaseDao;
import de.thm.arsnova.entities.Session;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
......@@ -20,10 +22,25 @@ public class StatisticsServiceTest {
@Autowired
private IStatisticsService statisticsService;
@Autowired
private StubUserService userService;
@Autowired
private StubDatabaseDao databaseDao;
@Test
public final void testShouldReturnCurrentActiveUsers() {
public final void testShouldReturnNoActiveUsers() {
int actual = statisticsService.countActiveUsers();
//assertEquals(0, actual);
assertEquals(0, actual);
}
@Test
public final void testShouldReturnCurrentActiveUsers() {
Session session = new Session();
session.setKeyword("1278127812");
databaseDao.registerAsOnlineUser(userService.getCurrentUser(), session);
int actual = statisticsService.countActiveUsers();
assertEquals(1, actual);
}
}
package de.thm.arsnova.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import de.thm.arsnova.dao.StubDatabaseDao;
import de.thm.arsnova.entities.User;
public class StubUserService extends UserService {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment