mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-03-30 15:08:28 +00:00
206 lines
7.5 KiB
JavaScript
206 lines
7.5 KiB
JavaScript
// import assert from 'assert'
|
|
// import fs from 'fs-extra'
|
|
// import path from 'path'
|
|
// import rmrf from 'rimraf'
|
|
// import leveldown from 'leveldown'
|
|
// import Zip from 'adm-zip'
|
|
// import OrbitDB from '../src/OrbitDB.js'
|
|
// import Identities from 'orbit-db-identity-provider'
|
|
// import migrate from 'localstorage-level-migration'
|
|
// import Keystore from 'orbit-db-keystore'
|
|
// import storageAdapter from 'orbit-db-storage-adapter'
|
|
// // Include test utilities
|
|
// import {
|
|
// config,
|
|
// startIpfs,
|
|
// stopIpfs,
|
|
// testAPIs,
|
|
// } from 'orbit-db-test-utils'
|
|
|
|
// const storage = storageAdapter(leveldown)
|
|
|
|
// storage.preCreate = async (directory, options) => {
|
|
// fs.mkdirSync(directory, { recursive: true })
|
|
// }
|
|
|
|
|
|
// const dbPath = path.join('./orbitdb', 'tests', 'v0')
|
|
// const dbFixturesDir = path.join('./test', 'fixtures', 'v0', 'QmWDUfC4zcWJGgc9UHn1X3qQ5KZqBv4KCiCtjnpMmBT8JC', 'v0-db')
|
|
// const keyFixtures = path.join('./test', 'fixtures', 'keys','QmRfPsKJs9YqTot5krRibra4gPwoK4kghhU8iKWxBjGDDX')
|
|
|
|
// const ipfsFixturesDir = path.join('./test', 'fixtures', 'ipfs')
|
|
|
|
// Object.keys(testAPIs).forEach(API => {
|
|
// const ipfsFixtures = path.join('./test', 'fixtures', `js-ipfs.zip`)
|
|
|
|
// describe(`orbit-db - Backward-Compatibility - Open & Load (${API})`, function () {
|
|
// this.retries(1) // windows...
|
|
// this.timeout(config.timeout)
|
|
|
|
// let ipfsd, ipfs, orbitdb, db, keystore
|
|
|
|
// before(async () => {
|
|
// ipfsd = await startIpfs(API, config.daemon1)
|
|
// ipfs = ipfsd.api
|
|
// rmrf.sync(dbPath)
|
|
|
|
|
|
// const zip = new Zip(ipfsFixtures)
|
|
// await zip.extractAllToAsync(path.join('./test', 'fixtures'), true)
|
|
|
|
// const filterFunc = (src, dest) => {
|
|
// // windows has problems copying these files...
|
|
// return !(src.includes('LOG') || src.includes('LOCK'))
|
|
// }
|
|
|
|
// // copy data files to ipfs and orbitdb repos
|
|
// await fs.copy(path.join(ipfsFixturesDir, 'blocks'), path.join(ipfsd.path, 'blocks'))
|
|
// await fs.copy(path.join(ipfsFixturesDir, 'datastore'), path.join(ipfsd.path, 'datastore'), { filter: filterFunc })
|
|
|
|
// const peerId = String((await ipfs.id()).id)
|
|
// const store = await storage.createStore(path.join(dbPath, peerId, 'keys'))
|
|
// keystore = new Keystore(store)
|
|
|
|
// const identity = await Identities.createIdentity({ id: peerId, migrate: migrate(keyFixtures), keystore })
|
|
// orbitdb = await OrbitDB.createInstance(ipfs, { identity, keystore })
|
|
|
|
// })
|
|
|
|
// after(async () => {
|
|
// await keystore.close()
|
|
// if (orbitdb)
|
|
// await orbitdb.stop()
|
|
|
|
// if (ipfsd)
|
|
// await stopIpfs(ipfsd)
|
|
|
|
// rmrf.sync(ipfsFixturesDir)
|
|
// rmrf.sync('./orbitdb')
|
|
// })
|
|
|
|
// describe('Open & Load - V0 entries', function () {
|
|
|
|
// before(async () => {
|
|
// await fs.copy(dbFixturesDir, dbPath)
|
|
// db = await orbitdb.open('/orbitdb/QmWDUfC4zcWJGgc9UHn1X3qQ5KZqBv4KCiCtjnpMmBT8JC/v0-db', { directory: dbPath, accessController: { type: 'legacy-ipfs', skipManifest: true } })
|
|
// const localFixtures = await db._cache.get('_localHeads')
|
|
// const remoteFixtures = await db._cache.get('_remoteHeads')
|
|
// await db._cache.set(db.localHeadsPath, localFixtures)
|
|
// await db._cache.set(db.remoteHeadsPath, remoteFixtures)
|
|
// await db.load()
|
|
// })
|
|
|
|
// beforeEach(async () => {
|
|
// if (process.platform === 'win32') {
|
|
// // for some reason Windows does not load the database correctly at the first time.
|
|
// // this is not a good solution but... it works.
|
|
// await db.load()
|
|
// }
|
|
// })
|
|
|
|
// after(async () => {
|
|
// rmrf.sync(dbPath)
|
|
// if (db)
|
|
// await db.close()
|
|
// })
|
|
|
|
// it('open v0 orbitdb address', async () => {
|
|
// assert.notEqual(db, null)
|
|
// })
|
|
|
|
// it('database has the correct v0 address', async () => {
|
|
// assert.equal(db.address.toString().indexOf('/orbitdb'), 0)
|
|
// assert.equal(db.address.toString().indexOf('Qm'), 9)
|
|
// assert.equal(db.address.toString().indexOf('v0-db'), 56)
|
|
// })
|
|
|
|
// it('has the correct type', async () => {
|
|
// assert.equal(db.type, 'feed')
|
|
// })
|
|
|
|
// it('database has the correct access-controller', async () => {
|
|
// assert.equal(db.options.accessControllerAddress, '/ipfs/Qmc3S7aMSmH8oGmx7Zdp8UxVWcDyCq5o2H9qYFgT3GW6nM')
|
|
// assert.equal(db.access.type, 'legacy-ipfs')
|
|
// assert.strictEqual(db.access.write[0], '04b54f6ef529cd2dd2f9c6897a382c492222d42e57826269a38101ffe752aa07260ecd092a970d7eef08c4ddae2b7006ee25f07e4ab62fa5262ae3b51fdea29f78')
|
|
// })
|
|
|
|
// it('load v0 orbitdb address', async () => {
|
|
// assert.equal(db.all.length, 3)
|
|
// })
|
|
|
|
// it('allows migrated key to write', async () => {
|
|
// const hash = await db.add({ thing: 'new addition' })
|
|
// const newEntries = db.all.filter(e => e.v > 0)
|
|
// assert.equal(newEntries.length, 1)
|
|
// assert.strictEqual(newEntries[0].hash, hash)
|
|
// })
|
|
// })
|
|
|
|
// describe('Open & Load - V1 entries', function () {
|
|
// const dbPath2 = './orbitdb/tests/v1'
|
|
// const dbv1Fix = './test/fixtures/v1/QmZrWipUpBNx5VjBTESCeJBQuj4rWahZMz8CV8hBjdJAec/cache'
|
|
// const v1Address = '/orbitdb/zdpuAqpKBwd7ojM77o3rRVKA1PAEQBnWoRASY3ugJ7zqnM6z7/v1-entries'
|
|
// before(async () => {
|
|
// await fs.copy(dbv1Fix, dbPath2)
|
|
// db = await orbitdb.open(v1Address, { directory: dbPath2 })
|
|
// await db.load()
|
|
// })
|
|
|
|
// beforeEach(async () => {
|
|
// if (process.platform === 'win32') {
|
|
// // for some reason Windows does not load the database correctly at the first time.
|
|
// // this is not a good solution but... it works.
|
|
// await db.load()
|
|
// }
|
|
// })
|
|
|
|
// after(async () => {
|
|
// rmrf.sync(dbPath2)
|
|
// if (db)
|
|
// await db.close()
|
|
// })
|
|
|
|
// it('open v1 orbitdb address', async () => {
|
|
// assert.notEqual(db, null)
|
|
// })
|
|
|
|
// it('database has the correct v1 address', async () => {
|
|
// assert.equal(db.address.toString().indexOf('/orbitdb'), 0)
|
|
// assert.equal(db.address.toString().indexOf('zd'), 9)
|
|
// assert.equal(db.address.toString().indexOf('v1-entries'), 59)
|
|
// })
|
|
|
|
// it('has the correct type', async () => {
|
|
// assert.equal(db.type, 'feed')
|
|
// })
|
|
|
|
// it('database has the correct access-controller', async () => {
|
|
// assert.equal(db.access.type, 'ipfs')
|
|
// assert.equal(db.options.accessControllerAddress, '/ipfs/zdpuAsYRtJLLLDibnmxWPzyRGJEqtjmJP27ppKWcLreNGGTFN')
|
|
// assert.strictEqual(db.access.write[0], '*')
|
|
// })
|
|
|
|
// it('load v1 orbitdb address', async () => {
|
|
// assert.equal(db.all.length, 100)
|
|
// })
|
|
|
|
// it('allows adding new entry', async () => {
|
|
// const hash = await db.add('new entry')
|
|
// const newEntries = db.all.filter(e => e.v > 1)
|
|
// assert.equal(newEntries.length, 1)
|
|
// assert.strictEqual(newEntries[0].hash, hash)
|
|
// })
|
|
|
|
// it('reopens db after adding new entry', async () => {
|
|
// await db.close()
|
|
// db = await orbitdb.open(v1Address, { directory: dbPath2 })
|
|
// assert.notEqual(db, null)
|
|
// await db.load()
|
|
// assert.equal(db.all.length, 101)
|
|
// const newEntries = db.all.filter(e => e.v > 1)
|
|
// assert.equal(newEntries.length, 1)
|
|
// })
|
|
// })
|
|
// })
|
|
// })
|