### Question:
SolarisConnector implements PoolableConnector, AuthenticateOp, SchemaOp, CreateOp,
        DeleteOp, UpdateOp, SearchOp<Node>, TestOp, ScriptOnResourceOp, ResolveUsernameOp { public SolarisConnection getConnection() { assert (connection != null); return connection; }  void init(Configuration cfg); void checkAlive(); void dispose(); Uid authenticate(ObjectClass objectClass, String username, GuardedString password,
            OperationOptions options); Uid create(ObjectClass objectClass, Set<Attribute> attrs, OperationOptions options); void delete(ObjectClass objectClass, Uid uid, OperationOptions options); Uid update(ObjectClass objectClass, Uid uid, Set<Attribute> replaceAttributes,
            OperationOptions options); void executeQuery(ObjectClass objectClass, Node query, ResultsHandler handler,
            OperationOptions options); FilterTranslator<Node> createFilterTranslator(ObjectClass objectClass,
            OperationOptions options); Schema schema(); void test(); SolarisConnection getConnection(); Configuration getConfiguration(); Object runScriptOnResource(ScriptContext request, OperationOptions options); Uid resolveUsername(ObjectClass objectClass, String username, OperationOptions options);  }### Answer:
@Test public void testControlCharPassword() { List<Character> controlChars = getControlChars(); for (Character controlCharacter : controlChars) { try { String passwd = new StringBuilder().append("foo").append(controlCharacter).append("bar") .toString(); getConnection().sendPassword(new GuardedString(passwd.toCharArray())); fail("Exception should be thrown when attempt to send control chars within the password"); } catch (RuntimeException ex) { } } }