/**
 * ÀÌ ¼Ò½º´Â Spring ÇÁ·¹ÀÓ¿öÅ© ¿öÅ©ºÏ¿¡¼­ »ç¿ëÇÑ ¿¹Á¦ ¼Ò½ºÀÔ´Ï´Ù. 
 * ÀÌ ¼Ò½º´Â ¸ðµç °³¹ßÀÚµéÀÌ ÀÚÀ¯·Ó°Ô ¼öÁ¤ ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. 
 * ´Ü, ÀÌ ¼Ò½º¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ¾ÖÇÃ¸®ÄÉÀÌ¼ÇÀ» °³¹ßÇÒ °æ¿ì ÃâÃ³¸¦ ¸í½ÃÇØ ÁÖ½Ã¸é µË´Ï´Ù. 
 */
package net.javajigi.user.service;

import junit.framework.TestCase;
import net.javajigi.user.PasswordMismatchException;
import net.javajigi.user.UserNotFoundException;
import net.javajigi.user.dao.MockUserDAO;
import net.javajigi.user.dao.UserDAO;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MockUserServiceTest extends TestCase {
	protected final Log logger = LogFactory.getLog(getClass());
	
	private UserDAO mock = null;

	private UserService userService = null;

	protected void setUp() throws Exception {
		mock = new MockUserDAO();

		String[] paths = { "/WEB-INF/applicationContext.xml" };
		ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);
		
		userService = new UserServiceImpl();
		userService.setUserDAO(mock);
		userService.setApplicationContext(ctx);
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

	public void testLoginFailedUserNotFound() throws PasswordMismatchException {
		try {
			userService.login ("java", "password");
			
			fail("¹ÝÈ¯µÇ´Â User °´Ã¼ÀÇ °ªÀÌ NullÀÌ¿©¾ß ÇÑ´Ù.");
		} catch (UserNotFoundException e) {
			logger.error(e.getMessage());
			
			assertTrue(true);
		}
	}
	
	public void testLoginFailedPasswordMismatch() throws UserNotFoundException {
		try {
			userService.login ("javajigi", "pass");
			
			fail("·Î±×ÀÎÇÏ°í ÀÖ´Â »ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£°¡ Æ²·Á¾ß ÇÕ´Ï´Ù.");
		} catch (PasswordMismatchException e) {
			logger.error(e.getMessage());
			
			assertTrue(true);
		}
	}

	/*
	 * Test method for 'net.javajigi.user.service.UserServiceImpl.login(String,
	 * String)'
	 */
	public void testLogin() throws Exception {
		assertTrue(userService.login("javajigi", "password"));
	}
}
