aboutsummaryrefslogtreecommitdiff
path: root/subsonic-main/src/test/java/net/sourceforge/subsonic/dao/UserDaoTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'subsonic-main/src/test/java/net/sourceforge/subsonic/dao/UserDaoTestCase.java')
-rw-r--r--subsonic-main/src/test/java/net/sourceforge/subsonic/dao/UserDaoTestCase.java230
1 files changed, 230 insertions, 0 deletions
diff --git a/subsonic-main/src/test/java/net/sourceforge/subsonic/dao/UserDaoTestCase.java b/subsonic-main/src/test/java/net/sourceforge/subsonic/dao/UserDaoTestCase.java
new file mode 100644
index 00000000..24dc9ec5
--- /dev/null
+++ b/subsonic-main/src/test/java/net/sourceforge/subsonic/dao/UserDaoTestCase.java
@@ -0,0 +1,230 @@
+package net.sourceforge.subsonic.dao;
+
+import java.util.Date;
+import java.util.Locale;
+
+import org.springframework.dao.DataIntegrityViolationException;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import net.sourceforge.subsonic.domain.AvatarScheme;
+import net.sourceforge.subsonic.domain.TranscodeScheme;
+import net.sourceforge.subsonic.domain.User;
+import net.sourceforge.subsonic.domain.UserSettings;
+
+/**
+ * Unit test of {@link UserDao}.
+ *
+ * @author Sindre Mehus
+ */
+public class UserDaoTestCase extends DaoTestCaseBase {
+
+ @Override
+ protected void setUp() throws Exception {
+ JdbcTemplate template = getJdbcTemplate();
+ template.execute("delete from user_role");
+ template.execute("delete from user");
+ }
+
+ public void testCreateUser() {
+ User user = new User("sindre", "secret", "sindre@activeobjects.no", false, 1000L, 2000L, 3000L);
+ user.setAdminRole(true);
+ user.setCommentRole(true);
+ user.setCoverArtRole(true);
+ user.setDownloadRole(false);
+ user.setPlaylistRole(true);
+ user.setUploadRole(false);
+ user.setPodcastRole(true);
+ user.setStreamRole(true);
+ user.setJukeboxRole(true);
+ user.setSettingsRole(true);
+ userDao.createUser(user);
+
+ User newUser = userDao.getAllUsers().get(0);
+ assertUserEquals(user, newUser);
+ }
+
+ public void testUpdateUser() {
+ User user = new User("sindre", "secret", null);
+ user.setAdminRole(true);
+ user.setCommentRole(true);
+ user.setCoverArtRole(true);
+ user.setDownloadRole(false);
+ user.setPlaylistRole(true);
+ user.setUploadRole(false);
+ user.setPodcastRole(true);
+ user.setStreamRole(true);
+ user.setJukeboxRole(true);
+ user.setSettingsRole(true);
+ userDao.createUser(user);
+
+ user.setPassword("foo");
+ user.setEmail("sindre@foo.bar");
+ user.setLdapAuthenticated(true);
+ user.setBytesStreamed(1);
+ user.setBytesDownloaded(2);
+ user.setBytesUploaded(3);
+ user.setAdminRole(false);
+ user.setCommentRole(false);
+ user.setCoverArtRole(false);
+ user.setDownloadRole(true);
+ user.setPlaylistRole(false);
+ user.setUploadRole(true);
+ user.setPodcastRole(false);
+ user.setStreamRole(false);
+ user.setJukeboxRole(false);
+ user.setSettingsRole(false);
+ userDao.updateUser(user);
+
+ User newUser = userDao.getAllUsers().get(0);
+ assertUserEquals(user, newUser);
+ assertEquals("Wrong bytes streamed.", 1, newUser.getBytesStreamed());
+ assertEquals("Wrong bytes downloaded.", 2, newUser.getBytesDownloaded());
+ assertEquals("Wrong bytes uploaded.", 3, newUser.getBytesUploaded());
+ }
+
+ public void testGetUserByName() {
+ User user = new User("sindre", "secret", null);
+ userDao.createUser(user);
+
+ User newUser = userDao.getUserByName("sindre");
+ assertNotNull("Error in getUserByName().", newUser);
+ assertUserEquals(user, newUser);
+
+ assertNull("Error in getUserByName().", userDao.getUserByName("sindre2"));
+ assertNull("Error in getUserByName().", userDao.getUserByName("sindre "));
+ assertNull("Error in getUserByName().", userDao.getUserByName("bente"));
+ assertNull("Error in getUserByName().", userDao.getUserByName(""));
+ assertNull("Error in getUserByName().", userDao.getUserByName(null));
+ }
+
+ public void testDeleteUser() {
+ assertEquals("Wrong number of users.", 0, userDao.getAllUsers().size());
+
+ userDao.createUser(new User("sindre", "secret", null));
+ assertEquals("Wrong number of users.", 1, userDao.getAllUsers().size());
+
+ userDao.createUser(new User("bente", "secret", null));
+ assertEquals("Wrong number of users.", 2, userDao.getAllUsers().size());
+
+ userDao.deleteUser("sindre");
+ assertEquals("Wrong number of users.", 1, userDao.getAllUsers().size());
+
+ userDao.deleteUser("bente");
+ assertEquals("Wrong number of users.", 0, userDao.getAllUsers().size());
+ }
+
+ public void testGetRolesForUser() {
+ User user = new User("sindre", "secret", null);
+ user.setAdminRole(true);
+ user.setCommentRole(true);
+ user.setPodcastRole(true);
+ user.setStreamRole(true);
+ user.setSettingsRole(true);
+ userDao.createUser(user);
+
+ String[] roles = userDao.getRolesForUser("sindre");
+ assertEquals("Wrong number of roles.", 5, roles.length);
+ assertEquals("Wrong role.", "admin", roles[0]);
+ assertEquals("Wrong role.", "comment", roles[1]);
+ assertEquals("Wrong role.", "podcast", roles[2]);
+ assertEquals("Wrong role.", "stream", roles[3]);
+ assertEquals("Wrong role.", "settings", roles[4]);
+ }
+
+ public void testUserSettings() {
+ assertNull("Error in getUserSettings.", userDao.getUserSettings("sindre"));
+
+ try {
+ userDao.updateUserSettings(new UserSettings("sindre"));
+ fail("Expected DataIntegrityViolationException.");
+ } catch (DataIntegrityViolationException x) {
+ }
+
+ userDao.createUser(new User("sindre", "secret", null));
+ assertNull("Error in getUserSettings.", userDao.getUserSettings("sindre"));
+
+ userDao.updateUserSettings(new UserSettings("sindre"));
+ UserSettings userSettings = userDao.getUserSettings("sindre");
+ assertNotNull("Error in getUserSettings().", userSettings);
+ assertNull("Error in getUserSettings().", userSettings.getLocale());
+ assertNull("Error in getUserSettings().", userSettings.getThemeId());
+ assertFalse("Error in getUserSettings().", userSettings.isFinalVersionNotificationEnabled());
+ assertFalse("Error in getUserSettings().", userSettings.isBetaVersionNotificationEnabled());
+ assertFalse("Error in getUserSettings().", userSettings.isLastFmEnabled());
+ assertNull("Error in getUserSettings().", userSettings.getLastFmUsername());
+ assertNull("Error in getUserSettings().", userSettings.getLastFmPassword());
+ assertSame("Error in getUserSettings().", TranscodeScheme.OFF, userSettings.getTranscodeScheme());
+ assertFalse("Error in getUserSettings().", userSettings.isShowNowPlayingEnabled());
+ assertEquals("Error in getUserSettings().", -1, userSettings.getSelectedMusicFolderId());
+ assertFalse("Error in getUserSettings().", userSettings.isPartyModeEnabled());
+ assertFalse("Error in getUserSettings().", userSettings.isNowPlayingAllowed());
+ assertSame("Error in getUserSettings().", AvatarScheme.NONE, userSettings.getAvatarScheme());
+ assertNull("Error in getUserSettings().", userSettings.getSystemAvatarId());
+
+ UserSettings settings = new UserSettings("sindre");
+ settings.setLocale(Locale.SIMPLIFIED_CHINESE);
+ settings.setThemeId("midnight");
+ settings.setBetaVersionNotificationEnabled(true);
+ settings.getMainVisibility().setCaptionCutoff(42);
+ settings.getMainVisibility().setBitRateVisible(true);
+ settings.getPlaylistVisibility().setCaptionCutoff(44);
+ settings.getPlaylistVisibility().setYearVisible(true);
+ settings.setLastFmEnabled(true);
+ settings.setLastFmUsername("last_user");
+ settings.setLastFmPassword("last_pass");
+ settings.setTranscodeScheme(TranscodeScheme.MAX_192);
+ settings.setShowNowPlayingEnabled(false);
+ settings.setSelectedMusicFolderId(3);
+ settings.setPartyModeEnabled(true);
+ settings.setNowPlayingAllowed(true);
+ settings.setAvatarScheme(AvatarScheme.SYSTEM);
+ settings.setSystemAvatarId(1);
+ settings.setChanged(new Date(9412L));
+
+ userDao.updateUserSettings(settings);
+ userSettings = userDao.getUserSettings("sindre");
+ assertNotNull("Error in getUserSettings().", userSettings);
+ assertEquals("Error in getUserSettings().", Locale.SIMPLIFIED_CHINESE, userSettings.getLocale());
+ assertEquals("Error in getUserSettings().", false, userSettings.isFinalVersionNotificationEnabled());
+ assertEquals("Error in getUserSettings().", true, userSettings.isBetaVersionNotificationEnabled());
+ assertEquals("Error in getUserSettings().", "midnight", userSettings.getThemeId());
+ assertEquals("Error in getUserSettings().", 42, userSettings.getMainVisibility().getCaptionCutoff());
+ assertEquals("Error in getUserSettings().", true, userSettings.getMainVisibility().isBitRateVisible());
+ assertEquals("Error in getUserSettings().", 44, userSettings.getPlaylistVisibility().getCaptionCutoff());
+ assertEquals("Error in getUserSettings().", true, userSettings.getPlaylistVisibility().isYearVisible());
+ assertEquals("Error in getUserSettings().", true, userSettings.isLastFmEnabled());
+ assertEquals("Error in getUserSettings().", "last_user", userSettings.getLastFmUsername());
+ assertEquals("Error in getUserSettings().", "last_pass", userSettings.getLastFmPassword());
+ assertSame("Error in getUserSettings().", TranscodeScheme.MAX_192, userSettings.getTranscodeScheme());
+ assertFalse("Error in getUserSettings().", userSettings.isShowNowPlayingEnabled());
+ assertEquals("Error in getUserSettings().", 3, userSettings.getSelectedMusicFolderId());
+ assertTrue("Error in getUserSettings().", userSettings.isPartyModeEnabled());
+ assertTrue("Error in getUserSettings().", userSettings.isNowPlayingAllowed());
+ assertSame("Error in getUserSettings().", AvatarScheme.SYSTEM, userSettings.getAvatarScheme());
+ assertEquals("Error in getUserSettings().", 1, userSettings.getSystemAvatarId().intValue());
+ assertEquals("Error in getUserSettings().", new Date(9412L), userSettings.getChanged());
+
+ userDao.deleteUser("sindre");
+ assertNull("Error in cascading delete.", userDao.getUserSettings("sindre"));
+ }
+
+ private void assertUserEquals(User expected, User actual) {
+ assertEquals("Wrong name.", expected.getUsername(), actual.getUsername());
+ assertEquals("Wrong password.", expected.getPassword(), actual.getPassword());
+ assertEquals("Wrong email.", expected.getEmail(), actual.getEmail());
+ assertEquals("Wrong LDAP auth.", expected.isLdapAuthenticated(), actual.isLdapAuthenticated());
+ assertEquals("Wrong bytes streamed.", expected.getBytesStreamed(), actual.getBytesStreamed());
+ assertEquals("Wrong bytes downloaded.", expected.getBytesDownloaded(), actual.getBytesDownloaded());
+ assertEquals("Wrong bytes uploaded.", expected.getBytesUploaded(), actual.getBytesUploaded());
+ assertEquals("Wrong admin role.", expected.isAdminRole(), actual.isAdminRole());
+ assertEquals("Wrong comment role.", expected.isCommentRole(), actual.isCommentRole());
+ assertEquals("Wrong cover art role.", expected.isCoverArtRole(), actual.isCoverArtRole());
+ assertEquals("Wrong download role.", expected.isDownloadRole(), actual.isDownloadRole());
+ assertEquals("Wrong playlist role.", expected.isPlaylistRole(), actual.isPlaylistRole());
+ assertEquals("Wrong upload role.", expected.isUploadRole(), actual.isUploadRole());
+ assertEquals("Wrong upload role.", expected.isUploadRole(), actual.isUploadRole());
+ assertEquals("Wrong stream role.", expected.isStreamRole(), actual.isStreamRole());
+ assertEquals("Wrong jukebox role.", expected.isJukeboxRole(), actual.isJukeboxRole());
+ assertEquals("Wrong settings role.", expected.isSettingsRole(), actual.isSettingsRole());
+ }
+} \ No newline at end of file