01: /*
02: * Copyright 2006-2007 The Scriptella Project Team.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16: package scriptella.driver.ldap.ldif;
17:
18: import scriptella.AbstractTestCase;
19: import scriptella.spi.MockParametersCallbacks;
20: import scriptella.spi.ParametersCallback;
21:
22: import java.io.BufferedReader;
23: import java.io.IOException;
24: import java.io.StringReader;
25:
26: /**
27: * Tests for {@link TrackingLineIterator}.
28: *
29: * @author Fyodor Kupolov
30: * @version 1.0
31: */
32: public class SubstitutingLineReaderTest extends AbstractTestCase {
33: public void test() throws IOException {
34: ParametersCallback pc = MockParametersCallbacks.SIMPLE;
35: String test = "Just a ${test}\n" + "Line2 $var:\n" + "\n"
36: + "Line${a}4";
37: TrackingLineIterator iterator = new TrackingLineIterator(
38: new StringReader(test), pc);
39: String s = iterator.next();
40: assertEquals("Just a *test*", s);
41: assertTrue(iterator.hasNext());
42: s = iterator.next();
43: assertEquals("Line2 *var*:", s);
44: s = iterator.next();
45: assertEquals("", s);
46: s = iterator.next();
47: assertEquals("Line*a*4", s);
48: assertFalse(iterator.hasNext()); //EOF
49: }
50:
51: /**
52: * Tests substitution in LDIF files.
53: */
54: public void testLdif() throws IOException {
55: String expected = "dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com\n"
56: + "objectclass: top\n"
57: + "cn: Gern Jensen\n"
58: + "sn: Jensen\n"
59: + "uid: gernj\n"
60: + "telephonenumber: +1 408 555 1212\n"
61: + "description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl"
62: + "IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG";
63: ParametersCallback pc = new ParametersCallback() {
64: public Object getParameter(final String name) {
65: if ("cn".equals(name)) {
66: return "Gern Jensen";
67: }
68: if ("desc".equals(name)) {
69: return "V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl"
70: + "IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG";
71: }
72: return null;
73: }
74: };
75:
76: String str = "dn: cn=${cn}, ou=Product Testing, dc=airius, dc=com\n"
77: + "objectclass: top\n"
78: + "cn: $cn\n"
79: + "sn: Jensen\n"
80: + "uid: gernj\n"
81: + "telephonenumber: +1 408 555 1212\n"
82: + "description:: $desc";
83: TrackingLineIterator r = new TrackingLineIterator(
84: new StringReader(str), pc);
85: BufferedReader r2 = new BufferedReader(new StringReader(
86: expected));
87: for (int i = 0; i < 7; i++) {
88: assertEquals(r2.readLine(), r.next());
89: }
90: assertFalse(r.hasNext());
91: assertNull(r2.readLine());
92: }
93: }
|