1   /*
2    * Copyright 2008 Hippo
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" 
12   * BASIS, 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 nl.hippo.client.webdav.caching;
17  
18  import java.io.InputStream;
19  
20  import junit.framework.TestCase;
21  import nl.hippo.client.api.content.DocumentPath;
22  import nl.hippo.client.api.event.EventValidity;
23  import nl.hippo.client.api.event.EventValidityImpl;
24  import nl.hippo.client.webdav.WebdavConfig;
25  import nl.hippo.client.webdav.WebdavConfigFactory;
26  import nl.hippo.client.webdav.WebdavRequest;
27  import nl.hippo.client.webdav.utils.Converters;
28  
29  public class EventValidityCalculatorTest extends TestCase {
30  
31      public void setUp() throws Exception {
32      }
33  
34      public void testTwoRelativeScopes() throws Exception {
35          InputStream is = EventValidityCalculatorTest.class
36                  .getResourceAsStream("resources/dasl-two-relative-scopes.xml");
37          String dasl = Converters.stream2String(is, "UTF-8");
38  
39          WebdavConfigFactory fact = new WebdavConfigFactory();
40          fact.setNamespace("default");
41          fact.setFilespath("files/default.preview/");
42          WebdavConfig conf = new WebdavConfig(fact);
43  
44          DocumentPath path = conf.getBasePath().createRelativePath("/aap/noot/mies");
45  
46          WebdavRequest request = new WebdavRequest(conf, path, "TEST", dasl);
47  
48          EventValidity[] validities = EventValidityCalculator.calculate(request);
49  
50          assertEquals(new EventValidityImpl("/default/files/default.preview/aap/noot/mies/foo/bar"), validities[0]);
51          assertEquals(new EventValidityImpl("/default/files/default.preview/aap/noot/mies/binaries/pdf"), validities[1]);
52          assertTrue(validities.length == 2);
53      }
54  
55      public void testOneAbsoluteOneRelativeScope() throws Exception {
56          InputStream is = EventValidityCalculatorTest.class
57                  .getResourceAsStream("resources/dasl-one-absolute-one-relative-scope.xml");
58          String dasl = Converters.stream2String(is, "UTF-8");
59  
60          WebdavConfigFactory fact = new WebdavConfigFactory();
61          fact.setNamespace("default");
62          fact.setFilespath("files/default.preview/");
63          WebdavConfig conf = new WebdavConfig(fact);
64  
65          DocumentPath path = conf.getBasePath().createRelativePath("/aap/noot/mies");
66  
67          WebdavRequest request = new WebdavRequest(conf, path, "TEST", dasl);
68  
69          EventValidity[] validities = EventValidityCalculator.calculate(request);
70  
71          assertEquals(new EventValidityImpl("/default/files/default.preview/aap/noot"), validities[0]);
72          assertEquals(new EventValidityImpl("/default/files/default.preview/aap/noot/mies/binaries/pdf"), validities[1]);
73          assertTrue(validities.length == 2);
74      }
75      
76      public void testOneAbsoluteOneRelativeScopeTrailingSlash() throws Exception {
77          InputStream is = EventValidityCalculatorTest.class
78                  .getResourceAsStream("resources/dasl-one-absolute-one-relative-scope-trailing-slash.xml");
79          String dasl = Converters.stream2String(is, "UTF-8");
80  
81          WebdavConfigFactory fact = new WebdavConfigFactory();
82          fact.setNamespace("default");
83          fact.setFilespath("files/default.preview/");
84          WebdavConfig conf = new WebdavConfig(fact);
85  
86          DocumentPath path = conf.getBasePath().createRelativePath("/aap/noot/mies");
87  
88          WebdavRequest request = new WebdavRequest(conf, path, "TEST", dasl);
89  
90          EventValidity[] validities = EventValidityCalculator.calculate(request);
91  
92          assertEquals(new EventValidityImpl("/default/files/default.preview/aap/noot"), validities[0]);
93          assertEquals(new EventValidityImpl("/default/files/default.preview/aap/noot/mies/binaries/pdf"), validities[1]);
94          assertTrue(validities.length == 2);
95      }
96  
97      public void testTwoAbsoluteScopes() throws Exception {
98          InputStream is = EventValidityCalculatorTest.class
99                  .getResourceAsStream("resources/dasl-two-absolute-scopes.xml");
100         String dasl = Converters.stream2String(is, "UTF-8");
101 
102         WebdavConfigFactory fact = new WebdavConfigFactory();
103         fact.setNamespace("default");
104         fact.setFilespath("files/default.preview/");
105         WebdavConfig conf = new WebdavConfig(fact);
106 
107         DocumentPath path = conf.getBasePath().createRelativePath("/aap/noot/mies");
108 
109         WebdavRequest request = new WebdavRequest(conf, path, "TEST", dasl);
110 
111         EventValidity[] validities = EventValidityCalculator.calculate(request);
112 
113         assertEquals(new EventValidityImpl("/aap/noot/mies"), validities[0]);
114         assertEquals(new EventValidityImpl("/foo/bar"), validities[1]);
115         assertTrue(validities.length == 2);
116     }
117 
118     public void testOneEmptyScope() throws Exception {
119         InputStream is = EventValidityCalculatorTest.class
120                 .getResourceAsStream("resources/dasl-one-empty-scope.xml");
121         String dasl = Converters.stream2String(is, "UTF-8");
122 
123         WebdavConfigFactory fact = new WebdavConfigFactory();
124         fact.setNamespace("default");
125         fact.setFilespath("files/default.preview/");
126         WebdavConfig conf = new WebdavConfig(fact);
127 
128         DocumentPath path = conf.getBasePath().createRelativePath("/content/documents");
129 
130         WebdavRequest request = new WebdavRequest(conf, path, "TEST", dasl);
131 
132         EventValidity[] validities = EventValidityCalculator.calculate(request);
133 
134         assertEquals(new EventValidityImpl("/default/files/default.preview/content/documents"), validities[0]);
135         assertTrue(validities.length == 1);
136     }
137     
138     
139     public void testOneEmptyScopeOneRelativeScope() throws Exception {
140         InputStream is = EventValidityCalculatorTest.class
141                 .getResourceAsStream("resources/dasl-one-empty-scope-one-relative-scope.xml");
142         String dasl = Converters.stream2String(is, "UTF-8");
143 
144         WebdavConfigFactory fact = new WebdavConfigFactory();
145         fact.setNamespace("default");
146         fact.setFilespath("files/default.preview/");
147         WebdavConfig conf = new WebdavConfig(fact);
148 
149         DocumentPath path = conf.getBasePath().createRelativePath("/content/documents");
150 
151         WebdavRequest request = new WebdavRequest(conf, path, "TEST", dasl);
152 
153         EventValidity[] validities = EventValidityCalculator.calculate(request);
154 
155         assertEquals(new EventValidityImpl("/default/files/default.preview/content/documents"), validities[0]);
156         assertEquals(new EventValidityImpl("/default/files/default.preview/content/documents/binaries/pdf"), validities[1]);
157         assertTrue(validities.length == 2);
158     }
159     
160     
161     public void testOneEmptyScopeOneAbsoluteScope() throws Exception {
162         InputStream is = EventValidityCalculatorTest.class
163                 .getResourceAsStream("resources/dasl-one-empty-scope-one-absolute-scope.xml");
164         String dasl = Converters.stream2String(is, "UTF-8");
165 
166         WebdavConfigFactory fact = new WebdavConfigFactory();
167         fact.setNamespace("default");
168         fact.setFilespath("files/default.preview/");
169         WebdavConfig conf = new WebdavConfig(fact);
170 
171         DocumentPath path = conf.getBasePath().createRelativePath("/content/documents");
172 
173         WebdavRequest request = new WebdavRequest(conf, path, "TEST", dasl);
174 
175         EventValidity[] validities = EventValidityCalculator.calculate(request);
176 
177         assertEquals(new EventValidityImpl("/default/files/default.preview/content/documents"), validities[0]);
178         assertEquals(new EventValidityImpl("/default/files/default.preview/content/documents/bulk"), validities[1]);
179         assertTrue(validities.length == 2);
180     }
181 
182 }