def test_get_structmap_text(self, mock_deepharvest, mock_boto): '''Mock test s3 structmap_text getting''' media_json = open(DIR_FIXTURES + '/nuxeo_media_structmap.json').read() deepharvest_mocker(mock_deepharvest) mock_boto.return_value.get_bucket.return_value.\ get_key.return_value.\ get_contents_as_string.return_value = media_json h = fetcher.NuxeoFetcher('https://example.edu/api/v1/', 'path-to-asset/here') mock_deepharvest.assert_called_with( 'path-to-asset/here', '', conf_pynux={'api': 'https://example.edu/api/v1/'}) structmap_text = h._get_structmap_text( 's3://static.ucldc.cdlib.org/media_json/' '81249b9c-5a87-43af-877c-fb161325b1a0-media.json') mock_boto.assert_called_with() mock_boto().get_bucket.assert_called_with('static.ucldc.cdlib.org') mock_boto().get_bucket().get_key.assert_called_with( '/media_json/81249b9c-5a87-43af-877c-fb161325b1a0-media.json') self.assertEqual( structmap_text, "Angela Davis socializing with " "students at UC Irvine AS-061_A69-013_001.tif " "AS-061_A69-013_002.tif AS-061_A69-013_003.tif " "AS-061_A69-013_004.tif AS-061_A69-013_005.tif " "AS-061_A69-013_006.tif AS-061_A69-013_007.tif")
def test_get_isShownBy_video(self, mock_deepharvest, mock_boto): ''' test getting correct isShownBy value for Nuxeo video object ''' deepharvest_mocker(mock_deepharvest) httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/@search?query=SELECT+%2A+FROM+' 'Document+WHERE+ecm%3AparentId+%3D+' '%274c80e254-6def-4230-9f28-bc48878568d4%27+' 'AND+ecm%3AcurrentLifeCycleState+%21%3D+%27deleted%27+ORDER+BY+' 'ecm%3Apos¤tPageIndex=0&pageSize=100', responses=[ httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_no_children.json').read(), status=200), ]) h = fetcher.NuxeoFetcher('https://example.edu/api/v1', 'path-to-asset/here') nuxeo_metadata = open(DIR_FIXTURES + '/nuxeo_doc_video.json').read() nuxeo_metadata = json.loads(nuxeo_metadata) isShownBy = h._get_isShownBy(nuxeo_metadata) self.assertEqual( isShownBy, 'https://s3.amazonaws.com/static.ucldc.cdlib.org/' 'ucldc-nuxeo-thumb-media/4c80e254-6def-4230-9f28-bc48878568d4')
def test_get_isShownBy_pdf(self, mock_deepharvest, mock_boto): ''' test getting correct isShownBy value for Nuxeo doc with no images and PDF at parent level ''' deepharvest_mocker(mock_deepharvest) httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/@search?query=SELECT+%2A+FROM+' 'Document+WHERE+ecm%3AparentId+%3D+' '%2700d55837-01b6-4211-80d8-b966a15c257e%27+ORDER+BY+' 'ecm%3Apos¤tPageIndex=0&pageSize=100', responses=[ httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_no_children.json').read(), status=200), ]) h = fetcher.NuxeoFetcher('https://example.edu/api/v1', 'path-to-asset/here') nuxeo_metadata = open(DIR_FIXTURES + '/nuxeo_doc_pdf_parent.json').read() nuxeo_metadata = json.loads(nuxeo_metadata) isShownBy = h._get_isShownBy(nuxeo_metadata) self.assertEqual( isShownBy, 'https://s3.amazonaws.com/static.ucldc.cdlib.org/' 'ucldc-nuxeo-thumb-media/00d55837-01b6-4211-80d8-b966a15c257e')
def testFetch(self, mock_deepharvest, mock_boto): '''Test the httpretty mocked fetching of documents''' media_json = open(DIR_FIXTURES + '/nuxeo_media_structmap.json').read() deepharvest_mocker(mock_deepharvest) mock_boto.return_value.get_bucket.return_value.\ get_key.return_value.\ get_contents_as_string.return_value = media_json httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/path-to-asset/here/@children', responses=[ httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_folder.json').read(), status=200), httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_folder-1.json').read(), status=200), ]) httpretty.register_uri(httpretty.GET, re.compile('https://example.edu/api/v1/id/.*'), body=open(DIR_FIXTURES + '/nuxeo_doc.json').read()) httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/asset-library/UCI/Cochems' '/MS-R016_1092.tif/@children?currentPageIndex=0', responses=[ httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_no_children.json').read(), status=200), ]) h = fetcher.NuxeoFetcher('https://example.edu/api/v1', 'path-to-asset/here') mock_deepharvest.assert_called_with( 'path-to-asset/here', '', conf_pynux={'api': 'https://example.edu/api/v1'}) docs = [] for d in h: docs.append(d) self.assertEqual(3, len(docs)) self.assertIn('picture:views', docs[0]['properties']) self.assertIn('dc:subjects', docs[0]['properties']) self.assertIn('structmap_url', docs[0]) self.assertIn('structmap_text', docs[0]) self.assertEqual( docs[0]['structmap_text'], "Angela Davis socializing with students at UC Irvine " "AS-061_A69-013_001.tif AS-061_A69-013_002.tif " "AS-061_A69-013_003.tif AS-061_A69-013_004.tif " "AS-061_A69-013_005.tif AS-061_A69-013_006.tif " "AS-061_A69-013_007.tif") self.assertEqual( docs[0]['isShownBy'], 'https://nuxeo.cdlib.org/Nuxeo/nxpicsfile/default/' '40677ed1-f7c2-476f-886d-bf79c3fec8c4/Medium:content/')
def testInit(self, mock_deepharvest, mock_boto): '''Basic tdd start''' httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/path-to-asset/here/@children', body=open(DIR_FIXTURES + '/nuxeo_folder.json').read()) deepharvest_mocker(mock_deepharvest) h = fetcher.NuxeoFetcher('https://example.edu/api/v1/', 'path-to-asset/here') mock_deepharvest.assert_called_with( 'path-to-asset/here', '', conf_pynux={'api': 'https://example.edu/api/v1/'}) self.assertTrue(hasattr(h, '_url')) # assert in called next repeatedly self.assertEqual(h.url, 'https://example.edu/api/v1/') self.assertTrue(hasattr(h, '_nx')) self.assertIsInstance(h._nx, pynux.utils.Nuxeo) self.assertTrue(hasattr(h, '_children')) self.assertTrue(hasattr(h, 'next')) self.assertTrue(hasattr(h, '_structmap_bucket'))
def testFetch_missing_media_json(self, mock_deepharvest, mock_boto): '''Test the httpretty mocked fetching of documents''' deepharvest_mocker(mock_deepharvest) mock_boto.return_value.get_bucket.return_value.\ get_key.return_value = None httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/path-to-asset/here/@children', responses=[ httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_folder.json').read(), status=200), httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_folder-1.json').read(), status=200), ]) httpretty.register_uri(httpretty.GET, re.compile('https://example.edu/api/v1/id/.*'), body=open(DIR_FIXTURES + '/nuxeo_doc.json').read()) httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/asset-library/UCI/Cochems/' 'MS-R016_1092.tif/@children?currentPageIndex=0', responses=[ httpretty.Response(body=open(DIR_FIXTURES + '/nuxeo_no_children.json').read(), status=200), ]) h = fetcher.NuxeoFetcher('https://example.edu/api/v1', 'path-to-asset/here') mock_deepharvest.assert_called_with( 'path-to-asset/here', '', conf_pynux={'api': 'https://example.edu/api/v1'}) docs = [] for d in h: docs.append(d) self.assertEqual(docs[0]['structmap_text'], '') self.assertEqual(docs[1]['structmap_text'], '') self.assertEqual(docs[2]['structmap_text'], '')
def test_get_isShownBy_component_image(self, mock_deepharvest, mock_boto): ''' test getting correct isShownBy value for Nuxeo doc with no image at parent level, but an image at the component level ''' deepharvest_mocker(mock_deepharvest) httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/path/@search?query=' 'SELECT+%2A+FROM+Document+WHERE+ecm%3AparentId+%3D+' '%27d400bb29-98d4-429c-a0b8-119acdb92006%27+ORDER+BY+' 'ecm%3Apos¤tPageIndex=0&pageSize=100', responses=[ httpretty.Response( body=open(DIR_FIXTURES + '/nuxeo_image_components.json') .read(), status=200), ]) httpretty.register_uri( httpretty.GET, 'https://example.edu/api/v1/id/' 'e8af2d74-0c8b-4d18-b86c-4067b9e16159', responses=[ httpretty.Response( body=open(DIR_FIXTURES + '/nuxeo_first_image_component.json').read(), status=200), ]) h = fetcher.NuxeoFetcher('https://example.edu/api/v1', 'path-to-asset/here') nuxeo_metadata = open(DIR_FIXTURES + '/nuxeo_doc_imageless_parent.json').read() nuxeo_metadata = json.loads(nuxeo_metadata) isShownBy = h._get_isShownBy(nuxeo_metadata) self.assertEqual( isShownBy, 'https://nuxeo.cdlib.org/Nuxeo/nxpicsfile/default/' 'e8af2d74-0c8b-4d18-b86c-4067b9e16159/Medium:content/')