package com.connectsdk.discovery.provider.ssdp;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.net.DatagramPacket;
@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class SSDPPacketTest {
DatagramPacket mDatagramPacket;
SSDPPacket ssdpPacket;
public SSDPPacketTest() {
super();
}
@Before
public void setUp(){
String testDatagramData = "";
mDatagramPacket = new DatagramPacket(testDatagramData.getBytes(), 0);
}
@Test
public void testParseDatagram() {
String testDatagramData =
"NOTIFY * HTTP/1.1\r\n" +
"HOST: 239.255.255.250:1900\r\n" +
"NT: nt_value\r\n" +
"NTS: ssdp:byebye\r\n" +
"USN: uuid:advertisement_UUID\r\n\r\n";
mDatagramPacket = new DatagramPacket(testDatagramData.getBytes(), 0);
ssdpPacket = new SSDPPacket(mDatagramPacket);
Assert.assertEquals("NOTIFY * HTTP/1.1", ssdpPacket.getType());
Assert.assertEquals("239.255.255.250:1900", ssdpPacket.getData().get("HOST"));
Assert.assertEquals("nt_value", ssdpPacket.getData().get("NT"));
Assert.assertEquals("ssdp:byebye", ssdpPacket.getData().get("NTS"));
Assert.assertEquals("uuid:advertisement_UUID", ssdpPacket.getData().get("USN"));
}
@Test
public void testParseLowercaseDatagram() {
String testDatagramData =
"NOTIFY * HTTP/1.1\r\n" +
"host: 239.255.255.250:1900\r\n" +
"nt: nt_value\r\n" +
"Nts: ssdp:byebye\r\n" +
"uSN: uuid:advertisement_UUID\r\n\r\n";
mDatagramPacket = new DatagramPacket(testDatagramData.getBytes(), 0);
ssdpPacket = new SSDPPacket(mDatagramPacket);
Assert.assertEquals("NOTIFY * HTTP/1.1", ssdpPacket.getType());
Assert.assertEquals("239.255.255.250:1900", ssdpPacket.getData().get("HOST"));
Assert.assertEquals("nt_value", ssdpPacket.getData().get("NT"));
Assert.assertEquals("ssdp:byebye", ssdpPacket.getData().get("NTS"));
Assert.assertEquals("uuid:advertisement_UUID", ssdpPacket.getData().get("USN"));
}
@Test
public void testParseEmptyDatagram() {
String testDatagramData = "Unknown";
mDatagramPacket = new DatagramPacket(testDatagramData.getBytes(), 0);
ssdpPacket = new SSDPPacket(mDatagramPacket);
Assert.assertNull(ssdpPacket.getType());
Assert.assertTrue(ssdpPacket.getData().isEmpty());
}
@Test
public void testParseGarbage() {
String testDatagramData = "\n\r\n\r\r\n\n\r\n\r\n::::sdkfjh::\r\n:\r\n::\r\nKEY:\r\nsdf\r\n\u000E¾<ƒÄ\f^‹Ã_Ã\u0007Ì\u0001ÜLÿ›îÿ$\u0004‰P\u0004‹T$\b‰H\u001B\f\f‰\r\n";
try {
mDatagramPacket = new DatagramPacket(testDatagramData.getBytes(), 0);
ssdpPacket = new SSDPPacket(mDatagramPacket);
Assert.assertEquals("", ssdpPacket.getData().get("KEY"));
} catch (Exception e) {
Assert.fail(e.getMessage());
}
}
@Test
public void testParseDatagramWithoutLineEnd() {
String testDatagramData = "key:value";
mDatagramPacket = new DatagramPacket(testDatagramData.getBytes(), 0);
ssdpPacket = new SSDPPacket(mDatagramPacket);
Assert.assertEquals(null, ssdpPacket.getData().get("key"));
}
}