def testLogError(self): env = Environment(root=self.tempdir) repository = env.addRepository(name="test", active=True) self.harvest._urlopen = lambda url: StringIO(OAIPMH_ERROR_OUTPUT) lico(self.dna.all.process(repository)) self.assertEquals('errorCode: error text', repository.readErrorLog())
def testAddDeleteWithoutResumption(self): env = Environment(root=self.tempdir) repository = env.addRepository(name="test", active=True) self.harvest._urlopen = lambda url: StringIO(OAIPMH_OUTPUT) lico(self.dna.all.process(repository)) self.assertEquals(['add', 'delete'], [m.name for m in self.observer.calledMethods]) self.assertEquals('', repository.resumptionToken) self.assertFalse(repository.active)
def testInvalidUrl(self): env = Environment(root=self.harvesterDataDir) repository = env.addRepository(name="repo-1", baseUrl="http://some.weird.url.that.does.not.work", metadataPrefix="rdf", setSpec="aset", active=True, apiKey=self.apiKeyForTestUser) process(self.config) self.assertEquals("<urlopen error [Errno -2] Name or service not known>", open(repository.errorLogPath).readlines()[-1])
def testOne(self): env = Environment(root=self.harvesterDataDir) open(join(self.httpDataDir, 'oai-repo1'), 'w').write(REPO1_RECORD) env.addRepository(name="repo-1", baseUrl="http://localhost:%s/oai-repo1" % self.httpPortNumber, metadataPrefix="rdf", setSpec="aset", active=True, apiKey=self.apiKeyForTestUser) open(join(self.httpDataDir, 'oai-repo2'), 'w').write(REPO2_RECORD) env.addRepository(name="repo-2", baseUrl="http://localhost:%s/oai-repo2" % self.httpPortNumber, metadataPrefix="rdf", active=False, apiKey=self.apiKeyForAnotherTestUser) self.assertQuery(0, "repo1") self.assertQuery(0, "repo2") process(self.config) self.assertQuery(1, "repo1") self.assertQuery(0, "repo2")
def testAddDelete(self): env = Environment(root=self.harvesterDataDir) open(join(self.httpDataDir, 'oai-testAddDelete'), 'w').write(TESTADDDELETE_ADD) repo = env.addRepository(name="repo-addDelete", baseUrl="http://localhost:%s/oai-testAddDelete" % self.httpPortNumber, metadataPrefix="rdf", setSpec="aset", active=True, apiKey=self.apiKeyForTestUser) self.assertTrue(repo.active) self.assertQuery(0, "testAddDelete") process(self.config) repo = env.getRepository(name=repo.name) # reload for state change self.assertFalse(repo.active) repo.active = True repo.save() self.assertQuery(1, "testAddDelete") open(join(self.httpDataDir, 'oai-testAddDelete'), 'w').write(TESTADDDELETE_DELETE) process(self.config) self.assertQuery(0, "testAddDelete")
def setUp(self): SeecrTestCase.setUp(self) self.dashboard = Dashboard() self.env = Environment(root=self.tempdir) self.dashboard.addObserver(self.env)
class DashboardTest(SeecrTestCase): def setUp(self): SeecrTestCase.setUp(self) self.dashboard = Dashboard() self.env = Environment(root=self.tempdir) self.dashboard.addObserver(self.env) def testRedirectOnGet(self): result = joco(self.dashboard.handleRequest(path='/whatever', Client=('127.0.0.1', 3451), Method='GET', session={})) header, body = result.split(CRLF*2) self.assertTrue('302' in header) self.assertTrue('Location: /' in header, header) def testCreateNotLoggedIn(self): result = joco(self.dashboard.handleRequest(path="/create", Client=('127.0.0.1', 1234), Method='POST', session={})) header, body = result.split(CRLF*2) self.assertTrue('302' in header) self.assertTrue('Location: /' in header, header) def testCreateLoggedIn(self): session = { 'user': User('admin'), } Body = urlencode(dict(repository='repoId1', formUrl='/harvester_dashboard?repository=%(repository)s')) result = joco(self.dashboard.handleRequest(path="/create", Client=('127.0.0.1', 1234), Method='POST', session=session, Body=Body)) header, body = result.split(CRLF*2) self.assertTrue('302' in header) self.assertTrue('Location: /harvester_dashboard?repository=repoId1' in header, header) self.assertEquals("repoId1", list(self.env.getRepositories())[0].name) def testEditRepository(self): session = dict(user=User('admin')) joco(self.dashboard.handleRequest( path="/create", Client=('127.0.0.1', 1234), Method='POST', session=session, Body=urlencode(dict(repository='repoId1', formUrl='/harvester_dashboard')))) self.assertEquals("", list(self.env.getRepositories())[0].baseUrl) self.assertEquals("", list(self.env.getRepositories())[0].metadataPrefix) self.assertEquals("", list(self.env.getRepositories())[0].setSpec) self.assertEquals("", list(self.env.getRepositories())[0].apiKey) self.assertEquals(False, list(self.env.getRepositories())[0].active) joco(self.dashboard.handleRequest( path="/something/update", Client=('127.0.0.1', 1234), Method='POST', session=session, Body=urlencode(dict( repository='repoId1', baseUrl='http://localhost/oai', metadataPrefix='aprefix', setSpec='aset', apiKey='an api key', active='on', formUrl='/harvester_dashboard')))) self.assertEquals("http://localhost/oai", list(self.env.getRepositories())[0].baseUrl) self.assertEquals("aprefix", list(self.env.getRepositories())[0].metadataPrefix) self.assertEquals("aset", list(self.env.getRepositories())[0].setSpec) self.assertEquals("an api key", list(self.env.getRepositories())[0].apiKey) self.assertEquals(True, list(self.env.getRepositories())[0].active) joco(self.dashboard.handleRequest( path="/something/update", Client=('127.0.0.1', 1234), Method='POST', session=session, Body=urlencode(dict( repository='repoId1', baseUrl='http://localhost/oai', metadataPrefix='aprefix', setSpec='aset', apiKey='an api key', formUrl='/harvester_dashboard')))) self.assertEquals(False, list(self.env.getRepositories())[0].active) def testDeleteRepository(self): session = dict(user=User('admin')) joco(self.dashboard.handleRequest( path="/create", Client=('127.0.0.1', 1234), Method='POST', session=session, Body=urlencode(dict(repository='repoId1', formUrl='/harvester_dashboard')))) self.assertEquals(1, len(list(self.env.getRepositories()))) result = joco(self.dashboard.handleRequest( path="/delete", Client=('127.0.0.1', 1234), Method='POST', session=session, Body=urlencode(dict(repository='repoId1', formUrl='/harvester_dashboard')))) self.assertEquals(0, len(list(self.env.getRepositories()))) header, body = result.split(CRLF*2) self.assertTrue('302' in header) self.assertTrue('Location: /harvester_dashboard' in header, header)
def setUp(self): SeecrTestCase.setUp(self) self.env = Environment(root=join(self.tempdir, 'db'))
class EnvironmentTest(SeecrTestCase): def setUp(self): SeecrTestCase.setUp(self) self.env = Environment(root=join(self.tempdir, 'db')) def testCreateDir(self): self.assertTrue(isdir(self.env._root)) def testWriteFile(self): self.assertFalse(isfile(join(self.env._root, "example_repo", 'config.json'))) self.env.addRepository(name="example_repo", baseUrl="http://example.org/oai", metadataPrefix="oai_dc", setSpec="aset", active=True, apiKey="an api key") self.assertTrue(isfile(join(self.env._root, "example_repo", 'config.json'))) def testGetReadFile(self): repo = self.env.addRepository(name="example_repo", baseUrl="http://example.org/oai", metadataPrefix="oai_dc", setSpec="aset", active=True, apiKey="an api key") repo2 = self.env.getRepository(name='example_repo') self.assertEquals(repo, repo2) self.assertEquals(repo.active, repo2.active) def testRepositories(self): self.assertEquals([], list(self.env.getRepositories())) repository = self.env.addRepository(name="test", baseUrl="test", metadataPrefix="test", setSpec="test", active=True, apiKey="inspiration") repositories = list(self.env.getRepositories()) self.assertEquals([repository], repositories) def testRepositoriesOnlyWhenThereIsAConfig(self): self.assertEquals([], list(self.env.getRepositories())) open(join(self.tempdir, "db", "junk"), 'w').write("") self.assertEquals([], list(self.env.getRepositories())) def testDefaultValues(self): repository = self.env.addRepository(name="test") self.assertEquals('', repository.baseUrl) self.assertEquals('', repository.metadataPrefix) self.assertEquals('', repository.setSpec) self.assertEquals('', repository.apiKey) self.assertEquals(False, repository.active) def testDeleteRepository(self): repository = self.env.addRepository(name="test") repositories = list(self.env.getRepositories()) self.assertEquals([repository], repositories) self.env.deleteRepository(name="test") repositories = list(self.env.getRepositories()) self.assertEquals([], repositories) def testHarvestStatePersistent(self): repository = self.env.addRepository(name='test') repository.resumptionToken = 'xyz' repository.lastHarvest = 12345 repository.save() repositoryRevisited = self.env.getRepository(name='test') self.assertEquals('xyz', repositoryRevisited.resumptionToken) self.assertEquals(12345, repositoryRevisited.lastHarvest) def testErrorLog(self): repository = self.env.addRepository(name='test') self.assertEquals("", repository.readErrorLog()) repository.logException(Exception("boo")) self.assertEquals("boo", repository.readErrorLog())