blob: 8d0b218c38aef295423ef894d3325445a163bb3f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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
*
* 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.apache.vysper.xmpp.addressing;
import java.util.Arrays;
import junit.framework.TestCase;
import org.apache.vysper.xmpp.addressing.stringprep.StringPrepViolationException;
public class EntityConformanceTestCase extends TestCase {
public void testCheckRFC3920Conformance() {
String error = buildLargeString(1024);
String okButOnTheEdge = buildLargeString(1023);
runAllChecks(error, "x");
runAllChecks(error, okButOnTheEdge);
}
private void runAllChecks(String error, String ok) {
assertFalse(doCheck(error, ok, ok));
assertFalse(doCheck(ok, error, ok));
assertFalse(doCheck(ok, ok, error));
assertFalse(doCheck(ok, null, ok));
assertFalse(doCheck(ok, "", ok));
assertTrue(doCheck(ok, ok, ok));
assertTrue(doCheck(null, ok, null));
assertTrue(doCheck(ok, ok, null));
assertTrue(doCheck(null, ok, ok));
assertTrue(doCheck("", ok, ""));
assertTrue(doCheck(ok, ok, ""));
assertTrue(doCheck("", ok, ok));
}
private boolean doCheck(String node, String domain, String resource) {
return EntityConformance.checkRFC3920Conformance(new EntityImpl(node, domain, resource));
}
private String buildLargeString(int length) {
char[] chars = new char[length];
Arrays.fill(chars, 'x');
return new String(chars);
}
public void testEquals() {
assertEquals(new EntityImpl(null, "vysper.org", null), new EntityImpl(null, "vysper.org", ""));
assertEquals(new EntityImpl(null, "vysper.org", null), new EntityImpl("", "vysper.org", null));
assertEquals(new EntityImpl(null, "vysper.org", null), new EntityImpl("", "vysper.org", ""));
}
public void testPreppedInConstructor() throws EntityFormatException {
// a colon may not occur in the node part of the JID
try {
final EntityImpl testJID = new EntityImpl("contains:colon", "vysper.org", "somebody");
fail("expected RuntimeException.StringPrepViolationException");
} catch (RuntimeException rte) {
assertTrue(rte.getCause() instanceof StringPrepViolationException);
// test succeeded!
}
}
}