/*
* Copyright (c) 2009-2010 Lockheed Martin Corporation
*
* 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.
*/
package org.eurekastreams.server.persistence;
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.eurekastreams.commons.hibernate.QueryOptimizer;
import org.eurekastreams.server.domain.PersistentLogin;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Test class for JpaPersistentLoginMapper.
*
*/
public class PersistentLoginMapperTest extends DomainEntityMapperTest
{
/**
* id of persistentLogin entry in DBUnit.
*/
private final int idInDb = 696;
/**
* Expiration date value used for creation of PersistentLogin objects.
*/
private final long expiryDate = 999999L;
/**
* JpaPersistentLoginMapper - system under test.
*/
@Autowired
private PersistentLoginMapper jpaPersistentLoginMapper;
/**
* Autowired QueryOptimizer.
*/
@Autowired
private QueryOptimizer queryOptimizer;
/**
* Make sure we can find a PersistentLogin when we ask for the account id.
*/
@Test
public void testFindByAccountId()
{
assertEquals(idInDb, jpaPersistentLoginMapper.findByAccountId("mrburns").getId());
}
/**
* Test Delete by username.
*/
@Test
public void testDeletePersistentLoginByUserName()
{
jpaPersistentLoginMapper.deletePersistentLogin("mrburns");
PersistentLogin foo = jpaPersistentLoginMapper.findByAccountId("mrburns");
assertNull("PersistentLogin still present after delete", foo);
}
/**
* test createOrUpdate create token expiration.
*/
@Test
public void testCreateOrUpdateCreateTokenExpirationDate()
{
PersistentLogin login = new PersistentLogin("homer", "doh", expiryDate);
jpaPersistentLoginMapper.createOrUpdate(login);
PersistentLogin sutResult = jpaPersistentLoginMapper.findByAccountId("homer");
assertTrue("PersistentLogin id is zero, create didn't happen", 0L != sutResult.getId());
assertEquals("PersistentLogin tokenExpirationDate not created correctly", expiryDate, sutResult
.getTokenExpirationDate());
}
/**
* test createOrUpdate update token expiration date.
*/
@Test
public void testCreateOrUpdateUpdateTokenExpirationDate()
{
// this user is already in db so update should happen.
PersistentLogin login = new PersistentLogin("mrburns", "excellent1", expiryDate);
jpaPersistentLoginMapper.createOrUpdate(login);
PersistentLogin sutResult = jpaPersistentLoginMapper.findByAccountId("mrburns");
assertEquals("PersistentLogin id is not same as original, update didn't happen", idInDb, sutResult.getId());
assertEquals("PersistentLogin tokenExpirationDate not updated correctly", expiryDate, sutResult
.getTokenExpirationDate());
}
/**
* test createOrUpdate create token value.
*/
@Test
public void testCreateOrUpdateCreateTokenValue()
{
PersistentLogin login = new PersistentLogin("flanders", "diddly", expiryDate);
jpaPersistentLoginMapper.createOrUpdate(login);
PersistentLogin sutResult = jpaPersistentLoginMapper.findByAccountId("flanders");
assertTrue("PersistentLogin id is zero, create didn't happen", 0L != sutResult.getId());
assertEquals("PersistentLogin tokenValue not created correctly", "diddly", sutResult.getTokenValue());
}
/**
* Test createOrUpdate update token value.
*/
@Test
public void testCreateOrUpdateUpdateTokenValue()
{
// this user is already in db so update should happen.
PersistentLogin login = new PersistentLogin("mrburns", "excellent", expiryDate);
jpaPersistentLoginMapper.createOrUpdate(login);
PersistentLogin sutResult = jpaPersistentLoginMapper.findByAccountId("mrburns");
assertEquals("PersistentLogin id is not same as original, update didn't happen", idInDb, sutResult.getId());
assertEquals("PersistentLogin tokenValue not updated", "excellent", sutResult.getTokenValue());
}
/**
* Basic test to ensure the setTheme works properly.
*/
@Test
public void testGetDomainEntityName()
{
PersistentLoginMapperSubClassSupport testSubClass = new PersistentLoginMapperSubClassSupport(queryOptimizer);
assertEquals("getDomainEntityName() doesn't return PersistentLogin", "PersistentLogin", testSubClass
.getDomainEntityName());
}
}