Project

General

Profile

Download (5.22 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2021 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.api.service.media;
10

    
11
import static org.junit.Assert.assertEquals;
12
import static org.junit.Assert.assertFalse;
13
import static org.junit.Assert.assertNotNull;
14
import static org.junit.Assert.assertTrue;
15

    
16
import java.io.FileNotFoundException;
17
import java.io.IOException;
18
import java.net.URISyntaxException;
19

    
20
import org.apache.http.HttpException;
21
import org.junit.Before;
22
import org.junit.Test;
23
import org.unitils.spring.annotation.SpringBeanByType;
24

    
25
import eu.etaxonomy.cdm.common.URI;
26
import eu.etaxonomy.cdm.common.UriUtils;
27
import eu.etaxonomy.cdm.common.media.CdmImageInfo;
28
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
29

    
30
/**
31
 * @author a.kohlbecker
32
 * @since May 17, 2021
33
 */
34
public class MediaInfoFactoryTest extends CdmIntegrationTest {
35

    
36
    @SpringBeanByType
37
    private IMediaInfoFactory mediaInfoFactory;
38

    
39
    private URI transformableURI_ScalerAPI;
40
    private URI transformableURI_IIIF_API;
41

    
42
    private URI notTransformableURI;
43

    
44
    @Before
45
    public void initUris() throws URISyntaxException {
46
        transformableURI_ScalerAPI = new URI("https://pictures.bgbm.org/digilib/Scaler?fn=Cyprus/Sisymbrium_aegyptiacum_C1.jpg&mo=file");
47
        transformableURI_IIIF_API = new URI("https://pictures.bgbm.org/digilib/Scaler/IIIF/Cichorieae!Lactuca_serriola_Bc_08.jpg/full/full/0/default.jpg");
48
        notTransformableURI = new URI(MediaInfoFactoryTest.class.getResource("./images/OregonScientificDS6639-DSC_0307-small.jpg"));
49
    }
50

    
51
    @Test
52
    public void readMediaInfoViaFileReader() throws IOException, HttpException {
53
        assertTrue(((MediaInfoFactory)mediaInfoFactory).applyURITransformations(notTransformableURI).isEmpty());
54
        CdmImageInfo cdmImageInfo = mediaInfoFactory.cdmImageInfo(notTransformableURI, true);
55
        assertNotNull(cdmImageInfo);
56
        assertEquals(225, cdmImageInfo.getHeight());
57
        assertEquals(300, cdmImageInfo.getWidth());
58
    }
59

    
60
    @Test
61
    public void readMediaInfoViaServiceReaderScalerAPI() throws IOException, HttpException, URISyntaxException {
62
        assertEquals(1, ((MediaInfoFactory)mediaInfoFactory).applyURITransformations(transformableURI_ScalerAPI).size());
63
        if(UriUtils.isInternetAvailable(new URI("https://image.bgbm.org/"))){
64
            CdmImageInfo cdmImageInfo = mediaInfoFactory.cdmImageInfo(transformableURI_ScalerAPI, true);
65
            assertNotNull(cdmImageInfo);
66
            assertEquals(954, cdmImageInfo.getHeight());
67
            assertEquals(1400, cdmImageInfo.getWidth());
68
            assertEquals("JPEG", cdmImageInfo.getSuffix());
69
            assertEquals("JPEG", cdmImageInfo.getFormatName());
70
            assertEquals(24, cdmImageInfo.getBitPerPixel());
71
            assertEquals("image/jpeg", cdmImageInfo.getMimeType());
72
            assertEquals(321414, cdmImageInfo.getLength());
73
            // generic metadata
74
            assertFalse(cdmImageInfo.getMetaData().isEmpty());
75
            assertEquals(55, cdmImageInfo.getMetaData().size());
76
            assertTrue(cdmImageInfo.getMetaData().containsKey("XResolution"));
77
            // multiple values for XResolution concatenated
78
            assertEquals("300; 72", cdmImageInfo.getMetaData().get("XResolution"));
79
        }
80

    
81
    }
82

    
83

    
84
    @Test
85
    public void readMediaInfoViaServiceReaderIIIF_API() throws IOException, HttpException, URISyntaxException {
86
        assertEquals(1, ((MediaInfoFactory)mediaInfoFactory).applyURITransformations(transformableURI_IIIF_API).size());
87
        if(UriUtils.isInternetAvailable(new URI("https://image.bgbm.org/"))){
88
            CdmImageInfo cdmImageInfo = mediaInfoFactory.cdmImageInfo(transformableURI_IIIF_API, true);
89
            assertNotNull(cdmImageInfo);
90
            assertEquals(2592, cdmImageInfo.getHeight());
91
            assertEquals(3456, cdmImageInfo.getWidth());
92
            assertEquals("JPEG", cdmImageInfo.getSuffix());
93
            assertEquals("JPEG", cdmImageInfo.getFormatName());
94
            assertEquals(24, cdmImageInfo.getBitPerPixel());
95
            assertEquals("image/jpeg", cdmImageInfo.getMimeType());
96
            assertEquals(3780263, cdmImageInfo.getLength());
97
            // generic metadata
98
            assertFalse(cdmImageInfo.getMetaData().isEmpty());
99
            assertEquals(56, cdmImageInfo.getMetaData().size());
100
            assertTrue(cdmImageInfo.getMetaData().containsKey("ExifVersion"));
101
            assertEquals("48, 50, 50, 49", cdmImageInfo.getMetaData().get("ExifVersion"));
102
            // custom metadata stored in the "Keywords"
103
            assertEquals("Lactuca serriola", cdmImageInfo.getMetaData().get("Taxon"));
104
            assertEquals("Germany, Sachsen-Anhalt, am Jersleber See", cdmImageInfo.getMetaData().get("Locality"));
105
            assertEquals("Lactuca serriola", cdmImageInfo.getMetaData().get("Taxon"));
106
            assertEquals("23.8.2009", cdmImageInfo.getMetaData().get("Date"));
107
            assertEquals("N. Kilian", cdmImageInfo.getMetaData().get("Photographer"));
108
        }
109

    
110
    }
111

    
112
    @Override
113
    public void createTestDataSet() throws FileNotFoundException {
114
        // not needed
115
    }
116

    
117
}
(1-1/4)