token-wizard-test-automation/test/testRA.js

136 lines
4.6 KiB
JavaScript

const Logger= require('../entity/Logger.js');
const logger=Logger.logger;
const utils=require('../utils/Utils.js');
const Utils=utils.Utils;
const metaMask=require('../pages/MetaMask.js');
const MetaMask=metaMask.MetaMask;
const user=require("../entity/User.js");
const User=user.User;
const crowdsale=require('../entity/Crowdsale.js');
const Crowdsale=crowdsale.Crowdsale;
const acc=require('../entity/Account.js');
const Account=acc.Account;
const reservedTokens=require('../entity/ReservedTokens.js');
const ReservedTokens=reservedTokens.ReservedTokens;
const reservedTokensPage=require('../pages/ReservedTokensPage.js');
const ReservedTokensPage=reservedTokensPage.ReservedTokensPage;
webdriver = require('selenium-webdriver');
var test = require('selenium-webdriver/testing');
var assert = require('assert');
const fs = require('fs-extra');
const eth_wallet=require('ethereumjs-wallet');
const bundleRA=[];
const bundleAccounts=[];
const number=process.argv[2];
const network=process.argv[3];
//testRA();
async function testRA() {
const tempOutputPath='./temp/';
fs.ensureDirSync(tempOutputPath);
const tempOutputFile=tempOutputPath+'resultReservedBundle'+Date.now()+'.json';
fs.ensureFileSync(tempOutputFile);
logger.info("Test: create crowdsale with bundle of reserved tokens");
let driver = await Utils.startBrowserWithMetamask();
let user4_F16AFile='./users/user4_F16A.json';//Rinkeby
let user8545_56B2File='./users/user8545_56B2.json';//Ganache
let user77_56B2File='./users/user77_56B2.json';//Sokol
let Owner;
switch(network)
{
case '4': { Owner = new User (driver,user4_F16AFile);break;}
case '8545':{Owner = new User (driver,user8545_56B2File);break;}
default: {Owner = new User (driver,user77_56B2File);break;}
}
await Utils.increaseBalance(Owner,20);
logger.info("Owner = "+Owner.account);
logger.info("Owner's balance = :"+await Utils.getBalance(Owner)/1e18);
let mtMask = new MetaMask(driver);
await mtMask.activate();//return activated Metamask and empty page
await Owner.setMetaMaskAccount();
var scenario = './scenarios/testRA.json';
let crowdsale = await Utils.getCrowdsaleInstance(scenario);
crowdsale = await Owner.createCrowdsale(crowdsale,5,'reserved');
await Owner.openInvestPage(crowdsale);
await driver.sleep(15000);
await Owner.contribute(crowdsale.currency.tiers[0].supply);
await Owner.distribute(crowdsale);
await Owner.finalize(crowdsale);
let obj;
let balance;
let shouldBe;
let isPass=true;
let user= Owner;
for (let i=0;i<bundleRA.length;i++) {
if (bundleRA[i].dimension=='percentage')
shouldBe=bundleRA[i].value*crowdsale.tiers[0].supply/100;
else shouldBe=bundleRA[i].value;
user.account=bundleAccounts[i].address;
user.privateKey=bundleAccounts[i].privateKey;
user.networkID=Owner.networkID;
balance=await user.getTokenBalance(crowdsale)/1e18;
bundleAccounts[i].balance=balance;
isPass=isPass&&(shouldBe==balance);
logger.info("#"+i+" should be:"+ shouldBe+" balance: "+balance+" "+ (shouldBe==balance));
}
logger.info("RESULT: "+isPass);
obj={owner:Owner,crowdsale:crowdsale,accounts:bundleAccounts,isPassTest:isPass};
fs.appendFileSync(tempOutputFile,JSON.stringify(obj));
}
async function generateAccount() {
let obj = eth_wallet.generate();
let address="0x".concat(obj.getAddress().toString('hex'));
let privateKey="0x".concat(obj.getPrivateKey().toString('hex'));
logger.info("Address created: "+address +" ,private key: "+privateKey);
return new Account(address,privateKey);
}
async function fillReservedTokens(driver) {
let account;
let dimension;
let value;
let RA;
logger.info("fill reserved tokens for testRA")
const reservedTokensPage=new ReservedTokensPage(driver);
for (var i=0;i<number;i++) {
account=await generateAccount();
dimension=Math.round(Math.random());
if (dimension==0) dimension='percentage';
else dimension='tokens';
value=Math.trunc(Math.random()*1000);
RA=new ReservedTokens(account.address,dimension,value);
await reservedTokensPage.fillReservedTokens(RA);
await reservedTokensPage.clickButtonAddReservedTokens();
bundleRA[i]=RA;
bundleAccounts[i]=account;
logger.info("#"+i+" Address: "+bundleRA[i].address+" , dimension"+bundleRA[i].dimension+" , value: "+ bundleRA[i].value+" #"+i);
await driver.sleep(1000);
}
let check=await reservedTokensPage.amountAddedReservedTokens();
logger.info("Reserved tokens added: "+check);
logger.info("Reserved tokens should be: "+number);
//await driver.sleep(120000);
}
module.exports.fillReservedTokens=fillReservedTokens;