KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > scriptella > driver > ldap > SearchFilterQueryTest


1 /*
2  * Copyright 2006-2007 The Scriptella Project Team.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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;
17
18 import scriptella.AbstractTestCase;
19 import scriptella.spi.MockParametersCallbacks;
20 import scriptella.spi.ParametersCallback;
21 import scriptella.spi.QueryCallback;
22 import scriptella.util.ProxyAdapter;
23
24 import javax.naming.NamingEnumeration JavaDoc;
25 import javax.naming.directory.BasicAttributes JavaDoc;
26 import javax.naming.directory.SearchResult JavaDoc;
27 import java.util.ArrayList JavaDoc;
28 import java.util.Iterator JavaDoc;
29 import java.util.List JavaDoc;
30
31 /**
32  * Tests for {@link SearchFilterQuery}.
33  *
34  * @author Fyodor Kupolov
35  * @version 1.0
36  */

37 public class SearchFilterQueryTest extends AbstractTestCase {
38     private boolean closed;
39     private int rows;
40
41     protected void setUp() throws Exception JavaDoc {
42         super.setUp();
43         closed=false;
44         rows=0;
45     }
46
47     public void testExecute() {
48         QueryCallback qc = new QueryCallback() {
49             public void processRow(final ParametersCallback parameters) {
50                 assertEquals("uid"+rows, parameters.getParameter("uid"));
51                 assertEquals("search"+rows, parameters.getParameter("cn"));
52                 assertEquals("cn=search"+rows+", ou=ldap, dc=scriptella", parameters.getParameter("dn"));
53                 rows++;
54             }
55         };
56
57         SearchFilterQuery q = new SearchFilterQuery(null, MockParametersCallbacks.UNSUPPORTED, qc) {
58             protected NamingEnumeration JavaDoc<SearchResult JavaDoc> query(final LdapConnection connection, final String JavaDoc filter) {
59                 List JavaDoc<SearchResult JavaDoc> res = new ArrayList JavaDoc<SearchResult JavaDoc>();
60                 for (int i=0;i<2;i++) {
61                     BasicAttributes JavaDoc a = new BasicAttributes JavaDoc("uid","uid"+i);
62                     a.put("cn", "search"+i);
63                     SearchResult JavaDoc sr = new SearchResult JavaDoc("cn=search"+i+", ou=ldap, dc=scriptella", null, a);
64                     sr.setNameInNamespace(sr.getName());
65                     res.add(sr);
66                 }
67                 final Iterator JavaDoc<SearchResult JavaDoc> it = res.iterator();
68                 return new NamingEnumeration JavaDoc<SearchResult JavaDoc>() {
69
70                     public SearchResult JavaDoc next() {
71                         return it.next();
72                     }
73
74                     public boolean hasMore() {
75                         return it.hasNext();
76                     }
77
78                     public void close() {
79                         closed=true;
80                     }
81
82                     public boolean hasMoreElements() {
83                         return hasMore();
84                     }
85
86                     public SearchResult JavaDoc nextElement() {
87                         return next();
88                     }
89                 };
90             }
91         };
92         q.execute("filter");//in this test case filter doesn't matter
93
assertTrue("Naming enumeration must be closed after iteration", closed);
94         assertEquals(2, rows);
95     }
96
97     /**
98      * Tests if variables are substituted in a passed filter.
99      */

100     public void testExecuteSubstitution() {
101         SearchFilterQuery q = new SearchFilterQuery(null, MockParametersCallbacks.SIMPLE, null) {
102             protected NamingEnumeration JavaDoc<SearchResult JavaDoc> query(final LdapConnection connection, final String JavaDoc filter) {
103                 assertEquals("test *filter* *a**b*", filter);
104                 return new ProxyAdapter<NamingEnumeration JavaDoc<SearchResult JavaDoc>>(NamingEnumeration JavaDoc.class) {
105                     public boolean hasMoreElements() {
106                         return false;
107                     }
108                 }.getProxy();
109
110             }
111         };
112         q.execute("test $filter ${a+b}");
113     }
114 }
115
Popular Tags