From 8e42d1995dce9f223da09aa13e1a0c56c9bd43e8 Mon Sep 17 00:00:00 2001 From: Christian Perreault Date: Thu, 23 Feb 2023 09:11:58 -0500 Subject: [PATCH 1/9] Fix container image name --- docs/migrate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/migrate.md b/docs/migrate.md index 2aaaa724..6573f8fc 100644 --- a/docs/migrate.md +++ b/docs/migrate.md @@ -46,7 +46,7 @@ First identify the id for the MongoDB container by running. docker ps ``` -The id is the one on the line named `sugarizer-server_server`. +The id is the one on the line named `sugarizer-server_mongodb`. Now attach a bash shell on the running MongoDB instance by running: From 383f08429b98b79c1df25923f6c3e5774bf7634b Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Sun, 12 Mar 2023 09:41:22 +0530 Subject: [PATCH 2/9] selenium tests --- dashboard/test/login.js | 25 +++++ package-lock.json | 217 ++++++++++++++++++++++++++++++++++++++++ package.json | 2 + 3 files changed, 244 insertions(+) create mode 100644 dashboard/test/login.js diff --git a/dashboard/test/login.js b/dashboard/test/login.js new file mode 100644 index 00000000..0aa23eeb --- /dev/null +++ b/dashboard/test/login.js @@ -0,0 +1,25 @@ +//During the test the env variable is set to test +process.env.NODE_ENV = 'test'; + + +const {Builder, Browser, By, Key, until} = require('selenium-webdriver'); +const { beforeEach, afterEach } = require('mocha'); +const {getAPIUrl} = require('../helper/common'); +var driver; +beforeEach(async()=>{ + driver = await new Builder().forBrowser(Browser.CHROME).build(); +}) +afterEach(async()=>{ + await driver.quit(); +}) +describe('login',async function(){ + it('should login with correct credentials',async function(){ + + await driver.get(`http:localhost:8080/dashboard/login`); + await driver.findElement(By.name('username')).sendKeys('teacher1'); + await driver.findElement(By.name('password')).sendKeys('teacher1'); + await driver.findElement(By.className('btn pull-right')).click(); + }) + +}) + diff --git a/package-lock.json b/package-lock.json index 8d9383ed..18def8ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "nyc": "^15.1.0", "otplib": "^12.0.1", "qrcode": "^1.4.4", + "selenium-webdriver": "^4.8.1", "streamifier": "^0.1.1", "superagent": "^5.2.2", "ws": "~7.4.0" @@ -6668,6 +6669,11 @@ "node": ">=4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -7911,6 +7917,44 @@ "node": ">=0.6.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/jwt-simple": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/jwt-simple/-/jwt-simple-0.5.6.tgz", @@ -8057,6 +8101,14 @@ "node": ">=0.3.1" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/liftup": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", @@ -10178,6 +10230,11 @@ "node": ">=8" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11283,6 +11340,64 @@ "seek-table": "bin/seek-bzip-table" } }, + "node_modules/selenium-webdriver": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.8.1.tgz", + "integrity": "sha512-p4MtfhCQdcV6xxkS7eI0tQN6+WNReRULLCAuT4RDGkrjfObBNXMJ3WT8XdK+aXTr5nnBKuh+PxIevM0EjJgkxA==", + "dependencies": { + "jszip": "^3.10.0", + "tmp": "^0.2.1", + "ws": ">=8.11.0" + }, + "engines": { + "node": ">= 14.20.0" + } + }, + "node_modules/selenium-webdriver/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/selenium-webdriver/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", @@ -11393,6 +11508,11 @@ "node": ">=0.10.0" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -21239,6 +21359,11 @@ "svgo": "^0.7.0" } }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -22173,6 +22298,46 @@ "verror": "1.10.0" } }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "jwt-simple": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/jwt-simple/-/jwt-simple-0.5.6.tgz", @@ -22296,6 +22461,14 @@ } } }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, "liftup": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", @@ -23985,6 +24158,11 @@ "release-zalgo": "^1.0.0" } }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -24850,6 +25028,40 @@ "commander": "^2.8.1" } }, + "selenium-webdriver": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.8.1.tgz", + "integrity": "sha512-p4MtfhCQdcV6xxkS7eI0tQN6+WNReRULLCAuT4RDGkrjfObBNXMJ3WT8XdK+aXTr5nnBKuh+PxIevM0EjJgkxA==", + "requires": { + "jszip": "^3.10.0", + "tmp": "^0.2.1", + "ws": ">=8.11.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + } + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} + } + } + }, "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", @@ -24946,6 +25158,11 @@ "dev": true, "optional": true }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", diff --git a/package.json b/package.json index 5982ba05..07ec5cc3 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "nyc": "^15.1.0", "otplib": "^12.0.1", "qrcode": "^1.4.4", + "selenium-webdriver": "^4.8.1", "streamifier": "^0.1.1", "superagent": "^5.2.2", "ws": "~7.4.0" @@ -50,6 +51,7 @@ }, "scripts": { "test": "mocha api/test/ --timeout 20000 --exit", + "test:frontend": "mocha dashboard/test --no-timeouts", "coverage": "nyc --exclude 'dashboard/**' mocha api/test/ --timeout 20000 --exit", "docs": "apidoc -i api/controller -i dashboard/helper -o docs/www/", "start": "nodemon sugarizer.js", From 0e1c4f5111d3f3e390d038fa009050283665c9ce Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Sun, 12 Mar 2023 23:38:01 +0530 Subject: [PATCH 3/9] fix eslint issues and refactored code --- .eslintrc.json | 6 ++++++ dashboard/test/login.js | 38 +++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 9c63b182..d0e73581 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -98,6 +98,12 @@ "node": true, "es6": true } + }, + { + "files":["dashboard/test/*.js"], + "parserOptions": { + "ecmaVersion": 2017 + } } ] } diff --git a/dashboard/test/login.js b/dashboard/test/login.js index 0aa23eeb..dd3606ce 100644 --- a/dashboard/test/login.js +++ b/dashboard/test/login.js @@ -1,25 +1,29 @@ //During the test the env variable is set to test process.env.NODE_ENV = 'test'; +var seleniumDriver = require('selenium-webdriver'), + mocha = require('mocha'); +var Builder = seleniumDriver.Builder, + By = seleniumDriver.By, + Browser = seleniumDriver.Browser; +var beforeEach = mocha.beforeEach, + afterEach = mocha.afterEach; -const {Builder, Browser, By, Key, until} = require('selenium-webdriver'); -const { beforeEach, afterEach } = require('mocha'); -const {getAPIUrl} = require('../helper/common'); var driver; -beforeEach(async()=>{ - driver = await new Builder().forBrowser(Browser.CHROME).build(); -}) -afterEach(async()=>{ - await driver.quit(); -}) -describe('login',async function(){ - it('should login with correct credentials',async function(){ +beforeEach(function(){ + driver = new Builder().forBrowser(Browser.CHROME).build(); +}); +afterEach(function(){ + driver.quit(); +}); +describe('login', function(){ + it('should login with correct credentials',async function() { - await driver.get(`http:localhost:8080/dashboard/login`); - await driver.findElement(By.name('username')).sendKeys('teacher1'); - await driver.findElement(By.name('password')).sendKeys('teacher1'); - await driver.findElement(By.className('btn pull-right')).click(); - }) + await driver.get('http:localhost:8080/dashboard/login'); + await driver.findElement(By.name('username')).sendKeys('teacher1'); + await driver.findElement(By.name('password')).sendKeys('teacher1'); + await driver.findElement(By.className('btn pull-right')).click(); + }); -}) +}); From fbaa8f104e3b52eb4869707bc72b8b7668683cb2 Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Sun, 12 Mar 2023 23:54:00 +0530 Subject: [PATCH 4/9] login tests --- dashboard/test/login.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dashboard/test/login.js b/dashboard/test/login.js index dd3606ce..2e06aa8f 100644 --- a/dashboard/test/login.js +++ b/dashboard/test/login.js @@ -1,6 +1,7 @@ //During the test the env variable is set to test process.env.NODE_ENV = 'test'; +const expect = require('chai').expect; var seleniumDriver = require('selenium-webdriver'), mocha = require('mocha'); var Builder = seleniumDriver.Builder, @@ -23,6 +24,15 @@ describe('login', function(){ await driver.findElement(By.name('username')).sendKeys('teacher1'); await driver.findElement(By.name('password')).sendKeys('teacher1'); await driver.findElement(By.className('btn pull-right')).click(); + expect(await driver.findElement(By.id('navbar-xo-icon'))).not.to.be.null; + }); + it('should not login with incorrect credentials',async function() { + + await driver.get('http:localhost:8080/dashboard/login'); + await driver.findElement(By.name('username')).sendKeys('teacher'); + await driver.findElement(By.name('password')).sendKeys('teacher'); + await driver.findElement(By.className('btn pull-right')).click(); + expect(await driver.findElement(By.id('navbar-xo-icon'))).not.to.be.null; }); }); From dada8d3f721591e9b7c13d159b1246c6d7fcb2a8 Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Mon, 13 Mar 2023 21:20:50 +0530 Subject: [PATCH 5/9] modified test --- dashboard/test/login.js | 64 +++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/dashboard/test/login.js b/dashboard/test/login.js index 2e06aa8f..ec24625b 100644 --- a/dashboard/test/login.js +++ b/dashboard/test/login.js @@ -1,7 +1,20 @@ //During the test the env variable is set to test process.env.NODE_ENV = 'test'; -const expect = require('chai').expect; +var server = require('../../sugarizer.js'); +var chai = require('chai'); +var chaiHttp = require('chai-http'); +var timestamp = +new Date(); + +//fake user for testing auth +var fakeUser = { + "user": '{"name":"TarunFake' + (timestamp.toString()) + '","password":"pokemon","language":"en","role":"admin"}' +}; + +//init server +chai.use(chaiHttp); +chai.should(); +const expect = require('chai').expect; var seleniumDriver = require('selenium-webdriver'), mocha = require('mocha'); var Builder = seleniumDriver.Builder, @@ -11,29 +24,56 @@ var beforeEach = mocha.beforeEach, afterEach = mocha.afterEach; var driver; -beforeEach(function(){ +chai.request(server) + .post('/auth/signup') + .send(fakeUser); +beforeEach(function () { driver = new Builder().forBrowser(Browser.CHROME).build(); }); -afterEach(function(){ +afterEach(function () { driver.quit(); }); -describe('login', function(){ - it('should login with correct credentials',async function() { - +describe('login', function () { + before((done) => { + + //delay for db connection for establish + setTimeout(function() { + chai.request(server) + .post('/auth/signup') + .send(fakeUser) + .end(() => { + done(); + }); + }, 300); + }); + it('should login with correct credentials', async function () { + await driver.get('http:localhost:8080/dashboard/login'); - await driver.findElement(By.name('username')).sendKeys('teacher1'); - await driver.findElement(By.name('password')).sendKeys('teacher1'); + await driver.findElement(By.name('username')).sendKeys('TarunFake'+timestamp.toString()); + await driver.findElement(By.name('password')).sendKeys('pokemon'); await driver.findElement(By.className('btn pull-right')).click(); expect(await driver.findElement(By.id('navbar-xo-icon'))).not.to.be.null; }); - it('should not login with incorrect credentials',async function() { - + it('should not login with incorrect credentials', async function () { + await driver.get('http:localhost:8080/dashboard/login'); - await driver.findElement(By.name('username')).sendKeys('teacher'); - await driver.findElement(By.name('password')).sendKeys('teacher'); + await driver.findElement(By.name('username')).sendKeys('TarunFake'); + await driver.findElement(By.name('password')).sendKeys('wrongpassword'); await driver.findElement(By.className('btn pull-right')).click(); expect(await driver.findElement(By.id('navbar-xo-icon'))).not.to.be.null; }); + after((done) => { + + chai.request(server) + .delete('/api/v1/users/' + fakeUser.user._id) + .set('x-access-token', fakeUser.token) + .set('x-key', fakeUser.user._id) + .end((err, res) => { + res.should.have.status(200); + done(); + }); + }); + }); From 7f46827434f809c0368a5ef76847b4046d61bed4 Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Mon, 13 Mar 2023 21:28:57 +0530 Subject: [PATCH 6/9] organizing structure --- .eslintrc.json | 2 +- dashboard/test/{ => auth}/login.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename dashboard/test/{ => auth}/login.js (97%) diff --git a/.eslintrc.json b/.eslintrc.json index d0e73581..c85d0189 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -100,7 +100,7 @@ } }, { - "files":["dashboard/test/*.js"], + "files":["dashboard/test/**/*.js"], "parserOptions": { "ecmaVersion": 2017 } diff --git a/dashboard/test/login.js b/dashboard/test/auth/login.js similarity index 97% rename from dashboard/test/login.js rename to dashboard/test/auth/login.js index ec24625b..fcc42bfd 100644 --- a/dashboard/test/login.js +++ b/dashboard/test/auth/login.js @@ -1,7 +1,7 @@ //During the test the env variable is set to test process.env.NODE_ENV = 'test'; -var server = require('../../sugarizer.js'); +var server = require('../../../sugarizer.js'); var chai = require('chai'); var chaiHttp = require('chai-http'); var timestamp = +new Date(); From c816548332a85b13d6a8a1dabcb2b0f9c8fd650d Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Mon, 13 Mar 2023 21:48:01 +0530 Subject: [PATCH 7/9] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07ec5cc3..83f8a382 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ }, "scripts": { "test": "mocha api/test/ --timeout 20000 --exit", - "test:frontend": "mocha dashboard/test --no-timeouts", + "test:frontend": "mocha dashboard/test/** --no-timeouts", "coverage": "nyc --exclude 'dashboard/**' mocha api/test/ --timeout 20000 --exit", "docs": "apidoc -i api/controller -i dashboard/helper -o docs/www/", "start": "nodemon sugarizer.js", From d86ae7ea702bd2a424aa35f0467275e14e4de15a Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Mon, 13 Mar 2023 22:02:20 +0530 Subject: [PATCH 8/9] Update login.js --- dashboard/test/auth/login.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/dashboard/test/auth/login.js b/dashboard/test/auth/login.js index fcc42bfd..aabac866 100644 --- a/dashboard/test/auth/login.js +++ b/dashboard/test/auth/login.js @@ -42,7 +42,15 @@ describe('login', function () { .post('/auth/signup') .send(fakeUser) .end(() => { - done(); + //login user + chai.request(server) + .post('/auth/login') + .send(fakeUser) + .end((err, res) => { + //store user data + fakeUser = res.body; + done(); + }); }); }, 300); }); @@ -60,8 +68,16 @@ describe('login', function () { await driver.findElement(By.name('username')).sendKeys('TarunFake'); await driver.findElement(By.name('password')).sendKeys('wrongpassword'); await driver.findElement(By.className('btn pull-right')).click(); - expect(await driver.findElement(By.id('navbar-xo-icon'))).not.to.be.null; }); + + it('successful logout after login', async function () { + await driver.get('http:localhost:8080/dashboard/login'); + await driver.findElement(By.name('username')).sendKeys('TarunFake'+timestamp.toString()); + await driver.findElement(By.name('password')).sendKeys('pokemon'); + await driver.findElement(By.className('btn pull-right')).click(); + await driver.findElement(By.xpath('/html/body/div[2]/div[3]/nav/div/div[2]/ul/li/ul/li[2]/a')); + }); + after((done) => { From c05d544f69bf00ca87659563e6676fdcdd4ede2c Mon Sep 17 00:00:00 2001 From: parteekcoder Date: Wed, 22 Mar 2023 13:24:31 +0530 Subject: [PATCH 9/9] refactoring syntax --- dashboard/test/auth/login.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/dashboard/test/auth/login.js b/dashboard/test/auth/login.js index aabac866..e9ad0439 100644 --- a/dashboard/test/auth/login.js +++ b/dashboard/test/auth/login.js @@ -14,15 +14,9 @@ var fakeUser = { //init server chai.use(chaiHttp); chai.should(); -const expect = require('chai').expect; -var seleniumDriver = require('selenium-webdriver'), - mocha = require('mocha'); -var Builder = seleniumDriver.Builder, - By = seleniumDriver.By, - Browser = seleniumDriver.Browser; -var beforeEach = mocha.beforeEach, - afterEach = mocha.afterEach; - +const {expect} = require('chai'); +const { By, Builder, Browser } = require('selenium-webdriver'); +const { beforeEach, afterEach } = require('mocha'); var driver; chai.request(server) .post('/auth/signup')