package com.devicehive.dao;
/*
* #%L
* DeviceHive Dao Riak Implementation
* %%
* Copyright (C) 2016 DataArt
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import com.devicehive.dao.riak.UserNetworkDaoRiakImpl;
import com.devicehive.dao.riak.model.UserNetwork;
import com.devicehive.model.enums.UserStatus;
import com.devicehive.vo.NetworkVO;
import com.devicehive.vo.UserVO;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import java.util.Optional;
import java.util.Set;
import static org.junit.Assert.*;
public class UserDaoTest {
@Autowired
private UserDao userDao;
@Autowired
private NetworkDao networkDao;
@Autowired(required = false)
private UserNetworkDaoRiakImpl userNetworkDao;
@Autowired
ApplicationContext ctx;
@Before
public void beforeMethod() {
org.junit.Assume.assumeTrue(ctx.getEnvironment().acceptsProfiles("riak"));
}
@Test
public void testCreate() throws Exception {
UserVO user = new UserVO();
user.setId(100L);
user.setLogin(RandomStringUtils.randomAlphabetic(10));
userDao.persist(user);
UserVO newUser = userDao.find(100L);
assertNotNull(newUser);
}
@Test
public void testDelete() throws Exception {
UserVO user = new UserVO();
user.setId(100L);
userDao.persist(user);
userDao.deleteById(100L);
UserVO newUser = userDao.find(100L);
assertNull(newUser);
}
@Test
public void testMerge() throws Exception {
UserVO user = new UserVO();
user.setId(100L);
user.setLogin("before merge");
userDao.persist(user);
user.setLogin("after merge");
userDao.merge(user);
UserVO newUser = userDao.find(100L);
assertEquals("after merge", newUser.getLogin());
}
public void testFindByName() throws Exception {
UserVO user = new UserVO();
Long id = 100L;
user.setId(id);
user.setLogin("login");
userDao.persist(user);
Optional<UserVO> newUser = userDao.findByName("login");
assertTrue(newUser.isPresent());
assertEquals(id, newUser.get().getId());
}
@Test
public void testFindByGoogleName() throws Exception {
UserVO user = new UserVO();
Long id = 100L;
user.setId(id);
user.setGoogleLogin("google login");
userDao.persist(user);
UserVO newUser = userDao.findByGoogleName("google login");
assertEquals(id, newUser.getId());
}
@Test
public void testFindByFacebookName() throws Exception {
UserVO user = new UserVO();
Long id = 100L;
user.setId(id);
user.setFacebookLogin("facebook login");
userDao.persist(user);
UserVO newUser = userDao.findByFacebookName("facebook login");
assertEquals(id, newUser.getId());
}
@Test
public void testFindByGithubName() throws Exception {
UserVO user = new UserVO();
Long id = 100L;
user.setId(id);
user.setGithubLogin("github login");
userDao.persist(user);
UserVO newUser = userDao.findByGithubName("github login");
assertEquals(id, newUser.getId());
}
@Test
public void testFindByIdentityName() throws Exception {
UserVO user = new UserVO();
Long id = 100L;
user.setId(id);
user.setLogin("login");
user.setGoogleLogin("google login");
user.setFacebookLogin("facebook login");
user.setGithubLogin("github login");
user.setStatus(UserStatus.ACTIVE);
userDao.persist(user);
Optional<UserVO> emptyUser = userDao.findByIdentityName("login", "google login", "facebook login", "github login");
assertFalse(emptyUser.isPresent());
Optional<UserVO> presentGoogle = userDao.findByIdentityName("l", "google login", "", "");
assertTrue(presentGoogle.isPresent());
Optional<UserVO> presentFacebook = userDao.findByIdentityName("l", "", "facebook login", "");
assertTrue(presentFacebook.isPresent());
Optional<UserVO> presentGithub = userDao.findByIdentityName("l", "", "", "github login");
assertTrue(presentGithub.isPresent());
}
@Test
public void testHasAccessToNetwork() throws Exception {
UserVO user = new UserVO();
Long id = 100L;
user.setId(id);
userDao.persist(user);
NetworkVO network = new NetworkVO();
network.setId(64L);
long hasAccess = userDao.hasAccessToNetwork(user, network);
assertEquals(0L, hasAccess);
UserNetwork userNetwork = new UserNetwork();
userNetwork.setUserId(100L);
userNetwork.setNetworkId(64L);
userNetworkDao.persist(userNetwork);
hasAccess = userDao.hasAccessToNetwork(user, network);
assertEquals(1L, hasAccess);
}
@Test
public void testUnassignNetwork() throws Exception {
UserVO user = new UserVO();
Long id = 100L;
user.setId(id);
userDao.persist(user);
UserNetwork userNetwork = new UserNetwork();
userNetwork.setUserId(100L);
userNetwork.setNetworkId(64L);
userNetworkDao.persist(userNetwork);
UserNetwork userNetwork2 = new UserNetwork();
userNetwork2.setUserId(100L);
userNetwork2.setNetworkId(65L);
userNetworkDao.persist(userNetwork2);
userDao.unassignNetwork(user, 64L);
Set userNetworks = userNetworkDao.findNetworksForUser(id);
assertFalse(userNetworks.contains(64L));
assertTrue(userNetworks.contains(65L));
}
}