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(publicationsQuery, pageHeader.getQuery());
42
		assertEquals(1, pageHeader.getPage());
43
		assertEquals(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(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(publicationsQuery, pageHeader.getQuery());
105
		assertEquals(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(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(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(pageWT.allWithWTFunding());
179

    
180
		URIBuilder builderUK = new URIBuilder(requestBaseURL).setPath(publicationsPath);
181
		builderUK.addParameter("hasWTFunding", "true");
182
		URI uri2 = builderUK.build();
183
		System.out.println(uri2);
184
		String resultsUK = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri2);
185
		OpenAireDocumentPage pageUK = new OpenAireDocumentPage(DocumentHelper.parseText(resultsUK));
186

    
187
		assertTrue(pageUK.getResponseHeader().getTotal() >= pageWT.getResponseHeader().getTotal());
188
	}
189

    
190
	@Test
191
	public void testPublicationsSingleOpenaireID() throws URISyntaxException, DocumentException {
192
		String testRecordId = "od________18::f055e1a3188aa57b454b1bfc0b882ed2";
193
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
194
		builder.addParameter("openairePublicationID", testRecordId);
195
		URI uri = builder.build();
196
		System.out.println(uri);
197
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
198
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
199
		assertEquals(1, page.getResponseHeader().getTotal());
200
		List<String> objIds = page.getObjIdentifiers();
201
		assertEquals(1, objIds.size());
202
		assertTrue(objIds.contains(testRecordId));
203
	}
204

    
205
	@Test
206
	public void testPublicationsMultipleOpenaireIDs1() throws URISyntaxException, DocumentException {
207
		String testRecordId1 = "od________18::f055e1a3188aa57b454b1bfc0b882ed2";
208
		String testRecordId2 = "od________18::5ea480618e9ab9e7db827fa498422075";
209
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
210
		builder.addParameter("openairePublicationID", testRecordId1 + "," + testRecordId2);
211
		URI uri = builder.build();
212
		System.out.println(uri);
213
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
214
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
215
		assertEquals(2, page.getResponseHeader().getTotal());
216
		List<String> objIds = page.getObjIdentifiers();
217
		assertEquals(2, objIds.size());
218
		assertTrue(objIds.contains(testRecordId1));
219
		assertTrue(objIds.contains(testRecordId2));
220
	}
221

    
222
	@Test
223
	public void testPublicationsMultipleOpenaireIDs2() throws URISyntaxException, DocumentException {
224
		String testRecordId1 = "od________18::f055e1a3188aa57b454b1bfc0b882ed2";
225
		String testRecordId2 = "od________18::5ea480618e9ab9e7db827fa498422075";
226
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
227
		builder.addParameter("openairePublicationID", testRecordId1);
228
		builder.addParameter("openairePublicationID", testRecordId2);
229
		URI uri = builder.build();
230
		System.out.println(uri);
231
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
232
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
233
		assertEquals(2, page.getResponseHeader().getTotal());
234
		List<String> objIds = page.getObjIdentifiers();
235
		assertEquals(2, objIds.size());
236
		assertTrue(objIds.contains(testRecordId1));
237
		assertTrue(objIds.contains(testRecordId2));
238
	}
239

    
240
	@Test
241
	public void testPublicationsUnexistingOpenaireID() throws URISyntaxException, DocumentException {
242
		String testRecordId = "foo::d1bb389d90e0a4393f7ea00c457a62b5";
243
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
244
		builder.addParameter("openairePublicationID", testRecordId);
245
		URI uri = builder.build();
246
		System.out.println(uri);
247
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
248
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
249
		assertEquals(0, page.getResponseHeader().getTotal());
250
	}
251

    
252
	//TODO: Unignore the test when the path to the pid is fixed on the index side
253
	@Ignore
254
	@Test
255
	public void testPublicationsSingleDOI() throws URISyntaxException, DocumentException {
256
		String testRecordId = "dedup_wf_001::fc4c3a6c233f478586f5fb3259b25bc4";
257
		String doi = "10.1143/JPSJ.74.1954";
258
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
259
		builder.addParameter("doi", doi);
260
		URI uri = builder.build();
261
		System.out.println(uri);
262
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
263
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
264
		assertEquals(1, page.getResponseHeader().getTotal());
265
		List<String> objIds = page.getObjIdentifiers();
266
		assertEquals(1, objIds.size());
267
		assertTrue(objIds.contains(testRecordId));
268
	}
269

    
270
	@Test
271
	public void testPublicationsMultipleDOIs1() throws URISyntaxException, DocumentException {
272
		String testRecordId1 = "dedup_wf_001::fc4c3a6c233f478586f5fb3259b25bc4";
273
		String testRecordId2 = "dedup_wf_001::eb22f16c808595b58c277ba95bc96275";
274
		String doi1 = "10.1143/JPSJ.74.1954";
275
		String doi2 = "10.1103/physrevlett.116.116401";
276
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath);
277
		builder.addParameter("doi", doi1 + "," + doi2);
278
		URI uri = builder.build();
279
		System.out.println(uri);
280
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
281
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
282
		assertTrue(page.getResponseHeader().getTotal() >= 2);
283
		List<String> objIds = page.getObjIdentifiers();
284
		assertEquals(page.getResponseHeader().getTotal(), objIds.size());
285
		assertTrue(objIds.contains(testRecordId1));
286
		assertTrue(objIds.contains(testRecordId2));
287
	}
288

    
289
	@Test
290
	public void testPublicationsFromDate() throws URISyntaxException, DocumentException {
291
		String date = "2012-03-15";
292
		String expectedQuery = publicationsQuery + " and (resultdateofacceptance within \"2012-03-15 "+today+"\")";
293

    
294
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("fromDateAccepted", date);
295
		URI uri = builder.build();
296
		System.out.println(uri);
297
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
298
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
299
		assertNotNull(page);
300
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
301
	}
302

    
303
	@Test
304
	public void testPublicationsToDate() throws URISyntaxException, DocumentException {
305
		String date = "2013-03-15";
306
		String expectedQuery = publicationsQuery + " and (resultdateofacceptance within \"* 2013-03-15\")";
307

    
308
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("toDateAccepted", date);
309
		URI uri = builder.build();
310
		System.out.println(uri);
311
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
312
		System.out.println(results.substring(0, 500));
313
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
314
		assertNotNull(page);
315
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
316
	}
317

    
318
	@Test
319
	public void testPublicationsByTitle() throws URISyntaxException, DocumentException {
320
		String title = "Enhanced Publications";
321
		String expectedQuery = publicationsQuery + " and (resulttitle = \"Enhanced\") and (resulttitle = \"Publications\")";
322
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("title", title);
323
		URI uri = builder.build();
324
		System.out.println(uri);
325
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
326
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
327
		assertNotNull(page);
328
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
329
	}
330

    
331
	@Test
332
	public void testPublicationsByAuthor() throws URISyntaxException, DocumentException {
333
		String author = "bardi alessia manghi";
334
		String expectedQuery = publicationsQuery + " and (relperson = \"bardi\") and (relperson = \"alessia\") and (relperson = \"manghi\")";
335
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("author", author);
336
		URI uri = builder.build();
337
		System.out.println(uri);
338
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
339
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
340
		assertNotNull(page);
341
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
342
	}
343

    
344

    
345
	// Expect exception because the openaireAuthorID field must not be accepted
346
	@Test(expected=IllegalArgumentException.class)
347
	public void testPublicationsByAuthorId() throws URISyntaxException, DocumentException{
348
		String authorId = "od______2367::3fbd0b3533bd0e6089c1fe68b115f772";
349
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireAuthorID", authorId);
350
		URI uri = builder.build();
351
		System.out.println(uri);
352
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
353
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
354
		assertNotNull(page);
355
	}
356

    
357
	@Test
358
	public void testPublicationsByProviderId() throws URISyntaxException, DocumentException {
359
		// this is PUMA
360
		String providerId = "opendoar____::300891a62162b960cf02ce3827bb363c";
361
		String expectedQuery = publicationsQuery + " and (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\")";
362
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireProviderID", providerId);
363
		URI uri = builder.build();
364
		System.out.println(uri);
365
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
366
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
367
		assertNotNull(page);
368
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
369
	}
370

    
371
	@Test
372
	public void testPublicationsByMultipleProviderIds() throws URISyntaxException, DocumentException {
373
		// this is PUMA
374
		String providerId1 = "opendoar____::300891a62162b960cf02ce3827bb363c";
375
		String providerId2 = "opendoar____::300891a62162b960cf02ce3827bb363c";
376
		String expectedQuery = publicationsQuery + " and (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\") or (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\")";
377
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireProviderID", providerId1 + "," + providerId2);
378
		URI uri = builder.build();
379
		System.out.println(uri);
380
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
381
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
382
		assertNotNull(page);
383
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
384
	}
385

    
386
	@Test
387
	public void testPublicationsBy2ProviderId() throws URISyntaxException, DocumentException {
388
		// this is PUMA
389
		String providerId1 = "opendoar____::300891a62162b960cf02ce3827bb363c";
390
		// this is UTL Repository
391
		String providerId2 = "opendoar____::0c8ce55163055c4da50a81e0a273468c";
392
		 String expectedQuery = publicationsQuery + " and (resulthostingdatasourceid exact \"opendoar____::300891a62162b960cf02ce3827bb363c\") or (resulthostingdatasourceid exact \"opendoar____::0c8ce55163055c4da50a81e0a273468c\")";
393
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("openaireProviderID", providerId1)
394
				.addParameter("openaireProviderID", providerId2);
395
		URI uri = builder.build();
396
		System.out.println(uri);
397
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
398
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
399
		assertNotNull(page);
400
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
401
	}
402

    
403
	@Test
404
	public void testPublicationsByProject() throws URISyntaxException, DocumentException {
405
		// <code>213153</code>
406
		// <acronym>BREAST CT</acronym>
407
		// <objIdentifier>corda_______::227de3026bb4ceb724f139437520a9ce</objIdentifier>
408
		URIBuilder builderFP7ProjectID = new URIBuilder(requestBaseURL).setPath(publicationsPath);
409
		builderFP7ProjectID.addParameter("FP7ProjectID", "213153");
410
		URI uri1 = builderFP7ProjectID.build();
411
		System.out.println(uri1);
412
		String resultsFP7ProjectID = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri1);
413
		OpenAireDocumentPage pageFP7ProjectID = new OpenAireDocumentPage(DocumentHelper.parseText(resultsFP7ProjectID));
414

    
415
		URIBuilder builderOAProjectID = new URIBuilder(requestBaseURL).setPath(publicationsPath);
416
		builderOAProjectID.addParameter("openaireProjectID", "corda_______::227de3026bb4ceb724f139437520a9ce");
417
		URI uri2 = builderOAProjectID.build();
418
		System.out.println(uri2);
419
		String resultsOAProjectID = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri2);
420
		OpenAireDocumentPage pageOAProjectID = new OpenAireDocumentPage(DocumentHelper.parseText(resultsOAProjectID));
421

    
422
		assertEquals(pageFP7ProjectID.getResponseHeader().getTotal(), pageOAProjectID.getResponseHeader().getTotal());
423
	}
424

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

    
437
	@Test
438
	public void testPublicationsWithoutProjects() throws URISyntaxException, DocumentException {
439
		String expectedQuery = publicationsQuery + " not (relprojectid = \"*\")";
440
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("hasProject", "false");
441
		URI uri = builder.build();
442
		System.out.println(uri);
443
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
444
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
445
		assertNotNull(page);
446
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
447
	}
448

    
449
	@Test
450
	public void testPublicationsOA() throws URISyntaxException, DocumentException {
451
		String expectedQuery = publicationsQuery + " and (resultbestaccessright exact \"Open Access\")";
452
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("OA", "true");
453
		URI uri = builder.build();
454
		System.out.println(uri);
455
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
456
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
457
		assertNotNull(page);
458
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
459
	}
460

    
461
	@Test
462
	public void testPublicationsNonOA() throws URISyntaxException, DocumentException {
463
		String expectedQuery = publicationsQuery + " and (resultbestaccessright <> \"Open Access\")";
464
		URIBuilder builder = new URIBuilder(requestBaseURL).setPath(publicationsPath).addParameter("OA", "false");
465
		URI uri = builder.build();
466
		System.out.println(uri);
467
		String results = getApiClient().doRequest(EntityType.publication, ApiModel.openaire, uri);
468
		OpenAireDocumentPage page = new OpenAireDocumentPage(DocumentHelper.parseText(results));
469
		assertNotNull(page);
470
		assertEquals(expectedQuery, page.getResponseHeader().getQuery());
471
	}
472
}
(4-4/5)