/**
* Licensed to Apereo under one or more contributor license
* agreements. See the NOTICE file distributed with this work
* for additional information regarding copyright ownership.
* Apereo licenses this file to you 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 the following location:
*
* 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.jasig.portlet.blackboardvcportlet.dao.ws.impl;
import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
import java.util.List;
import java.util.Map;
import org.jasig.portlet.blackboardvcportlet.dao.ws.SessionWSDao;
import org.jasig.portlet.blackboardvcportlet.data.SessionTelephony;
import org.jasig.portlet.blackboardvcportlet.security.SecurityExpressionEvaluator;
import org.jasig.springframework.mockito.MockitoFactoryBean;
import org.joda.time.DateTime;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.support.DataAccessUtils;
import com.elluminate.sas.BlackboardSessionResponse;
import com.elluminate.sas.BlackboardSessionTelephonyResponse;
public class SessionWSDaoTestBase extends AbstractWSIT {
@Autowired
SessionWSDao dao;
@Autowired
SecurityExpressionEvaluator security;
@SuppressWarnings("unchecked")
@Before
public void before() throws Exception {
MockitoFactoryBean.resetAllMocks();
when(security.authorize(any(String.class))).thenReturn(true);
when(security.authorize(any(String.class),any(Map.class))).thenReturn(true);
form = buildSession();
user = buildUser();
session = dao.createSession(user, form);
}
@After
public void after() throws Exception {
List<BlackboardSessionResponse> sessions = dao.getSessions(null, null, null, user.getUniqueId(), null, null, null);
for(BlackboardSessionResponse session : sessions ) {
dao.deleteSession(session.getSessionId());
}
}
@Test
public void createSessionTest() {
//built session in before
assertNotNull(session);
assertEquals(session.getBoundaryTime(), form.getBoundaryTime());
assertEquals(session.getEndTime(),form.getEndTime().getMillis());
assertEquals(session.getStartTime(), form.getStartTime().getMillis());
assertEquals(session.getCreatorId(), user.getUniqueId());
}
@Test
public void createSessionTelephony() {
SessionTelephony tel = buildSessionTelephony();
BlackboardSessionTelephonyResponse response = dao.createSessionTelephony(session.getSessionId(), tel);
assertNotNull(response);
assertEquals(response.getChairPhone(),tel.getChairPhone());
assertEquals(response.getSessionPIN(), tel.getSessionPIN());
}
@Test
public void updateSessionTest() throws Exception {
form.setNewSession(false);
form.setSessionId(session.getSessionId());
//go from 3 to 4 (four hour meeting)
form.setEndTime((new DateTime()).plusHours(5).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0));
BlackboardSessionResponse updateSession = dao.updateSession(session.getSessionId(), form);
assertNotNull(updateSession);
assertEquals(form.getSessionId(), updateSession.getSessionId());
}
@Test
public void buildSessionGuestUrlTest() throws Exception {
String url = dao.buildGuestSessionUrl(session.getSessionId());
assertNotNull(url);
}
/**
* This test case assumes the creator is initially added as a chair (moderator)
* @throws Exception
*/
@Test
public void buildSessionUrlTest() throws Exception {
String url = dao.buildSessionUrl(session.getSessionId(), user);
assertNotNull(url);
}
@Test
public void getSessionsByEmailAddressTest() throws Exception {
List<BlackboardSessionResponse> sessions = dao.getSessions(null, null, null, session.getCreatorId(), null, null, null);
assertNotNull(sessions);
assertEquals(DataAccessUtils.singleResult(sessions).getSessionId(), session.getSessionId());
}
@Test
public void getSessionsBySessionIdTest() throws Exception {
List<BlackboardSessionResponse> sessions = dao.getSessions(null, null, session.getSessionId(), null, null, null, null);
assertNotNull(sessions);
assertEquals(DataAccessUtils.singleResult(sessions).getSessionId(), session.getSessionId());
}
@Test
public void clearSessionChairList() throws Exception {
assertTrue(dao.clearSessionChairList(session.getSessionId()));
List<BlackboardSessionResponse> sessions = dao.getSessions(null, null, session.getSessionId(), null, null, null, null);
BlackboardSessionResponse singleSession = DataAccessUtils.singleResult(sessions);
assertTrue(singleSession.getChairList().isEmpty());
assertFalse(singleSession.getNonChairList().isEmpty());
}
@Test
public void clearSessionNonChairList() throws Exception {
assertTrue(dao.clearSessionNonChairList(session.getSessionId()));
List<BlackboardSessionResponse> sessions = dao.getSessions(null, null, session.getSessionId(), null, null, null, null);
BlackboardSessionResponse singleSession = DataAccessUtils.singleResult(sessions);
assertEquals(0,singleSession.getNonChairList().length());
assertFalse(singleSession.getChairList().isEmpty());
}
}