/*
* PatientView
*
* Copyright (c) Worth Solutions Limited 2004-2013
*
* This file is part of PatientView.
*
* PatientView is free software: you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
* PatientView is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along with PatientView in a file
* titled COPYING. If not, see <http://www.gnu.org/licenses/>.
*
* @package PatientView
* @link http://www.patientview.org
* @author PatientView <info@patientview.org>
* @copyright Copyright (c) 2004-2013, Worth Solutions Limited
* @license http://www.gnu.org/licenses/gpl-3.0.html The GNU General Public License V3.0
*/
package org.patientview.test.repository;
import org.patientview.patientview.model.EmailVerification;
import org.patientview.repository.EmailVerificationDao;
import org.junit.Test;
import javax.inject.Inject;
import java.util.Calendar;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
public class EmailVerificationDaoTest extends BaseDaoTest {
@Inject
private EmailVerificationDao emailVerificationDao;
@Test
public void testAddGetEmailVerification() throws Exception {
EmailVerification emailVerification = getTestObject("test", "test@test.com",
"InTigEdjeUBE9LmcKel8Xmd7CQqwYNeHS4o8XpjefSEu1hlx8g", Calendar.getInstance(), Calendar.getInstance());
emailVerificationDao.save(emailVerification);
assertTrue("Invalid id for new email verification", emailVerification.getId() > 0);
EmailVerification checkEmailVerification = emailVerificationDao.get(emailVerification.getId());
assertNotNull(checkEmailVerification);
assertEquals("Username not stored", emailVerification.getUsername(), checkEmailVerification.getUsername());
assertEquals("Email not stored", emailVerification.getEmail(), checkEmailVerification.getEmail());
assertEquals("Verification code not stored", emailVerification.getVerificationcode(),
checkEmailVerification.getVerificationcode());
assertEquals("Expiry date stamp not stored", emailVerification.getExpirydatestamp(),
checkEmailVerification.getExpirydatestamp());
assertEquals("Last Verification Date not stored", emailVerification.getLastverificationdate(),
checkEmailVerification.getLastverificationdate());
}
@Test
public void testGetEmailVerificationByVerificationCode() throws Exception {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 5); // need the expiry to be in the future
EmailVerification emailVerification1 = getTestObject("test", "test@test.com",
"InTigEdjeUBE9LmcKel8Xmd7CQqwYNeHS4o8XpjefSEu1hlx81", calendar, Calendar.getInstance());
emailVerificationDao.save(emailVerification1);
assertTrue("Invalid id for email verification 1", emailVerification1.getId() > 0);
// create a 2nd just to make sure it doesnt get pulled back
EmailVerification emailVerification2 = getTestObject("test", "test@test.com",
"InTigEdjeUBE9LmcKel8Xmd7CQqwYNeHS4o8XpjefSEu1hlx82", Calendar.getInstance(), Calendar.getInstance());
emailVerificationDao.save(emailVerification2);
assertTrue("Invalid id for email verification 2", emailVerification2.getId() > 0);
List<EmailVerification> checkEmailVerifications =
emailVerificationDao.get(emailVerification1.getVerificationcode());
assertNotNull(checkEmailVerifications);
assertTrue("No email verifications found", !checkEmailVerifications.isEmpty()
&& checkEmailVerifications.size() > 0);
assertTrue("To many email verifications found", checkEmailVerifications.size() == 1);
}
@Test
public void testNonReturnOfExpiredVerificationCodes() throws Exception {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -5); // need the expiry to be in the past
EmailVerification emailVerification = getTestObject("test", "test@test.com",
"InTigEdjeUBE9LmcKel8Xmd7CQqwYNeHS4o8XpjefSEu1hlx81", calendar, Calendar.getInstance());
emailVerificationDao.save(emailVerification);
assertTrue("Invalid id for email verification", emailVerification.getId() > 0);
List<EmailVerification> checkEmailVerifications =
emailVerificationDao.get(emailVerification.getVerificationcode());
assertNotNull(checkEmailVerifications);
assertTrue("Email verifications found", checkEmailVerifications.isEmpty());
}
@Test
public void testDeleteEmailVerificationByUsername() throws Exception {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 5);
EmailVerification emailVerification = getTestObject("test", "test@test.com",
"InTigEdjeUBE9LmcKel8Xmd7CQqwYNeHS4o8XpjefSEu1hlx81", calendar, Calendar.getInstance());
emailVerificationDao.save(emailVerification);
assertTrue("Invalid id for email verification", emailVerification.getId() > 0);
emailVerificationDao.delete(emailVerification.getUsername());
List<EmailVerification> checkEmailVerifications = emailVerificationDao.get(
emailVerification.getVerificationcode());
assertTrue(checkEmailVerifications.isEmpty());
}
private EmailVerification getTestObject(String username, String email, String verificationCode,
Calendar expiryDate, Calendar lastverificationdate) {
EmailVerification emailVerification = new EmailVerification();
emailVerification.setUsername(username);
emailVerification.setEmail(email);
emailVerification.setVerificationcode(verificationCode);
emailVerification.setExpirydatestamp(expiryDate);
emailVerification.setLastverificationdate(lastverificationdate);
return emailVerification;
}
}