Skip to content

Commit 23e3e06

Browse files
committed
add exception testing
1 parent 4eb57d1 commit 23e3e06

File tree

6 files changed

+211
-3
lines changed

6 files changed

+211
-3
lines changed

lightblue-ldap-common/src/test/java/com/redhat/lightblue/common/ldap/LightblueUtilTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ public void testIsFieldAnArrayCount_True(){
4141
assertTrue(LightblueUtil.isFieldAnArrayCount("somearray" + LightblueUtil.FIELD_MOD_ARRAY_COUNT));
4242
}
4343

44+
@Test
45+
public void testIsFieldAnArrayCount_NullValue(){
46+
assertFalse(LightblueUtil.isFieldAnArrayCount(null));
47+
}
48+
4449
@Test
4550
public void testIsFieldAnArrayCount_False(){
4651
assertFalse(LightblueUtil.isFieldAnArrayCount("somearray"));

lightblue-ldap-config/src/test/java/com/redhat/lightblue/config/ldap/LdapDBResolverTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import org.junit.Test;
2424

25+
import com.redhat.lightblue.metadata.DataStore;
2526
import com.unboundid.ldap.sdk.LDAPException;
2627

2728
public class LdapDBResolverTest {
@@ -32,4 +33,15 @@ public void testGet_UnknownDatabase() throws LDAPException{
3233
resolver.get("Does Not Exist");
3334
}
3435

36+
@Test(expected = IllegalArgumentException.class)
37+
public void testGet_InvalidStoreType() throws LDAPException{
38+
new LdapDBResolver(new HashSet<LdapDataSourceConfiguration>()).get(new DataStore(){
39+
40+
@Override
41+
public String getBackend() {
42+
throw new UnsupportedOperationException("Method should never be called.");
43+
}
44+
});
45+
}
46+
3547
}

lightblue-ldap-crud/src/main/java/com/redhat/lightblue/crud/ldap/translator/SortTranslator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ else if(sort instanceof SortKey){
5353
SortKey key = (SortKey) sort;
5454
results.add(new com.unboundid.ldap.sdk.controls.SortKey(key.getField().getLast(), key.isDesc()));
5555
}
56+
else{
57+
throw new IllegalArgumentException("Unsupported Sort type: " + sort.getClass().getName());
58+
}
5659
}
5760

5861
}

lightblue-ldap-crud/src/test/java/com/redhat/lightblue/crud/ldap/translator/FilterTranslatorTest.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,18 @@
2525

2626
import org.junit.Test;
2727

28-
import com.redhat.lightblue.crud.ldap.translator.FilterTranslator;
28+
import com.fasterxml.jackson.databind.JsonNode;
2929
import com.redhat.lightblue.query.ArrayContainsExpression;
30+
import com.redhat.lightblue.query.ArrayMatchExpression;
3031
import com.redhat.lightblue.query.BinaryComparisonOperator;
3132
import com.redhat.lightblue.query.ContainsOperator;
33+
import com.redhat.lightblue.query.FieldComparisonExpression;
3234
import com.redhat.lightblue.query.NaryLogicalExpression;
3335
import com.redhat.lightblue.query.NaryLogicalOperator;
3436
import com.redhat.lightblue.query.NaryRelationalExpression;
3537
import com.redhat.lightblue.query.NaryRelationalOperator;
3638
import com.redhat.lightblue.query.QueryExpression;
39+
import com.redhat.lightblue.query.RegexMatchExpression;
3740
import com.redhat.lightblue.query.UnaryLogicalExpression;
3841
import com.redhat.lightblue.query.UnaryLogicalOperator;
3942
import com.redhat.lightblue.query.Value;
@@ -43,6 +46,19 @@
4346

4447
public class FilterTranslatorTest {
4548

49+
@SuppressWarnings("serial")
50+
@Test(expected = UnsupportedOperationException.class)
51+
public void testTranslate_UnsupportedFilterType(){
52+
new FilterTranslator().translate(new QueryExpression(){
53+
54+
@Override
55+
public JsonNode toJson() {
56+
throw new UnsupportedOperationException("Method should never be called.");
57+
}
58+
59+
});
60+
}
61+
4662
@Test
4763
public void testTranslate_ValueComparisonExpression_Equals(){
4864
QueryExpression query = new ValueComparisonExpression(
@@ -184,4 +200,25 @@ public void testTranslate_ArrayContainsExpression_NONE(){
184200
assertEquals("(!(&(somekey=somevalue)(somekey=someothervalue)))", filter.toString());
185201
}
186202

203+
@Test(expected = UnsupportedOperationException.class)
204+
public void testTranslate_ArrayMatchExpression(){
205+
QueryExpression query = new ArrayMatchExpression(null, null);
206+
207+
new FilterTranslator().translate(query);
208+
}
209+
210+
@Test(expected = UnsupportedOperationException.class)
211+
public void testTranslate_FieldComparisonExpression(){
212+
QueryExpression query = new FieldComparisonExpression(null, null, null);
213+
214+
new FilterTranslator().translate(query);
215+
}
216+
217+
@Test(expected = UnsupportedOperationException.class)
218+
public void testTranslate_RegexMatchExpression(){
219+
QueryExpression query = new RegexMatchExpression(null, null, false, false, false, false);
220+
221+
new FilterTranslator().translate(query);
222+
}
223+
187224
}

lightblue-ldap-crud/src/test/java/com/redhat/lightblue/crud/ldap/translator/ResultTranslatorTest.java

Lines changed: 139 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,31 @@
2323

2424
import java.util.ArrayList;
2525
import java.util.Arrays;
26+
import java.util.Iterator;
2627
import java.util.List;
2728

2829
import org.json.JSONException;
2930
import org.junit.Test;
3031
import org.skyscreamer.jsonassert.JSONAssert;
3132

33+
import com.fasterxml.jackson.databind.JsonNode;
3234
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
3335
import com.redhat.lightblue.crud.DocCtx;
34-
import com.redhat.lightblue.crud.ldap.translator.ResultTranslator;
36+
import com.redhat.lightblue.metadata.ArrayElement;
3537
import com.redhat.lightblue.metadata.ArrayField;
3638
import com.redhat.lightblue.metadata.EntityMetadata;
3739
import com.redhat.lightblue.metadata.Field;
40+
import com.redhat.lightblue.metadata.FieldTreeNode;
41+
import com.redhat.lightblue.metadata.ObjectField;
42+
import com.redhat.lightblue.metadata.ReferenceField;
3843
import com.redhat.lightblue.metadata.SimpleArrayElement;
3944
import com.redhat.lightblue.metadata.SimpleField;
45+
import com.redhat.lightblue.metadata.Type;
4046
import com.redhat.lightblue.metadata.types.BooleanType;
4147
import com.redhat.lightblue.metadata.types.DateType;
4248
import com.redhat.lightblue.metadata.types.IntegerType;
4349
import com.redhat.lightblue.metadata.types.StringType;
50+
import com.redhat.lightblue.util.Path;
4451
import com.unboundid.ldap.sdk.Attribute;
4552
import com.unboundid.ldap.sdk.SearchResult;
4653
import com.unboundid.ldap.sdk.SearchResultEntry;
@@ -139,6 +146,55 @@ public void testTranslate_SimpleField_Date() throws JSONException{
139146
true);
140147
}
141148

149+
@Test(expected = UnsupportedOperationException.class)
150+
public void testTranslate_SimpleField_Unknown() throws JSONException{
151+
SearchResult result = fakeSearchResult(
152+
new SearchResultEntry(-1, "uid=john.doe,dc=example,dc=com", new Attribute[]{
153+
new Attribute("uid", "john.doe")
154+
}));
155+
156+
EntityMetadata md = fakeEntityMetadata("fakeMetadata",
157+
new SimpleField("uid", new Type(){
158+
159+
@Override
160+
public String getName() {
161+
throw new UnsupportedOperationException("Method should never be called.");
162+
}
163+
164+
@Override
165+
public boolean supportsEq() {
166+
throw new UnsupportedOperationException("Method should never be called.");
167+
}
168+
169+
@Override
170+
public boolean supportsOrdering() {
171+
throw new UnsupportedOperationException("Method should never be called.");
172+
}
173+
174+
@Override
175+
public JsonNode toJson(JsonNodeFactory factory, Object value) {
176+
throw new UnsupportedOperationException("Method should never be called.");
177+
}
178+
179+
@Override
180+
public Object fromJson(JsonNode value) {
181+
throw new UnsupportedOperationException("Method should never be called.");
182+
}
183+
184+
@Override
185+
public int compare(Object v1, Object v2) {
186+
throw new UnsupportedOperationException("Method should never be called.");
187+
}
188+
189+
@Override
190+
public Object cast(Object v) {
191+
throw new UnsupportedOperationException("Method should never be called.");
192+
}
193+
}));
194+
195+
new ResultTranslator(factory).translate(result, md);
196+
}
197+
142198
@Test
143199
public void testTranslate_ObjectType() throws JSONException{
144200
SearchResult result = fakeSearchResult(
@@ -233,6 +289,88 @@ public void testTranslate_SimpleArrayElement_CountAskedFor() throws JSONExceptio
233289
true);
234290
}
235291

292+
@Test(expected = UnsupportedOperationException.class)
293+
public void testTranslate_UnknownArrayElement() throws JSONException{
294+
SearchResult result = fakeSearchResult(
295+
new SearchResultEntry(-1, "uid=john.doe,dc=example,dc=com", new Attribute[]{
296+
new Attribute("fakeArray", Arrays.asList("top", "person", "organizationalPerson", "inetOrgPerson"))
297+
}));
298+
299+
@SuppressWarnings("serial")
300+
EntityMetadata md = fakeEntityMetadata("fakeMetadata",
301+
new ArrayField("fakeArray", new ArrayElement(){
302+
303+
@Override
304+
public boolean hasChildren() {
305+
throw new UnsupportedOperationException("Method should never be called.");
306+
}
307+
308+
@Override
309+
public Iterator<? extends FieldTreeNode> getChildren() {
310+
throw new UnsupportedOperationException("Method should never be called.");
311+
}
312+
313+
@Override
314+
public FieldTreeNode resolve(Path p, int level) {
315+
throw new UnsupportedOperationException("Method should never be called.");
316+
}
317+
}));
318+
319+
new ResultTranslator(factory).translate(result, md);
320+
}
321+
322+
@Test(expected = UnsupportedOperationException.class)
323+
public void testTranslate_ObjectField() throws JSONException{
324+
SearchResult result = fakeSearchResult(
325+
new SearchResultEntry(-1, "uid=john.doe,dc=example,dc=com", new Attribute[]{new Attribute("fake")}));
326+
327+
EntityMetadata md = fakeEntityMetadata("fakeMetadata",
328+
new ObjectField("fake")
329+
);
330+
331+
new ResultTranslator(factory).translate(result, md);
332+
}
333+
334+
@Test(expected = UnsupportedOperationException.class)
335+
public void testTranslate_ReferenceField() throws JSONException{
336+
SearchResult result = fakeSearchResult(
337+
new SearchResultEntry(-1, "uid=john.doe,dc=example,dc=com", new Attribute[]{new Attribute("fake")}));
338+
339+
EntityMetadata md = fakeEntityMetadata("fakeMetadata",
340+
new ReferenceField("fake")
341+
);
342+
343+
new ResultTranslator(factory).translate(result, md);
344+
}
345+
346+
@Test(expected = UnsupportedOperationException.class)
347+
public void testTranslate_UnsupportedField() throws JSONException{
348+
SearchResult result = fakeSearchResult(
349+
new SearchResultEntry(-1, "uid=john.doe,dc=example,dc=com", new Attribute[]{new Attribute("fake")}));
350+
351+
@SuppressWarnings("serial")
352+
EntityMetadata md = fakeEntityMetadata("fakeMetadata", new Field("fake"){
353+
354+
@Override
355+
public boolean hasChildren() {
356+
throw new UnsupportedOperationException("Method should never be called.");
357+
}
358+
359+
@Override
360+
public Iterator<? extends FieldTreeNode> getChildren() {
361+
throw new UnsupportedOperationException("Method should never be called.");
362+
}
363+
364+
@Override
365+
public FieldTreeNode resolve(Path p, int level) {
366+
throw new UnsupportedOperationException("Method should never be called.");
367+
}
368+
369+
});
370+
371+
new ResultTranslator(factory).translate(result, md);
372+
}
373+
236374
protected SearchResult fakeSearchResult(SearchResultEntry... entries){
237375
return new SearchResult(-1, null, "", "", new String[0], Arrays.asList(entries), new ArrayList<SearchResultReference>(), entries.length, 0, null);
238376
}

lightblue-ldap-crud/src/test/java/com/redhat/lightblue/crud/ldap/translator/SortTranslatorTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import org.junit.Test;
2929

30-
import com.redhat.lightblue.crud.ldap.translator.SortTranslator;
30+
import com.fasterxml.jackson.databind.JsonNode;
3131
import com.redhat.lightblue.query.CompositeSortKey;
3232
import com.redhat.lightblue.query.Sort;
3333
import com.redhat.lightblue.query.SortKey;
@@ -96,4 +96,17 @@ public void testCompositeSortKey(){
9696
assertFalse(translatedSort2.reverseOrder());
9797
}
9898

99+
@SuppressWarnings("serial")
100+
@Test(expected = IllegalArgumentException.class)
101+
public void testUnsupportedSortType(){
102+
new SortTranslator().translate(new Sort(){
103+
104+
@Override
105+
public JsonNode toJson() {
106+
throw new UnsupportedOperationException("Method should never be called.");
107+
}
108+
109+
});
110+
}
111+
99112
}

0 commit comments

Comments
 (0)