66 lines
2.1 KiB
JavaScript
66 lines
2.1 KiB
JavaScript
/*
|
|
|
|
const { hash } = require('eth-ens-namehash')
|
|
const { getEventArgument } = require('@aragon/contract-test-helpers/events')
|
|
const Kernel = artifacts.require('@aragon/os/build/contracts/kernel/Kernel')
|
|
const ACL = artifacts.require('@aragon/os/build/contracts/acl/ACL')
|
|
const EVMScriptRegistryFactory = artifacts.require(
|
|
'@aragon/os/build/contracts/factory/EVMScriptRegistryFactory'
|
|
)
|
|
const DAOFactory = artifacts.require(
|
|
'@aragon/os/build/contracts/factory/DAOFactory'
|
|
)
|
|
|
|
const newDao = async (rootAccount) => {
|
|
// Deploy a DAOFactory.
|
|
const kernelBase = await Kernel.new(true)
|
|
const aclBase = await ACL.new()
|
|
const registryFactory = await EVMScriptRegistryFactory.new()
|
|
const daoFactory = await DAOFactory.new(
|
|
kernelBase.address,
|
|
aclBase.address,
|
|
registryFactory.address
|
|
)
|
|
|
|
// Create a DAO instance.
|
|
const daoReceipt = await daoFactory.newDAO(rootAccount)
|
|
const dao = await Kernel.at(getEventArgument(daoReceipt, 'DeployDAO', 'dao'))
|
|
|
|
// Grant the rootAccount address permission to install apps in the DAO.
|
|
const acl = await ACL.at(await dao.acl())
|
|
const APP_MANAGER_ROLE = await kernelBase.APP_MANAGER_ROLE()
|
|
await acl.createPermission(
|
|
rootAccount,
|
|
dao.address,
|
|
APP_MANAGER_ROLE,
|
|
rootAccount,
|
|
{ from: rootAccount }
|
|
)
|
|
|
|
return { dao, acl }
|
|
}
|
|
|
|
const newApp = async (dao, appName, baseAppAddress, rootAccount) => {
|
|
const receipt = await dao.newAppInstance(
|
|
hash(`${appName}.aragonpm.test`), // appId - Unique identifier for each app installed in the DAO; can be any bytes32 string in the tests.
|
|
baseAppAddress, // appBase - Location of the app's base implementation.
|
|
'0x', // initializePayload - Used to instantiate and initialize the proxy in the same call (if given a non-empty bytes string).
|
|
false, // setDefault - Whether the app proxy is the default proxy.
|
|
{ from: rootAccount }
|
|
)
|
|
|
|
// Find the deployed proxy address in the tx logs.
|
|
const logs = receipt.logs
|
|
const log = logs.find((l) => l.event === 'NewAppProxy')
|
|
const proxyAddress = log.args.proxy
|
|
|
|
return proxyAddress
|
|
}
|
|
|
|
module.exports = {
|
|
newDao,
|
|
newApp,
|
|
}
|
|
|
|
*/
|