/**
* 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.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.activation.DataHandler;
import javax.mail.util.ByteArrayDataSource;
import org.jasig.portlet.blackboardvcportlet.dao.ws.MultimediaWSDao;
import org.jasig.portlet.blackboardvcportlet.dao.ws.SessionWSDao;
import org.jasig.portlet.blackboardvcportlet.security.SecurityExpressionEvaluator;
import org.jasig.springframework.mockito.MockitoFactoryBean;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.elluminate.sas.BlackboardMultimediaResponse;
import com.elluminate.sas.BlackboardSessionResponse;
public class MultimediaWSDaoTestBase extends AbstractWSIT {
@Autowired
SecurityExpressionEvaluator securityExpressionEvaluator;
MultimediaWSDao dao;
SessionWSDao sessionDao;
List <Long> multimedias = new ArrayList<Long>() ;
@Autowired
public void setSessionDao(SessionWSDao dao) {
this.sessionDao = dao;
}
@Autowired
public void setMMWSDao(MultimediaWSDao dao) {
this.dao = dao;
}
@SuppressWarnings("unchecked")
@Before
public void before() {
MockitoFactoryBean.resetAllMocks();
when(securityExpressionEvaluator.authorize(any(String.class))).thenReturn(true);
when(securityExpressionEvaluator.authorize(any(String.class),any(Map.class))).thenReturn(true);
form = buildSession();
user = buildUser();
session = sessionDao.createSession(user, form);
}
@After
public void after() {
List<BlackboardSessionResponse> sessions = sessionDao.getSessions(null, null, null, user.getEmail(), null, null, null);
for(BlackboardSessionResponse session : sessions ) {
List<BlackboardMultimediaResponse> repositoryMultimedias = dao.getSessionMultimedias(session.getSessionId());
for(BlackboardMultimediaResponse multimedia : repositoryMultimedias) {
dao.removeSessionMultimedia(session.getSessionId(),multimedia.getMultimediaId());
}
sessionDao.deleteSession(session.getSessionId());
}
for(Long multimediaId : multimedias) {
dao.removeRepositoryMultimedia(multimediaId);
}
}
@Test
public void getRepositoryMultimediasTest () throws Exception {
List<BlackboardMultimediaResponse> repositoryMultimedias = dao.getRepositoryMultimedias(user.getUniqueId(), null, null);
assertEquals(repositoryMultimedias.size(),0);
}
@Test
public void getSessionRepositoryMultimediasTest() throws Exception {
List<BlackboardMultimediaResponse> sessionRepositoryMultimedias = dao.getSessionMultimedias(session.getSessionId());
assertTrue(sessionRepositoryMultimedias.size() == 0);
}
@Test
public void uploadRepositoryMultimediaTest() throws Exception {
BlackboardMultimediaResponse uploadRepositoryMultimedia = createRepoMultimedia();
assertNotNull(uploadRepositoryMultimedia);
}
@Test
public void createSessionMultimediaTest() throws Exception {
InputStream is = new ByteArrayInputStream("TEST2".getBytes());
ByteArrayDataSource rawData = new ByteArrayDataSource(is,"video/mpeg");
DataHandler dataHandler = new DataHandler(rawData);
BlackboardMultimediaResponse createSessionMultimedia = dao.createSessionMultimedia(session.getSessionId(), user.getEmail(), "test.mpeg", "aliens",dataHandler);
multimedias.add(createSessionMultimedia.getMultimediaId());
List<BlackboardMultimediaResponse> repositoryMultimedias = dao.getSessionMultimedias(session.getSessionId());
assertNotNull(repositoryMultimedias);
assertTrue(repositoryMultimedias.size() == 1);
}
@Test
public void linkSessionToMultimediaTest() throws Exception {
BlackboardMultimediaResponse uploadRepositoryMultimedia = createRepoMultimedia();
assertNotNull(uploadRepositoryMultimedia);
boolean linkSessionToMultimedia = dao.linkSessionToMultimedia(session.getSessionId(), uploadRepositoryMultimedia.getMultimediaId());
assertTrue(linkSessionToMultimedia);
List<BlackboardMultimediaResponse> repositoryMultimedias = dao.getSessionMultimedias(session.getSessionId());
assertNotNull(repositoryMultimedias);
assertTrue(repositoryMultimedias.size() == 1);
}
@Test
public void removeRepositoryMultimediaTest() throws Exception {
BlackboardMultimediaResponse createRepoMultimedia = createRepoMultimedia();
assertNotNull(createRepoMultimedia);
boolean removeRepositoryMultimedia = dao.removeRepositoryMultimedia(createRepoMultimedia.getMultimediaId());
assertTrue(removeRepositoryMultimedia);
}
@Test
public void removeSessionMultimediaTest() throws Exception {
BlackboardMultimediaResponse multimedia = createRepoMultimedia();
assertNotNull(multimedia);
assertTrue(dao.linkSessionToMultimedia(session.getSessionId(), multimedia.getMultimediaId()));
dao.removeSessionMultimedia(session.getSessionId(), multimedia.getMultimediaId());
}
protected BlackboardMultimediaResponse createRepoMultimedia() throws Exception {
InputStream is = new ByteArrayInputStream("fdsdfsfsdadsfasfda".getBytes());
ByteArrayDataSource rawData = new ByteArrayDataSource(is,"video/mpeg");
DataHandler dataHandler = new DataHandler(rawData);
BlackboardMultimediaResponse uploadRepositoryMultimedia = dao.uploadRepositoryMultimedia(user.getEmail(), "test.mpeg", "aliens",dataHandler);
multimedias.add(uploadRepositoryMultimedia.getMultimediaId());
return uploadRepositoryMultimedia;
}
}