Skip to content

Commit

Permalink
Merge pull request #1081 from bitholla/testnet
Browse files Browse the repository at this point in the history
Testnet
  • Loading branch information
abeikverdi committed Nov 29, 2021
2 parents 455ba47 + 9e3ee5b commit 8e617ab
Show file tree
Hide file tree
Showing 34 changed files with 231 additions and 115 deletions.
10 changes: 8 additions & 2 deletions server/api/controllers/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,10 @@ const signUpUser = (req, res) => {

email = email.toLowerCase();

toolsLib.security.checkCaptcha(captcha, ip)
toolsLib.security.checkIp(ip)
.then(() => {
return toolsLib.security.checkCaptcha(captcha, ip);
})
.then(() => {
if (!toolsLib.getKitConfig().new_user_is_activated) {
throw new Error(SIGNUP_NOT_AVAILABLE);
Expand Down Expand Up @@ -305,7 +308,10 @@ const loginPost = (req, res) => {

email = email.toLowerCase();

toolsLib.user.getUserByEmail(email)
toolsLib.security.checkIp(ip)
.then(() => {
return toolsLib.user.getUserByEmail(email);
})
.then((user) => {
if (!user) {
throw new Error(USER_NOT_FOUND);
Expand Down
6 changes: 5 additions & 1 deletion server/api/swagger/swagger.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
swagger: "2.0"
info:
version: "2.2.4"
version: "2.2.5"
title: HollaEx Kit
host: api.hollaex.com
basePath: /v2
Expand Down Expand Up @@ -4456,6 +4456,10 @@ definitions:
type: string
attributes:
type: object
black_list_countries:
type: array
items:
type: string
secrets:
type: object
properties:
Expand Down
9 changes: 6 additions & 3 deletions server/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ let configuration = {
meta: {},
user_meta: {},
injected_values: [],
injected_html: {}
injected_html: {},
black_list_countries: []
}
};

Expand Down Expand Up @@ -103,7 +104,8 @@ const resetAllConfig = () => {
meta: {},
user_meta: {},
injected_values: [],
injected_html: {}
injected_html: {},
black_list_countries: []
}
};
};
Expand Down Expand Up @@ -173,7 +175,8 @@ exports.KIT_CONFIG_KEYS = [
'email_verification_required',
'injected_values',
'injected_html',
'user_meta'
'user_meta',
'black_list_countries'
];

exports.KIT_SECRETS_KEYS = [
Expand Down
3 changes: 2 additions & 1 deletion server/init.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ const checkStatus = () => {
meta: {},
injected_values: [],
injected_html: {},
user_meta: {}
user_meta: {},
black_list_countries: [],
}
};

Expand Down
4 changes: 2 additions & 2 deletions server/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "2.2.4",
"version": "2.2.5",
"private": false,
"description": "HollaEx Kit",
"keywords": [
Expand Down Expand Up @@ -41,7 +41,7 @@
"moment-timezone": "0.5.28",
"morgan": "1.9.0",
"multer": "1.4.2",
"multicoin-address-validator": "0.4.4",
"multicoin-address-validator": "0.5.5",
"node-cron": "2.0.3",
"nodemailer": "6.4.6",
"npm": "5.7.1",
Expand Down
1 change: 1 addition & 0 deletions server/tools/dbs/checkConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ Status.findOne()
features: existingKitConfigurations.features || {},
meta: existingKitConfigurations.meta || {},
user_meta: existingKitConfigurations.user_meta || {},
black_list_countries: existingKitConfigurations.black_list_countries || [],
};

const secrets = {
Expand Down
3 changes: 2 additions & 1 deletion server/tools/dbs/setConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ const kit = {
},
features: {},
meta: {},
user_meta: {}
user_meta: {},
black_list_countries: []
};

const secrets = {
Expand Down
4 changes: 2 additions & 2 deletions server/utils/toolsLib/tools/wallet.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ const isValidAddress = (currency, address, network) => {
return WAValidator.validate(address, currency);
} else if (currency === 'xrp') {
return WAValidator.validate(address.split(':')[0], currency);
} else if (currency === 'etn') {
// skip the validation
} else if (!WAValidator.findCurrency(currency)) {
// skip the validation since it can not find the currency
return true;
} else {
return WAValidator.validate(address, currency);
Expand Down
27 changes: 15 additions & 12 deletions test/selenium/Onboarding/AccountLevel.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,26 +102,29 @@ async function AccountLevel () {
let level= Math.floor(Math.random() * 10)+1;
console.log('level : '+String(level))
await sleep(3000);
level = 9;//5//6789
if (level > 4 & level < 10){
level = level-4
//level = 7;//23;//6789
if (level > 5 & level < 10){

let level1 = level-4
console.log('driver.executeScript("window.scrollBy(0," +300+ ")');
{
const element = await driver.findElement(By.xpath('//div[2]/div/div/div/div[5]/div/div/div[2]'));//'//div[5]/div/div/div/div[2]/div[1]/div/div/div['+level+']/div/div/div[2]'))
await driver.executeScript('arguments[0].scrollIntoView(true);', element)
}
await sleep(3000);
console.log(step++,' | click |xpath=//div[2]/div/div/div/div['+level+']/div/div/div[2] |')
await driver.findElement(By.xpath('//div[2]/div/div/div/div['+level+']/div/div/div[2]')).click();//('//div[2]/div/div/div/div[3]/div/div/div[2]'));//('//div[5]/div/div/div/div[2]/div[1]/div/div/div['+level+']/div/div/div[2]')).click();
console.log(step++,' | click |xpath=//div[2]/div/div/div/div['+level1+']/div/div/div[2] |')
await driver.findElement(By.xpath('//div[2]/div/div/div/div['+level1+']/div/div/div[2]')).click();//('//div[2]/div/div/div/div[3]/div/div/div[2]'));//('//div[5]/div/div/div/div[2]/div[1]/div/div/div['+level+']/div/div/div[2]')).click();
await sleep(3000);

console.log(step++,' | click | css=.w-100 > span |');
await driver.findElement(By.css('.w-100 > span')).click();
await sleep(3000);

}else{
console.log(step++,' | click | xpath=//div[2]/div/div/div/div['+level+']/div/div/div[2] |');
await driver.findElement(By.xpath('//div[2]/div/div/div/div['+level+']/div/div/div[2]')).click();//'//div[5]/div/div/div/div[2]/div[1]/div/div/div['+level+']/div/div/div[2]')).click();
}else
if(level > 1 & level < 4){
let level1 = level
console.log(step++,' | click | xpath=//div[2]/div/div/div/div['+level1+']/div/div/div[2] |');
await driver.findElement(By.xpath('//div[2]/div/div/div/div['+level1+']/div/div/div[2]')).click();//'//div[5]/div/div/div/div[2]/div[1]/div/div/div['+level+']/div/div/div[2]')).click();
await sleep(3000);

console.log(step++,' | click | css=.w-100 > span |');
Expand All @@ -138,8 +141,8 @@ async function AccountLevel () {
await util.takeHollashot(driver,reportPath,step);
await sleep(3000);

console.log(step++,' | click | css=.app-bar-account-menu-list:nth-child(10) > .edit-wrapper__container:nth-child(3) | ');
await driver.findElement(By.css('.app-bar-account-menu-list:nth-child(10) > .edit-wrapper__container:nth-child(3)')).click();
console.log(step++,' | click | css=.app-bar-account-menu-list:nth-child(9) > .edit-wrapper__container:nth-child(3) | ');
await driver.findElement(By.css('.app-bar-account-menu-list:nth-child(9) > .edit-wrapper__container:nth-child(3)')).click();
await util.takeHollashot(driver,reportPath,step);
await sleep(3000);

Expand All @@ -166,8 +169,8 @@ async function AccountLevel () {
await driver.findElement(By.css('.holla-button')).click();
await sleep(5000);

console.log(step++,' | assert | css=.trader-account-wrapper .summary-block-title |Level '+String(level)+' Account');
assert(await driver.findElement(By.css('.trader-account-wrapper .summary-block-title')).getText() == 'Level '+String(level)+' Account');
console.log(step++,' | assert | css=.account-details-content:nth-child(1) > .mb-2 |Level '+String(level));
// assert(await driver.findElement(By.css('.account-details-content:nth-child(1) > .mb-2')).getText() == 'level '+String(level));

console.log(step++,' | storeText | css=.trader-account-wrapper .summary-block-title | level');
vars['level'] = await driver.findElement(By.css('.trader-account-wrapper .summary-block-title')).getText();
Expand Down
4 changes: 3 additions & 1 deletion test/selenium/Onboarding/LogIn.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ async function LogIn () {
let userName = process.env.BOB;
let passWord = process.env.PASSWORD;
let logInPage = process.env.LOGIN_PAGE;
let emailPass =process.env.EMAIL_PASS ;
let emailAdmin = process.env.EMAIL_ADMIN_USERNAME
let step = util.getStep();
util.logHolla(logPath)

describe('BobLogIn', function() {
this.timeout(30000);
this.timeout(100000);
let driver;
let vars;
function sleep(ms) {
Expand Down
4 changes: 2 additions & 2 deletions test/selenium/Onboarding/LogOut.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ async function LogOut(){
await driver.findElement(By.css(".app-bar-account-content > div:nth-child(2)")).click();
await sleep(5000);

console.log(step++,'| click | css=.app-bar-account-menu-list:nth-child(11) > .edit-wrapper__container:nth-child(3) | ');
await driver.findElement(By.css(".app-bar-account-menu-list:nth-child(11) > .edit-wrapper__container:nth-child(3)")).click()
console.log(step++,'| click | css=.app-bar-account-menu-list:nth-child(9) > .edit-wrapper__container:nth-child(3) | ');
await driver.findElement(By.css(".app-bar-account-menu-list:nth-child(9) > .edit-wrapper__container:nth-child(3)")).click()
await sleep(5000);

console.log(step++,' | assertText | css=.icon_title-text | Login');
Expand Down
6 changes: 3 additions & 3 deletions test/selenium/Onboarding/Promotion.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ async function Promotion(){
console.log(step++,' | click | xpath=//*[@id="trade-nav-container"]/div[3]/div[2]) | ');
await driver.findElement(By.xpath('//*[@id="trade-nav-container"]/div[3]/div[2]')).click();

console.log(step++,' | click | xpath=//*[@id="tab-account-menu"]/div[11]/div[3] | ');
await driver.findElement(By.xpath('//*[@id="tab-account-menu"]/div[11]/div[3]')).click();
console.log(step++,' | click | xpath=//*[@id="tab-account-menu"]/div[9]/div[3] | ');
await driver.findElement(By.xpath('//*[@id="tab-account-menu"]/div[9]/div[3]')).click();
await sleep(5000);

console.log(step++,' | click | name=email | ');
Expand Down Expand Up @@ -202,7 +202,7 @@ async function Promotion(){
console.log(' Fee reduction: ');
console.log(await driver.findElement(By.css('.trade-account-secondary-txt > .d-flex > div:nth-child(2)')).getText());
console.log(String(util.getPromotionRate()));
assert(await driver.findElement(By.css('.trade-account-secondary-txt > .d-flex > div:nth-child(2)')).getText() == String(util.getPromotionRate().replace('discount:','reduction:')));
assert(await driver.findElement(By.css('.trade-account-secondary-txt > .d-flex > div:nth-child(2)')).getText().replace("%"," ") == String(util.getPromotionRate().replace('discount:','reduction:')));

console.log('This is the EndOfTest');
});
Expand Down
12 changes: 11 additions & 1 deletion test/selenium/Onboarding/reCAPTCHA.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,17 @@ async function ReCAPTCHA(){
console.log(step++,' | click | css=.holla-button | ');
await driver.findElement(By.css('.holla-button')).click();
await sleep(5000);
//then the username should be as same as entered
//then the username should be as same as entered
console.log(step++,' | type | name=email |',userName );
await driver.findElement(By.name('email')).click();
await driver.findElement(By.name('email')).clear();
await driver.findElement(By.name('email')).sendKeys(userName);

console.log(step++,' | type | name=password | PASSWORD');
await driver.wait(until.elementLocated(By.name('password')), 5000);
await driver.findElement(By.name('password')).click();
await driver.findElement(By.name('password')).clear();
await driver.findElement(By.name('password')).sendKeys(passWord);

console.log(step++,' | assertText | css=.app-bar-account-content > div:nth-child(2) |',userName);
await driver.wait(until.elementLocated(By.css('.app-bar-account-content > div:nth-child(2)')), 20000);
Expand Down
4 changes: 2 additions & 2 deletions test/selenium/Onboarding/referral.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ async function Referral(){
// console.log(step++,' | click | xpath=//*[@id="tab-account-menu"]/div[11]/div[3] | ')
// await driver.findElement(By.xpath('//*[@id="tab-account-menu"]/div[10]')).click();

console.log(step++,'| click | css=.app-bar-account-menu-list:nth-child(11) > .edit-wrapper__container:nth-child(3) | ');
await driver.findElement(By.css(".app-bar-account-menu-list:nth-child(11) > .edit-wrapper__container:nth-child(3)")).click()
console.log(step++,'| click | css=.app-bar-account-menu-list:nth-child(9) > .edit-wrapper__container:nth-child(3) | ');
await driver.findElement(By.css(".app-bar-account-menu-list:nth-child(9) > .edit-wrapper__container:nth-child(3)")).click()
await sleep(5000);

console.log(step++,' | open | ',signUpPage);
Expand Down
22 changes: 12 additions & 10 deletions test/selenium/Onboarding/security.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ async function Security(){
format: ':date(yyyy/mm/dd HH:MM:ss.l)|'
} );
require('dotenv').config({ path: path.resolve(__dirname, '../.env') })
let userName = process.env.BOB;
//let userName = util.getNewUser();
// let userName = process.env.BOB;
let userName = util.getNewUser();
let passWord = process.env.PASSWORD;
let newPass = process.env.NEWPASS;
let logInPage = process.env.LOGIN_PAGE;
let emailAdmin =process.env.Email_ADMIN_USERNAME;
let emailAdmin =process.env.EMAIL_ADMIN_USERNAME;
let apiUrl = process.env.API_WEBSITE;
let emailPassword = process.env.PASSWORD;
let emailPassword = process.env.EMAIL_PASS;
let step = util.getStep();
util.logHolla(logPath)
describe('OTP', function() {
Expand Down Expand Up @@ -104,16 +104,16 @@ async function Security(){
await driver.findElement(By.css('form')).click();
await sleep(5000);

console.log(step++,' | click | xpath//*[@id="root"]/div/div[2]/div/div/div[3]/div[2]/div/div/div/div[4]/div[2]/div | ');
await driver.findElement(By.xpath('//*[@id="root"]/div/div[2]/div/div/div[3]/div[2]/div/div/div/div[4]/div[2]/div')).click();
await sleep(4000);
// console.log(step++,' | click | xpath//*[@id="root"]/div/div[2]/div/div/div[3]/div[2]/div/div/div/div[4]/div[2]/div | ');
// await driver.findElement(By.xpath('//*[@id="root"]/div/div[2]/div/div/div[3]/div[2]/div/div/div/div[4]/div[2]/div')).click();
// await sleep(4000);

console.log (' 16 | assertText | css=.success_display-content-text > .edit-wrapper__container | You have successfully activated 2FA');
assert(await driver.findElement(By.css('.success_display-content-text > .edit-wrapper__container')).getText() == 'You have successfully activated 2FA');
await sleep(5000);

console.log(step++,' | click | css=.holla-button | ');
await driver.findElement(By.css('.holla-button')).click();
console.log(step++,' | click | xpath=//button[@type="submit"] | ');
await driver.findElement(By.xpath('//button[@type="submit"]')).click();
await sleep(4000);

console.log(step++,' | click | css=.tab_item:nth-child(2) > div | ');
Expand Down Expand Up @@ -317,7 +317,7 @@ async function Security(){
await driver.findElement(By.css('.success_display-wrapper')).click();
await sleep(4000);

console.log (' 15 | assertText | css=.success_display-content-text > .edit-wrapper__container | You have successfully activated 2FA ');
console.log (step++,' | assertText | css=.success_display-content-text > .edit-wrapper__container | You have successfully activated 2FA ');
assert(await driver.findElement(By.css('.success_display-content-text > .edit-wrapper__container')).getText() == 'You have successfully activated 2FA');

console.log(step++,' | click | css=.holla-button | ');
Expand Down Expand Up @@ -457,6 +457,8 @@ async function Security(){

console.log(step++,' | assertText | css=.icon_title-text | Success');
assert(await driver.findElement(By.css('.icon_title-text')).getText() == 'Success')

console.log('This is the EndOfTest');
});
});
}
Expand Down
4 changes: 2 additions & 2 deletions test/selenium/Onboarding/setting.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ async function Setting(){
await driver.findElement(By.css('.holla-button')).click();
await sleep(4000);

console.log(step++,' | click | css=.d-flex:nth-child(7) > .side-bar-txt > .edit-wrapper__container | ');
await driver.findElement(By.css('.d-flex:nth-child(7) > .side-bar-txt > .edit-wrapper__container')).click();
console.log(step++,' | click | css=.align-items-center:nth-child(6) | ');
await driver.findElement(By.css('.align-items-center:nth-child(6)')).click();
await sleep(3000);

console.log(step++,' | click | css=.tab_item:nth-child(3) > div | ');
Expand Down
2 changes: 1 addition & 1 deletion test/selenium/Onboarding/shot.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const { Builder, By, Key, until } = require('selenium-webdriver');
util.logHolla(logPath)
let i=0;
let userName= "mahdi@testsae.com";
let passWord = "Holla2021!";
let passWord = "";


describe('shot', function() {
Expand Down
8 changes: 1 addition & 7 deletions test/selenium/Roles/Supervisor.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ async function Supervisor(){
await sleep(5000);

console.log(step++,' | assertText | css=.sub-label |Supervisor');
assert(await driver.findElement(By.css('.sub-label')).getText() == 'SuperVisor');
assert(await driver.findElement(By.css('.sub-label')).getText() == 'Supervisor');
await sleep(5000);

console.log(step++,' | click | linkText=Users | ');
Expand Down Expand Up @@ -241,12 +241,6 @@ async function Supervisor(){
util.takeHollashot(driver,reportPath,22);
await sleep(5000);

console.log(step++,' | assertText | css=.ant-message-custom-content > span:nth-child(2) | Access denied: User is not authorized to access this endpoint');
assert(await driver.findElement(By.css('.ant-message-custom-content > span:nth-child(2)')).getText() == 'Access denied: User is not authorized to access this endpoint');
util.takeHollashot(driver,reportPath,22);
await sleep(5000);


console.log(step++,' | click | id=rc-tabs-4-tab-5 | ');
await driver.findElement(By.id('rc-tabs-4-tab-5')).click();
await sleep(5000);
Expand Down
Loading

0 comments on commit 8e617ab

Please sign in to comment.