/*
* Copyright 2012 PRODYNA AG
*
* Licensed under the Eclipse Public License (EPL), Version 1.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.opensource.org/licenses/eclipse-1.0.php or
* http://www.nabucco.org/License.html
*
* 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.nabucco.framework.common.authorization.service.login;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.nabucco.framework.base.facade.datatype.security.Subject;
import org.nabucco.framework.base.facade.datatype.security.UserId;
import org.nabucco.framework.base.facade.datatype.security.credential.Password;
import org.nabucco.framework.base.facade.exception.service.ServiceException;
import org.nabucco.framework.base.facade.message.ServiceRequest;
import org.nabucco.framework.base.facade.message.ServiceResponse;
import org.nabucco.framework.base.test.RuntimeTestSupport;
import org.nabucco.framework.common.authorization.facade.component.AuthorizationComponent;
import org.nabucco.framework.common.authorization.facade.component.AuthorizationComponentLocator;
import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationUser;
import org.nabucco.framework.common.authorization.facade.message.login.LoginMsg;
import org.nabucco.framework.common.authorization.facade.message.login.LoginRs;
import org.nabucco.framework.common.authorization.util.AuthorizationTestUtility;
/**
* AuthorizationLoginTest
*
* @author Nicolas Moser, PRODYNA AG
*/
public class AuthorizationLoginTest extends RuntimeTestSupport {
private AuthorizationComponent component;
@Before
public void setUp() throws Exception {
component = super.getComponent(AuthorizationComponentLocator.getInstance());
}
@Test
public void testLogin() throws Exception {
AuthorizationUser user = this.createUser();
LoginMsg msg = new LoginMsg();
msg.setUsername(new UserId("testuser"));
msg.setPassword(new Password("test"));
ServiceRequest<LoginMsg> rq = new ServiceRequest<LoginMsg>(super.createServiceContext());
rq.setRequestMessage(msg);
ServiceResponse<LoginRs> rs = this.component.getLogin().login(rq);
Assert.assertNotNull(rs);
Assert.assertNotNull(rs.getResponseMessage());
Subject subject = rs.getResponseMessage().getSubject();
Assert.assertNotNull(subject);
Assert.assertNotNull(subject.getUserId());
Assert.assertEquals("testuser", subject.getUserId().getValue());
Assert.assertNotNull(subject.getToken());
user = (AuthorizationUser) subject.getUser();
Assert.assertNotNull(user);
Assert.assertNotNull(user.getId());
Assert.assertNotNull(user.getUsername());
Assert.assertEquals("testuser", user.getUsername().getValue());
AuthorizationTestUtility.remove(component, user);
}
private AuthorizationUser createUser() throws ServiceException {
AuthorizationUser user = AuthorizationTestUtility.dummyUser("testuser");
return AuthorizationTestUtility.create(component, user);
}
}