/* * Copyright 2006-2012 The Scriptella Project Team. * * Licensed 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 scriptella.driver.ldap.ldif; import scriptella.AbstractTestCase; import scriptella.spi.MockParametersCallbacks; import scriptella.spi.ParametersCallback; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; /** * Tests for {@link TrackingLineIterator}. * * @author Fyodor Kupolov * @version 1.0 */ public class SubstitutingLineReaderTest extends AbstractTestCase { public void test() throws IOException { ParametersCallback pc = MockParametersCallbacks.SIMPLE; String test = "Just a ${test}\n" + "Line2 $var:\n" + "\n" + "Line${a}4"; TrackingLineIterator iterator = new TrackingLineIterator(new StringReader(test), pc); String s = iterator.next(); assertEquals("Just a *test*", s); assertTrue(iterator.hasNext()); s = iterator.next(); assertEquals("Line2 *var*:", s); s = iterator.next(); assertEquals("", s); s = iterator.next(); assertEquals("Line*a*4", s); assertFalse(iterator.hasNext()); //EOF } /** * Tests substitution in LDIF files. */ public void testLdif() throws IOException { String expected = "dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com\n" + "objectclass: top\n" + "cn: Gern Jensen\n" + "sn: Jensen\n" + "uid: gernj\n" + "telephonenumber: +1 408 555 1212\n" + "description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl"+ "IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG"; ParametersCallback pc = new ParametersCallback() { public Object getParameter(final String name) { if ("cn".equals(name)) { return "Gern Jensen"; } if ("desc".equals(name)) { return "V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl"+ "IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG"; } return null; } }; String str = "dn: cn=${cn}, ou=Product Testing, dc=airius, dc=com\n" + "objectclass: top\n" + "cn: $cn\n" + "sn: Jensen\n" + "uid: gernj\n" + "telephonenumber: +1 408 555 1212\n" + "description:: $desc"; TrackingLineIterator r = new TrackingLineIterator(new StringReader(str), pc); BufferedReader r2 = new BufferedReader(new StringReader(expected)); for (int i=0;i<7;i++) { assertEquals(r2.readLine(), r.next()); } assertFalse(r.hasNext()); assertNull(r2.readLine()); } }