/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community 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: * * http://opensource.org/licenses/ecl2.txt * * 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.opencastproject.security.urlsigning; import static org.junit.Assert.assertEquals; import org.junit.Test; import java.net.URI; import java.net.URISyntaxException; public class WowzaResourceStrategyTest { @Test public void testGetRTMPSource() throws URISyntaxException { /** * With the explicit Wowza delimiter. */ // With explicit seperation between application and stream. URI noPathDelimiter = new URI("rtmp://hostname.com/matterhorn-engage/_definst_/mp4:myvideo.mov"); String result = WowzaResourceStrategyImpl.getRTMPResource(noPathDelimiter); assertEquals("mp4:myvideo.mov", result); // With path, delimiter, no extension URI pathDelimiterNoExtension = new URI( "rtmp://hostname.com/matterhorn-engage/_definst_/mp4:path/to/video/myvideo"); result = WowzaResourceStrategyImpl.getRTMPResource(pathDelimiterNoExtension); assertEquals("mp4:path/to/video/myvideo", result); // With path, delimiter, extension URI pathDelimiterExtension = new URI( "rtmp://hostname.com/matterhorn-engage/_definst_/mp4:path/to/video/myvideo.mov"); result = WowzaResourceStrategyImpl.getRTMPResource(pathDelimiterExtension); assertEquals("mp4:path/to/video/myvideo.mov", result); // With path, delimiter, extension and query string URI pathDelimiterExtensionQueryString = new URI( "rtmp://hostname.com/matterhorn-engage/_definst_/mp4:path/to/video/myvideo.mov?param1=value1¶m2=value2"); result = WowzaResourceStrategyImpl.getRTMPResource(pathDelimiterExtensionQueryString); assertEquals("mp4:path/to/video/myvideo.mov?param1=value1¶m2=value2", result); /** * With the format mp4: and no Wowza delimiter. */ // No Path, extension and format. URI noPathNoDelimiterFormat = new URI("rtmp://hostname.com/matterhorn-engage/mp4:myvideo.mov"); result = WowzaResourceStrategyImpl.getRTMPResource(noPathNoDelimiterFormat); assertEquals("mp4:myvideo.mov", result); // With path, no delimiter, no extension and format URI noPathNoDelimiterNoExtensionFormat = new URI( "rtmp://hostname.com/matterhorn-engage/mp4:path/to/video/myvideo"); result = WowzaResourceStrategyImpl.getRTMPResource(noPathNoDelimiterNoExtensionFormat); assertEquals("mp4:path/to/video/myvideo", result); // With path, no delimiter, extension and format URI pathNoDelimiterExtensionFormat = new URI( "rtmp://hostname.com/matterhorn-engage/mp4:path/to/video/myvideo.mov"); result = WowzaResourceStrategyImpl.getRTMPResource(pathNoDelimiterExtensionFormat); assertEquals("mp4:path/to/video/myvideo.mov", result); // With path, no delimiter, extension, format and query string URI pathNoDelimiterExtensionFormatQueryString = new URI( "rtmp://hostname.com/matterhorn-engage/mp4:path/to/video/myvideo.mov?param1=value1¶m2=value2"); result = WowzaResourceStrategyImpl.getRTMPResource(pathNoDelimiterExtensionFormatQueryString); assertEquals("mp4:path/to/video/myvideo.mov?param1=value1¶m2=value2", result); // FLV with extension URI flvWithExtension = new URI( "rtmp://hostname.com/matterhorn-engage/flv:path/to/video/myvideo.flv?param1=value1¶m2=value2"); result = WowzaResourceStrategyImpl.getRTMPResource(flvWithExtension); assertEquals("flv:path/to/video/myvideo.flv?param1=value1¶m2=value2", result); // FLV without extension URI flvWithoutExtension = new URI( "rtmp://hostname.com/matterhorn-engage/flv:path/to/video/myvideo?param1=value1¶m2=value2"); result = WowzaResourceStrategyImpl.getRTMPResource(flvWithoutExtension); assertEquals("flv:path/to/video/myvideo?param1=value1¶m2=value2", result); // Without format URI withoutFormat = new URI( "rtmp://hostname.com/matterhorn-engage/path/to/video/myvideo.mp4?param1=value1¶m2=value2"); result = WowzaResourceStrategyImpl.getRTMPResource(withoutFormat); assertEquals("path/to/video/myvideo.mp4?param1=value1¶m2=value2", result); } }