All Downloads are FREE. Search and download functionalities are using the official Maven repository.

test.tck.factory.FactoryTestHarness Maven / Gradle / Ivy

package test.tck.factory;

import javax.sip.header.*;
import test.tck.*;

public class FactoryTestHarness extends TestHarness {

	protected static String hosts[] =
		{
			"herbivore.ncsl.nist.gov",
			"foo.bar.com",
			"129.6.55.181",
			"herbivore.ncsl.nist.gov:5070",
			"big.com",
			"big.com",
			"big.com",
			"gateway.com",
			"10.1.2.3",
			"example.com",
			"alice",
			"registrar.com",
			"10.10.30.186:666",
			"abc123.xyz-test." };

	static protected String urls[] =
		{
			"sip:herbivore.ncsl.nist.gov:5070;maddr=129.6.55.251;lr",
			"sip:[email protected];user=phone",
			"sip:129.6.55.181",
			"sip:herbivore.ncsl.nist.gov:5070;maddr=129.6.55.251;method=INVITE?contact=sip:foo.bar.com",
			"sip:[email protected]",
			"sip:j.doe:[email protected];transport=tcp",
			"sip:[email protected]?subject=project",
			"sip:[email protected]?subject=",
			"sip:+1-212-555-1212:[email protected];user=phone",
			"sip:[email protected]",
			"sip:[email protected]",
			"sip:[email protected]",
			"sip:alice",
			"sip:[email protected];method=REGISTER",
			"sip:[email protected]:6666;early=no;play=http://10.10.30.186:8080/examples/pin.vxml",
			"http://10.10.30.186:8080/examples/pin.vxml",
			"sip:&=+$,;?/%00-_.!~*'()@abc123.xyz-test.:12345;weird123[]/:&+$=weird123[]/:&+$?[]/?:+$=[]/?:+$",
			"sip:[2001:db8::9:1];real=[2001:db8::9:255]\n",
			"sip:user;par=u%[email protected]\n"
		};

	protected static String telUrls[] =
		{ "tel:+463-1701-4291", "tel:46317014291;phone-context=+5", "tel:+1-212-555-1212" };

	protected static String phoneNumbers[] =
		{ "+463-1701-4291", "46317014291;phone-context=+5", "+1-212-555-1212" };

	protected static String addresses[] =
		{
			"herbivore.ncsl.nist.gov",
			"[email protected]",
			"129.6.55.181",
			"herbivore.ncsl.nist.gov:5070",
			"[email protected]",
			"[email protected]",
			"[email protected]",
			"[email protected]",
			"[email protected]",
			"[email protected]",
			"alice",
			"[email protected]",
			"[email protected]:666" // 666 is the sign of the beast. heh. heh.
	};
	protected static String msgString =
		"INVITE sip:[email protected]:5060 SIP/2.0\r\n"
			+ "Via: SIP/2.0/UDP 65.243.118.100:5050\r\n"
			+ "From: Me  ;tag=1234\r\n"
			+ "To: \"[email protected]\"  \r\n"
			+ "Call-ID: [email protected] \r\n"
			+ "CSeq: 1 INVITE \r\n"
            // BUG submitted by Ben Evans (opencloud): 
			//  was missing \r\n on Accept and Accept-Language headers
            // (works OK in NIST-SIP but not valid SIP syntax)
			+ "Accept: application/sdp;level=1\r\n"
			+ "Accept-Language: da\r\n"
			+ "Authentication-Info: nextnonce=\"47364c23432d2e131a5fb210812c\"\r\n"
			+ "Accept-Encoding: identity; q=0.5\r\n"
			+ "Authorization: Digest username=\"UserB\", realm=\"MCI WorldCom SIP\","
			+ " nonce=\"ea9c8e88df84f1cec4341ae6cbe5a359\", opaque=\"\","
			+ " uri=\"sip:ss2.wcom.com\", "
			+ "response=\"dfe56131d1958046689cd83306477ecc\"\r\n"
			+ "Contact:;expires=3600\r\n"
			+ "Content-Type: text/html; charset=ISO-8859-4\r\n"
			+ "Date: Sun, 07 Jan 2001 19:05:06 GMT\r\n"
			+ "Organization: Boxes by Bob\r\n"
			+ "Content-Length: 0\r\n\r\n";

	protected static String multiHeaders[] =
		{
			"Allow: INVITE , FooBar\r\n",
			"Accept-Encoding: compress;q=0.5,gzip;q=1.0\r\n",
			"Accept: application/sdp;level=1,application/x-private,text/html\r\n",
			"Contact: Bo Bob Biggs "
                // BUG submitted by Ben Evans (opencloud): SIP syntax does not 
				// permit space between < and URI
				+ ","
				+ "Joe Bob Briggs \r\n",
			"Proxy-Require: foo, 1234 \r\n",
			"Record-Route: ,"
				+ ","
				+ "\r\n" };

	protected static String headers[] =
		{
			"Accept: application/sdp;level=1\n",
			"Accept: application/x-private\n",
			"Accept: text/html\n",
			"Accept: text/*\n",
			"Accept: text/*strange_extension*\n",
			"Accept: application/sdp;level=1;q=1.0\n",
			"Accept-Encoding: compress\n",
			"Accept-Encoding: gzip\n",
			"Accept-Encoding:\n",
			"Accept-Encoding: *\n",
			"Accept-Encoding: *special*\n",
			"Accept-Encoding: compress;q=0.5\n",
			"Accept-Encoding: gzip;q=1.0\n",
			"Accept-Encoding: identity; q=0.5\n",						
			"Accept-Language: da\n",
			"Accept-Language:\n",
			"Accept-Language: en-gb;q=0.8\n",
			"Accept-Language: *\n",
			
			"Alert-Info: ;purpose=icon\n",
			"Alert-Info:  ;purpose=info\n",
			"Alert-Info: \n",
			"Allow: INVITE \r\n",
			"Allow: FooBars\r\n",
			"Allow-Events: pack1.pack2\n",
			"Allow-Events: pack1\n",
			
			// JvB: added
			"u: pack1\n", "U: pack1\n",
			
			"Authentication-Info: nextnonce=\"47364c23432d2e131a5fb210812c\"\n",
			// Issue 4 posted by Larry B
			"Authentication-Info: nextnonce=\"47364c23432d2e131a5fb210812c\",rspauth=\"hello\"\n",
			"Authorization: Digest username=\"UserB\", realm=\"MCI WorldCom SIP\","
				+ " nonce=\"ea9c8e88df84f1cec4341ae6cbe5a359\", opaque=\"\","
				+ " uri=\"sip:ss2.wcom.com\","
				+ " response=\"dfe56131d1958046689cd83306477ecc\"\n",
			"Authorization: Digest username=\"apro,kop\","
				+ "realm=\"Realm\","
				+ "nonce=\"MTA1MDMzMjE5ODUzMjUwM2QyMzBhOTJlMTkxYjIxYWY1NDlhYzk4YzNiMGYz\""
				+ ",uri=\"sip:nortelnetworks.com:5060\","
				+ "response=\"dbfba6c0e9664b45b7d224d2b52a1d01\","
				+ "algorithm=MD5,"
				+ "cnonce=\"VG05eWRHVnNJRTVsZEhkdmNtdHpNVEExTURNek16WTFOREUyTUE9PQ==\","
				+ "qop=auth-int,nc=00000001\n",
			"Call-ID: [email protected]\n",
			"Call-ID: [email protected]\n",
			"i:[email protected]\n",
			"I:[email protected]\n",
			"Call-ID: [email protected]\n",
			"Call-ID: kl24ahsd546folnyt2vbak9sad98u23naodiunzds09a3bqw0sdfbsk34poouymnae0043nsed09mfkvc74bd0cuwnms05dknw87hjpobd76f\n",
			"Call-Id: 281794\n",
			"Call-Info:  ;purpose=icon\n",
			"Call-Info:  ;purpose=info\n",
			"Call-Info: \n",
			"Contact:;expires=3600\n",
			"Contact:BigGuy;expires=3600\n",
			"Contact: sip:[email protected]:5060\n",
			"Contact: sip:[email protected]\n",
        // BUG reported by Ben Evans (opencloud): SIP syntax 
		// does not permit space between < and URI
			"Contact: Bo Bob Biggs"
				+ "\n",
			"Contact: Joe Bob Briggs \n",
			"Contact: \"Mr. Watson\" "
				+ " ; q=0.7; expires=3600",
			"Contact: \"Mr. Watson\" ;q=0.1\n",
			"Contact: LittleGuy \n",
			"Contact: \n",
			"Contact: \n",
			"Contact:*\n",
			"Contact: *displayname* \n",
			"Contact:BigGuy;Expires=3600\n",
			
			// JvB: added
			"m:BigGuy;Expires=3600\n",
			"M:BigGuy;Expires=3600\n",
			
			"Content-Disposition: session\n",
			"Content-Disposition: render;handling=hand;optional=opt \n",
			"Content-Encoding: gzip \n",
			
			// JvB: added
			"e: gzip \n",
			"E: gzip \n",
			"Content-Language: fr \n",
			"l: 345\n",
			"L: 345\n",
			"Content-Length: 3495\n",
			"Content-Length: 0 \n",
			"c: text/html; charset=ISO-8859-4\n",
			"Content-Type: text/html; charset=ISO-8859-4\n",
			"Content-Type: application/sdp\n",
			"Content-Type: application/sdp; o=we ;l=ek ; i=end \n",
			"CSeq: 17 INVITE\n",
			"CSeq: 17 ACK\n",
			"CSeq : 18   BYE\n",
			"CSeq:1 CANCEL\n",
			"CSeq: 3 BYE\n",			
			"Date: Sun, 07 Jan 2001 19:05:06 GMT\n",
			
			// JvB: Date is officially 1 or 2 digits
			"Date: Mon, 8 Jan 2001 19:05:06 GMT\n",
			"Error-Info: \n",
			"Error-Info: ;param1=oli\n",
			
			// JvB: These ones were missing
			"Expires: 3600\n",
			"Event: register\n",
			"o: presence\n",
			"O: presence\n",
			
            // BUG from Ben Evans (opencloud): space before >
            "From: foobar at com ;tag=1024181795\n",
			"From: sip:[email protected]\n",
			"From: sip:[email protected]\n",
			"from: sip:localhost\n",
			"from: * \n",	// '*' is a token in from
			
			// JvB: test short form too
			"f: sip:[email protected]\n",
			"F: sip:[email protected]\n",
			
			"FROM: \"A. G. Bell\"  ;tag=a48s\n",
			"In-Reply-To: [email protected]\n",
			"In-Reply-To: 70710 \n",
			"Max-Forwards: 34\n",
			"Max-Forwards: 10 \n",
			"MIME-Version: 1.0 \n",
			"Min-Expires: 60 \n",
			"Organization: Boxes by Bob\n",
			"Priority: emergency\n",
			"Proxy-Authenticate: Digest realm=\"MCI WorldCom SIP\","
				+ "domain=\"sip:ss2.wcom.com\", "
				+ "nonce=\"ea9c8e88df84f1cec4341ae6cbe5a359\","
				+ "opaque=\"\", stale=FALSE, algorithm=MD5\n",
			"Proxy-Authorization: Digest realm=\"MCI WorldCom SIP\","
				+ "domain=\"sip:ss2.wcom.com\", "
				+ "nonce=\"ea9c8e88df84f1cec4341ae6cbe5a359\","
				+ "opaque=\"\", stale=FALSE, algorithm=MD5\n",
			"Proxy-Require: foo \n",
			"Proxy-Require: 1234 \n",
			"RAck: 776656 1 INVITE\n",
			"Reason: SIP ;cause=200 ;text=\"Call completed elsewhere\"\n",
			"Reason: Q.850 ;cause=16 ;text=\"Terminated\"\n",
			"Reason: SIP ;cause=600 ;text=\"Busy Everywhere\"\n",
            // API BUG: what should the default cause code be? - NIST uses -1 but this is not specified.
			// TBD -- documentation fix in jain-sip 1.2 should specify the default cause to be -1
			"Reason: SIP \n",
			"Record-Route: ",
			"Record-Route: ",
			"Record-Route: \n",
			"Refer-To: ;tag=5617\n",
			"Refer-To: T. A. Watson \n",
			"Refer-To: LittleGuy \n",
			"Refer-To: sip:[email protected]\n",
			"Refer-To: sip:[email protected] ; tag=696928473514.129.6.55.9\n",
			
			// JvB: added
			"r: sip:[email protected]\n",
			"R: sip:[email protected]\n",
			
			"Reply-To: Bob \n",
			"Require: 100rel \n",
			"Retry-After: 18000;duration=3600\n",
			"Retry-After: 120;duration=3600;ra=oli\n",
            // BUG reported by Ben Evans, opencloud: 
			// javadoc says default duration is 0 but RI returns -1,
			// The RI was fixed to return 0
			"Retry-After: 1230 (I'm in a meeting);fg=der;duration=23\n",
			"Route: \n",
			"Route: \n",			
			"RSeq: 988789 \n",			
			"Server: Softphone/Beta1.5 \n",
			"Server: HomeServer v2\n",
			"Server: Nist/Beta1 (beta version) \n",
			"Server: Nist proxy (beta version)\n",
			"Server: Nist1.0/Beta2 UbiServer/vers.1.0 (new stuff) (Cool) \n",
			
			// JvB: added for 1.2 to support RFC3903
			"SIP-ETag: tag123\n",
			"SIP-If-Match: tag123\n",
			
			"Subject: Where is the Moscone?\n",
			"Subject: Need more boxes\n",
			
			// JvB: added
			"s: Need more boxes\n",
			"S: Need more boxes\n",
			
            // API BUG: default value of retry-after param not specified.
			// TBD -- documentation bug in JAIN-SIP to be fixed in 1.2
			"Subscription-State: active \n",
			"Subscription-State: terminated;reason=rejected \n",
			"Subscription-State: pending;reason=probation;expires=36\n",
			"Subscription-State: pending;retry-after=10;expires=36\n",
			"Subscription-State: pending;generic=void\n",
			"Supported: 100rel \n",
			"Supported: foo1\n",
			"Supported:\n",   // JvB: it may be empty! bug in parser
			
			// JvB: added
			"k: foo1\n",
			"K: foo1\n",
			
			"Timestamp: 54 \n",
			"Timestamp: 52.34 34.5 \n",
			"Timestamp: 52.34 .5 \n",		// JvB: also valid syntax!
			
			"To: ;tag=5617\n",
			"To: T. A. Watson \n",
			"To: LittleGuy \n",
			"To: sip:[email protected]\n",
			"To: sip:[email protected] ; tag=696928473514.129.6.55.9\n",

			// JvB: added
			"t: sip:[email protected]\n",
			"T: sip:[email protected]\n",
			
			"Unsupported: foo \n",
			"User-Agent: Softphone/Beta1.5 \n",
			"User-Agent: Nist/Beta1 (beta version) \n",
			"User-Agent: Nist UA (beta version)\n",
			"User-Agent: Nist1.0/Beta2 Ubi/vers.1.0 (very cool) \n",
			"Via: SIP/2.0/UDP 135.180.130.133\n",
			"Via: SIP/2.0/UDP 166.34.120.100;branch=0000045d-00000001\n",
			"Via: SIP/2.0/UDP host.example.com;received=135.180.130.133\n",
			"Via: SIP/2.0/UDP [2001:db8::9:1];received=[2001:db8::9:255];branch=z9hG4bKas3-111\n",
			
			// JvB: added
			"v: SIP/2.0/UDP 135.180.130.133\n",
			"V: SIP/2.0/UDP 135.180.130.133\n",
			
			"WWW-Authenticate: Digest realm=\"MCI WorldCom SIP\","
				+ "domain=\"sip:ss2.wcom.com\","
				+ "nonce=\"ea9c8e88df84f1cec4341ae6cbe5a359\","
				+ "opaque=\"\", stale=FALSE, algorithm=MD5\n",
			"WWW-Authenticate: Digest realm=\"MCI WorldCom SIP\","
				+ "qop=\"auth\" , nonce-value=\"oli\"\n",
			"Warning: 307 isi.edu \"Session parameter 'foo' not understood\"\n",
			"Warning: 301 isi.edu \"Incompatible network address type 'E.164'\"\n",
			"Route: \"displayname\\\\\";x=\"\";y=\"\\\"\\\\\"\n"
			};

	protected Header createRiHeaderFromString(String hdr) {
		try {
			StringBuffer name = new StringBuffer();
			StringBuffer body = new StringBuffer();
			int n = 0;
			for (n = 0; n < hdr.length(); n++) {
				if (hdr.charAt(n) != ':') {
					name.append(hdr.charAt(n));
				} else
					break;
			}
			n++;

			for (; n < hdr.length(); n++) {
				body.append(hdr.charAt(n));
			}
			Header riHeader =
				riHeaderFactory.createHeader(
					name.toString().trim(),
					body.toString().trim());
			return riHeader;
		} catch (java.text.ParseException ex) {
			return null;
		}
	}

	public FactoryTestHarness(String name) {
		super(name);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy