Project

General

Profile

1
package eu.dnetlib.api.client;
2

    
3
import java.net.URI;
4
import java.net.URISyntaxException;
5
import java.text.SimpleDateFormat;
6
import java.util.Date;
7
import java.util.List;
8

    
9
import eu.dnetlib.api.utils.OpenAireDocumentPage;
10
import eu.dnetlib.api.utils.ResponseHeader;
11
import org.apache.http.client.utils.URIBuilder;
12
import org.dom4j.Document;
13
import org.dom4j.DocumentException;
14
import org.dom4j.DocumentHelper;
15
import org.junit.Before;
16
import org.junit.Ignore;
17
import org.junit.Test;
18

    
19
import static org.junit.Assert.*;
20

    
21
@Ignore
22
public class OpenairePublicationsApiClientTest extends OpenaireApiClientTest {
23

    
24
	String today = "";
25

    
26
	@Before
27
	public void setUp() {
28
		Date d = new Date();
29
		SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd");
30
		today = format.format(d);
31
	}
32

    
33
	@Test
34
	public void testPublications() throws URISyntaxException, DocumentException {
35
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
36
		URI uri = builder.build();
37
		System.out.println(uri);
38
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
39
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
40
		ResponseHeader pageHeader = page.getResponseHeader();
41
		assertEquals("unexpected query",publicationsQuery, pageHeader.getQuery());
42
		assertEquals("unexpected page number", 1, pageHeader.getPage());
43
		assertEquals("unexpected page size", defaultPageSize, pageHeader.getPageSize());
44
	}
45

    
46
	@Test
47
	public void testPublicationParameters() throws URISyntaxException, DocumentException {
48
		for (String param : commonParameters) {
49
			if (!param.equals("model") && !param.equals("format") && !param.equals("page") && !param.equals("size") && !param.equals("sortBy")) {
50
				URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter(param, "test");
51
				URI uri = builder.build();
52
				System.out.println(uri);
53
				String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
54
				checkNotException(results);
55
			}
56
		}
57
		for (String param : publicationParameters) {
58
			if (!param.equals("fromDateAccepted") && !param.equals("toDateAccepted")) {
59
				URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter(param, "test");
60
				URI uri = builder.build();
61
				System.out.println(uri);
62
				String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
63
				checkNotException(results);
64
			}
65
		}
66
	}
67

    
68
	@Test
69
	public void testPublicationsUnexistingParameter() throws URISyntaxException, DocumentException {
70
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
71
		builder.addParameter("pippo", "hello");
72
		URI uri = builder.build();
73
		System.out.println(uri);
74
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
75
		checkException(results, "java.lang.IllegalArgumentException");
76
	}
77

    
78
	@Test
79
	public void testSortByPublicationsParameters() throws URISyntaxException, DocumentException {
80
		checkSortByParamaters(EntityType.publication);
81
	}
82

    
83
	@Test
84
	public void testPublicationsPage() throws URISyntaxException, DocumentException {
85
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
86
		builder.addParameter("page", "4");
87
		URI uri = builder.build();
88
		System.out.println(uri);
89
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
90
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
91
		ResponseHeader pageHeader = page.getResponseHeader();
92
		assertEquals("unexpected page number", 4, pageHeader.getPage());
93
	}
94

    
95
	@Test
96
	public void testPublicationsPageSize() throws URISyntaxException, DocumentException {
97
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
98
		builder.addParameter("size", "100");
99
		URI uri = builder.build();
100
		System.out.println(uri);
101
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
102
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
103
		ResponseHeader pageHeader = page.getResponseHeader();
104
		assertEquals("unexpected query",publicationsQuery, pageHeader.getQuery());
105
		assertEquals("unexpected page size", 100, pageHeader.getPageSize());
106
	}
107

    
108
	//Ignored just because it takes long time...
109
	@Ignore
110
	@Test
111
	public void testMaxPageSizePublication() throws URISyntaxException, DocumentException {
112
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("size", "" + MAX_PAGE_SIZE + 1);
113
		URI uri = builder.build();
114
		System.out.println(uri);
115
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
116
		checkException(results, "java.lang.IllegalArgumentException");
117

    
118
		builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("size", "" + MAX_PAGE_SIZE);
119
		uri = builder.build();
120
		System.out.println(uri);
121
		results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
122
		checkNotException(results);
123

    
124
		assertTrue(MAX_NUM_RESULTS >= MAX_PAGE_SIZE);
125
	}
126

    
127
	@Test
128
	public void testPublicationsFormatXML() throws URISyntaxException, DocumentException {
129
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
130
		builder.addParameter("format", "xml");
131
		URI uri = builder.build();
132
		System.out.println(uri);
133
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
134
		Document doc = DocumentHelper.parseText(results);
135
		assertNotNull(doc);
136
	}
137

    
138
	@Test
139
	public void testPublicationsFormatWrong() throws URISyntaxException, DocumentException {
140
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
141
		builder.addParameter("format", "hello");
142
		URI uri = builder.build();
143
		System.out.println(uri);
144
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
145
		checkException(results, "java.lang.IllegalArgumentException");
146
	}
147

    
148
	@Test
149
	public void testPublicationsECFunding() throws URISyntaxException, DocumentException {
150
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
151
		builder.addParameter("hasECFunding", "true");
152
		URI uri = builder.build();
153
		System.out.println(uri);
154
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
155
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
156
		assertTrue("not all entities with EC funding", page.allWithECFunding());
157
	}
158

    
159
	@Test
160
	public void testPublicationsWTFunding() throws URISyntaxException, DocumentException {
161
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
162
		builder.addParameter("hasWTFunding", "true");
163
		URI uri = builder.build();
164
		System.out.println(uri);
165
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
166
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
167
		assertTrue("not all entities with WT funding", page.allWithWTFunding());
168
	}
169

    
170
	@Test
171
	public void testPublicationsWTFunder() throws URISyntaxException, DocumentException {
172
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
173
		builder.addParameter("funder", "wt");
174
		URI uri1 = builder.build();
175
		System.out.println(uri1);
176
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri1);
177
		OpenAireDocumentPage pageWT = new OpenAireDocumentPage(DocumentHelper.parseText(results));
178
		assertTrue("not all entities with WT funding",pageWT.allWithWTFunding());
179
	}
180

    
181
	@Test
182
	public void testPublicationsSingleOpenaireID() throws URISyntaxException, DocumentException {
183
		String testRecordId = "od________18::f055e1a3188aa57b454b1bfc0b882ed2";
184
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
185
		builder.addParameter("openairePublicationID", testRecordId);
186
		URI uri = builder.build();
187
		System.out.println(uri);
188
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
189
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
190
		assertEquals("unexpected number of results",1, page.getResponseHeader().getTotal());
191
		List<String> objIds = page.getObjIdentifiers();
192
		assertTrue("unexpected objidentifier", objIds.contains(testRecordId));
193
	}
194

    
195
	@Test
196
	public void testPublicationsMultipleOpenaireIDs1() throws URISyntaxException, DocumentException {
197
		String testRecordId1 = "od________18::f055e1a3188aa57b454b1bfc0b882ed2";
198
		String testRecordId2 = "od________18::5ea480618e9ab9e7db827fa498422075";
199
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
200
		builder.addParameter("openairePublicationID", testRecordId1 + "," + testRecordId2);
201
		URI uri = builder.build();
202
		System.out.println(uri);
203
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
204
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
205
		assertEquals("unexpected number of results",2, page.getResponseHeader().getTotal());
206
		List<String> objIds = page.getObjIdentifiers();
207
		assertEquals("unexpected number of objidentifiers",2, objIds.size());
208
		assertTrue("objidentifier missing",objIds.contains(testRecordId1));
209
		assertTrue("objidentifier missing",objIds.contains(testRecordId2));
210
	}
211

    
212
	@Test
213
	public void testPublicationsMultipleOpenaireIDs2() throws URISyntaxException, DocumentException {
214
		String testRecordId1 = "od________18::f055e1a3188aa57b454b1bfc0b882ed2";
215
		String testRecordId2 = "od________18::5ea480618e9ab9e7db827fa498422075";
216
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
217
		builder.addParameter("openairePublicationID", testRecordId1);
218
		builder.addParameter("openairePublicationID", testRecordId2);
219
		URI uri = builder.build();
220
		System.out.println(uri);
221
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
222
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
223
		assertEquals("unexpected number of results",2, page.getResponseHeader().getTotal());
224
		List<String> objIds = page.getObjIdentifiers();
225
		assertEquals("unexpected number of objidentifiers",2, objIds.size());
226
		assertTrue("objidentifier missing",objIds.contains(testRecordId1));
227
		assertTrue("objidentifier missing",objIds.contains(testRecordId2));
228
	}
229

    
230
	@Test
231
	public void testPublicationsUnexistingOpenaireID() throws URISyntaxException, DocumentException {
232
		String testRecordId = "foo::d1bb389d90e0a4393f7ea00c457a62b5";
233
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
234
		builder.addParameter("openairePublicationID", testRecordId);
235
		URI uri = builder.build();
236
		System.out.println(uri);
237
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
238
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
239
		assertEquals("unexpected number of results", 0, page.getResponseHeader().getTotal());
240
	}
241

    
242
	//TODO: Unignore the test when the path to the pid is fixed on the index side
243
	@Ignore
244
	@Test
245
	public void testPublicationsSingleDOI() throws URISyntaxException, DocumentException {
246
		String testRecordId = "dedup_wf_001::fc4c3a6c233f478586f5fb3259b25bc4";
247
		String doi = "10.1143/JPSJ.74.1954";
248
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
249
		builder.addParameter("doi", doi);
250
		URI uri = builder.build();
251
		System.out.println(uri);
252
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
253
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
254
		assertEquals("unexpected number of results",1, page.getResponseHeader().getTotal());
255
		List<String> objIds = page.getObjIdentifiers();
256
		assertEquals("unexpected number of objidentifiers",1, objIds.size());
257
		assertTrue("missing expected objidentifier", objIds.contains(testRecordId));
258
	}
259

    
260
	@Test
261
	public void testPublicationsMultipleDOIs1() throws URISyntaxException, DocumentException {
262
		String testRecordId1 = "dedup_wf_001::fc4c3a6c233f478586f5fb3259b25bc4";
263
		String testRecordId2 = "dedup_wf_001::eb22f16c808595b58c277ba95bc96275";
264
		String doi1 = "10.1143/JPSJ.74.1954";
265
		String doi2 = "10.1103/physrevlett.116.116401";
266
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
267
		builder.addParameter("doi", doi1 + "," + doi2);
268
		URI uri = builder.build();
269
		System.out.println(uri);
270
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
271
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
272
		assertTrue("unexpected number of results",page.getResponseHeader().getTotal() >= 2);
273
		List<String> objIds = page.getObjIdentifiers();
274
		assertEquals("unexpected number of objidentifiers",page.getResponseHeader().getTotal(), objIds.size());
275
		assertTrue("missing expected objidentifier",objIds.contains(testRecordId1));
276
		assertTrue("missing expected objidentifier",objIds.contains(testRecordId2));
277
	}
278

    
279
	@Test
280
	public void testPublicationsFromDate() throws URISyntaxException, DocumentException {
281
		String date = "2012-03-15";
282
		String expectedQuery = publicationsQuery + " and (resultdateofacceptance within \"2012-03-15 "+today+"\")";
283

    
284
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("fromDateAccepted", date);
285
		URI uri = builder.build();
286
		System.out.println(uri);
287
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
288
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
289
		assertNotNull("null page",page);
290
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
291
	}
292

    
293
	@Test
294
	public void testPublicationsToDate() throws URISyntaxException, DocumentException {
295
		String date = "2013-03-15";
296
		String expectedQuery = publicationsQuery + " and (resultdateofacceptance within \"* 2013-03-15\")";
297

    
298
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("toDateAccepted", date);
299
		URI uri = builder.build();
300
		System.out.println(uri);
301
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
302
		System.out.println(results.substring(0, 500));
303
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
304
		assertNotNull("null page",page);
305
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
306
	}
307

    
308
	@Test
309
	public void testPublicationsByTitle() throws URISyntaxException, DocumentException {
310
		String title = "Enhanced Publications";
311
		String expectedQuery = publicationsQuery + " and (resulttitle = \"Enhanced\") and (resulttitle = \"Publications\")";
312
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("title", title);
313
		URI uri = builder.build();
314
		System.out.println(uri);
315
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
316
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
317
		assertNotNull("null page",page);
318
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
319
	}
320

    
321
	@Test
322
	public void testPublicationsByAuthor() throws URISyntaxException, DocumentException {
323
		String author = "bardi alessia manghi";
324
		String expectedQuery = publicationsQuery + " and (relperson = \"bardi\") and (relperson = \"alessia\") and (relperson = \"manghi\")";
325
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("author", author);
326
		URI uri = builder.build();
327
		System.out.println(uri);
328
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
329
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
330
		assertNotNull("null page",page);
331
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
332
	}
333

    
334

    
335
	@Test
336
	public void testPublicationsByAuthorId() throws URISyntaxException, DocumentException{
337
		String authorId = "od______2367::3fbd0b3533bd0e6089c1fe68b115f772";
338
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireAuthorID", authorId);
339
		URI uri = builder.build();
340
		System.out.println(uri);
341
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
342
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
343
		assertNotNull("null page",page);
344
		checkException(results, "java.lang.IllegalArgumentException");
345
	}
346

    
347
	@Test
348
	public void testPublicationsByProviderId() throws URISyntaxException, DocumentException {
349
		// this is PUMA
350
		String providerId = "opendoar____::300891a62162b960cf02ce3827bb363c";
351
		String expectedQuery = publicationsQuery + " and (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\")";
352
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireProviderID", providerId);
353
		URI uri = builder.build();
354
		System.out.println(uri);
355
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
356
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
357
		assertNotNull("null page",page);
358
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
359
	}
360

    
361
	@Test
362
	public void testPublicationsByMultipleProviderIds() throws URISyntaxException, DocumentException {
363
		// this is PUMA
364
		String providerId1 = "opendoar____::300891a62162b960cf02ce3827bb363c";
365
		String providerId2 = "opendoar____::300891a62162b960cf02ce3827bb363c";
366
		String expectedQuery = publicationsQuery + " and (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\") or (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\")";
367
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireProviderID", providerId1 + "," + providerId2);
368
		URI uri = builder.build();
369
		System.out.println(uri);
370
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
371
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
372
		assertNotNull("null page",page);
373
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
374
	}
375

    
376
	@Test
377
	public void testPublicationsBy2ProviderId() throws URISyntaxException, DocumentException {
378
		// this is PUMA
379
		String providerId1 = "opendoar____::300891a62162b960cf02ce3827bb363c";
380
		// this is UTL Repository
381
		String providerId2 = "opendoar____::0c8ce55163055c4da50a81e0a273468c";
382
		 String expectedQuery = publicationsQuery + " and (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\") or (resulthostingdatasourceid exact \"opendoar____::0c8ce55163055c4da50a81e0a273468c\")";
383
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireProviderID", providerId1)
384
				.addParameter("openaireProviderID", providerId2);
385
		URI uri = builder.build();
386
		System.out.println(uri);
387
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
388
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
389
		assertNotNull("null page",page);
390
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
391
	}
392

    
393
	@Test
394
	public void testPublicationsByProject() throws URISyntaxException, DocumentException {
395
		// <code>213153</code>
396
		// <acronym>BREAST CT</acronym>
397
		// <objIdentifier>corda_______::227de3026bb4ceb724f139437520a9ce</objIdentifier>
398
		URIBuilder builderFP7ProjectID = new URIBuilder(requestBaseURL).setPath(publicationsPath);
399
		builderFP7ProjectID.addParameter("FP7ProjectID", "213153");
400
		URI uri1 = builderFP7ProjectID.build();
401
		System.out.println(uri1);
402
		String resultsFP7ProjectID = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri1);
403
		OpenAireDocumentPage pageFP7ProjectID = new OpenAireDocumentPage(DocumentHelper.parseText(resultsFP7ProjectID));
404

    
405
		URIBuilder builderOAProjectID = new URIBuilder(requestBaseURL).setPath(publicationsPath);
406
		builderOAProjectID.addParameter("openaireProjectID", "corda_______::227de3026bb4ceb724f139437520a9ce");
407
		URI uri2 = builderOAProjectID.build();
408
		System.out.println(uri2);
409
		String resultsOAProjectID = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri2);
410
		OpenAireDocumentPage pageOAProjectID = new OpenAireDocumentPage(DocumentHelper.parseText(resultsOAProjectID));
411

    
412
		assertEquals(pageFP7ProjectID.getResponseHeader().getTotal(), pageOAProjectID.getResponseHeader().getTotal());
413
	}
414

    
415
	@Test
416
	public void testPublicationsWithProjects() throws URISyntaxException, DocumentException {
417
		String expectedQuery = publicationsQuery + " and (relprojectid = \"*\")";
418
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("hasProject", "true");
419
		URI uri = builder.build();
420
		System.out.println(uri);
421
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
422
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
423
		assertNotNull("null page",page);
424
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
425
	}
426

    
427
	@Test
428
	public void testPublicationsWithoutProjects() throws URISyntaxException, DocumentException {
429
		String expectedQuery = publicationsQuery + " not (relprojectid = \"*\")";
430
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("hasProject", "false");
431
		URI uri = builder.build();
432
		System.out.println(uri);
433
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
434
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
435
		assertNotNull("null page",page);
436
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
437
	}
438

    
439
	@Test
440
	public void testPublicationsOA() throws URISyntaxException, DocumentException {
441
		String expectedQuery = publicationsQuery + " and (resultbestaccessright exact \"Open Access\")";
442
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("OA", "true");
443
		URI uri = builder.build();
444
		System.out.println(uri);
445
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
446
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
447
		assertNotNull("null page",page);
448
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
449
	}
450

    
451
	@Test
452
	public void testPublicationsNonOA() throws URISyntaxException, DocumentException {
453
		String expectedQuery = publicationsQuery + " and (resultbestaccessright <> \"Open Access\")";
454
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("OA", "false");
455
		URI uri = builder.build();
456
		System.out.println(uri);
457
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
458
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
459
		assertNotNull("null page",page);
460
		assertEquals("unexpected query", expectedQuery, page.getResponseHeader().getQuery());
461
	}
462
}
(4-4/5)