From fe907e53feb772a3ccc7ef7cd774c06972f03f96 Mon Sep 17 00:00:00 2001 From: harjaus Date: Mon, 16 Sep 2019 09:19:49 +0100 Subject: [PATCH] Made consistent with Worksheet 06 --- exercises/06_code_quality/README.md | 8 + .../06_code_quality/archive/auth.specx.js | 60 +++++ .../06_code_quality/archive/countries.json | 242 ++++++++++++++++++ .../06_code_quality/archive/index.specx.js | 33 +++ exercises/06_code_quality/archive/test.sh | 5 + .../archive/testdata/boy-2.png | Bin 0 -> 20123 bytes .../archive/testdata/boy-3.png | Bin 0 -> 17149 bytes .../archive/testdata/boy-4.png | Bin 0 -> 17749 bytes .../archive/testdata/boy-5.png | Bin 0 -> 19973 bytes .../06_code_quality/archive/testdata/boy.png | Bin 0 -> 15971 bytes .../archive/testdata/girl-2.png | Bin 0 -> 20108 bytes .../archive/testdata/girl-3.png | Bin 0 -> 27458 bytes .../archive/testdata/girl-4.png | Bin 0 -> 20140 bytes .../archive/testdata/girl-5.png | Bin 0 -> 19352 bytes .../06_code_quality/archive/testdata/girl.png | Bin 0 -> 23054 bytes exercises/06_code_quality/index.js | 115 +++++++++ exercises/06_code_quality/jest-test.config.js | 19 ++ exercises/06_code_quality/jsdoc.conf | 22 ++ exercises/06_code_quality/modules/accounts.js | 60 +++++ exercises/06_code_quality/package.json | 47 ++++ .../06_code_quality/public/avatars/avatar.png | Bin 0 -> 56968 bytes exercises/06_code_quality/public/style.css | 12 + .../06_code_quality/unit tests/user.spec.js | 76 ++++++ .../06_code_quality/views/error.handlebars | 16 ++ .../06_code_quality/views/index.handlebars | 16 ++ .../06_code_quality/views/login.handlebars | 24 ++ .../06_code_quality/views/register.handlebars | 21 ++ 27 files changed, 776 insertions(+) create mode 100644 exercises/06_code_quality/README.md create mode 100644 exercises/06_code_quality/archive/auth.specx.js create mode 100644 exercises/06_code_quality/archive/countries.json create mode 100644 exercises/06_code_quality/archive/index.specx.js create mode 100755 exercises/06_code_quality/archive/test.sh create mode 100644 exercises/06_code_quality/archive/testdata/boy-2.png create mode 100644 exercises/06_code_quality/archive/testdata/boy-3.png create mode 100644 exercises/06_code_quality/archive/testdata/boy-4.png create mode 100644 exercises/06_code_quality/archive/testdata/boy-5.png create mode 100644 exercises/06_code_quality/archive/testdata/boy.png create mode 100644 exercises/06_code_quality/archive/testdata/girl-2.png create mode 100644 exercises/06_code_quality/archive/testdata/girl-3.png create mode 100644 exercises/06_code_quality/archive/testdata/girl-4.png create mode 100644 exercises/06_code_quality/archive/testdata/girl-5.png create mode 100644 exercises/06_code_quality/archive/testdata/girl.png create mode 100644 exercises/06_code_quality/index.js create mode 100644 exercises/06_code_quality/jest-test.config.js create mode 100644 exercises/06_code_quality/jsdoc.conf create mode 100644 exercises/06_code_quality/modules/accounts.js create mode 100644 exercises/06_code_quality/package.json create mode 100644 exercises/06_code_quality/public/avatars/avatar.png create mode 100644 exercises/06_code_quality/public/style.css create mode 100644 exercises/06_code_quality/unit tests/user.spec.js create mode 100644 exercises/06_code_quality/views/error.handlebars create mode 100644 exercises/06_code_quality/views/index.handlebars create mode 100644 exercises/06_code_quality/views/login.handlebars create mode 100644 exercises/06_code_quality/views/register.handlebars diff --git a/exercises/06_code_quality/README.md b/exercises/06_code_quality/README.md new file mode 100644 index 00000000..19df846d --- /dev/null +++ b/exercises/06_code_quality/README.md @@ -0,0 +1,8 @@ +# Assignment Template + +This repository contains the base files for the assignment. To make use of this carry out the following steps: + +1. Fork this repository but change its name (replace `xxx` with your university username): + 1. If this is your original assignment, `xxx-coursework`. + 2. If this is your resit assignment code, `xxx-resit`. +2. Replace the contents of this file with the details of the topic you have been assigned. diff --git a/exercises/06_code_quality/archive/auth.specx.js b/exercises/06_code_quality/archive/auth.specx.js new file mode 100644 index 00000000..6dfca2fd --- /dev/null +++ b/exercises/06_code_quality/archive/auth.specx.js @@ -0,0 +1,60 @@ + +'use strict' + +const puppeteer = require('puppeteer') + +let page +let browser + +const baseURL = 'http://localhost:8080' + +beforeAll( async() => { + const width = 800 + const height = 600 + browser = await puppeteer.launch({ + headless: true, + slowMo: 40, + args: [`--window-size=${width},${height}`, '--disable-http2'] + }) + page = await browser.newPage() + await page.setViewport({ width, height }) +}) + +afterAll( async() => await browser.close()) + +describe('checking home screen is protected', () => { + test('home screen redirects to login if not logged in', async done => { + await page.waitFor(1000) + await page.goto('http://localhost:8080/logout') + await page.waitFor(1000) + //await page.goto('http://localhost:8080/', { waitUntil: 'domcontentloaded' }) + const title = await page.title() + expect(title).toBe('Log In') + done() + }) +}) + +describe('registering an account', () => { + test('home screen redirects to login if not logged in', async done => { + try { + await page.waitFor(1000) + await page.goto(`${baseURL}/register`, { waitUntil: 'domcontentloaded' }) + await page.type('input[name=user]', 'jbloggs') + await page.type('input[name=pass]', 'p455w0rd') + const input = await page.$('input[name=avatar]') + await input.uploadFile('screenshots/person.png') + await page.screenshot({ path: 'screenshots/completedRegForm.png' }) + await page.click('input[type=submit]') + await page.waitFor(1000) + await page.screenshot({ path: 'screenshots/accountCreated.png' }) + const title = await page.title() + expect(title).toBe('Log In') + const text = await page.evaluate(() => document.body.textContent) + expect(text).toContain('you need to log in') + } catch(err) { + //done.fail(new Error(err.message)) + } finally { + done() + } + }) +}) diff --git a/exercises/06_code_quality/archive/countries.json b/exercises/06_code_quality/archive/countries.json new file mode 100644 index 00000000..fb6f4491 --- /dev/null +++ b/exercises/06_code_quality/archive/countries.json @@ -0,0 +1,242 @@ +[ + {"name":"Israel","dial_code":"+972","code":"IL"}, + {"name":"Afghanistan","dial_code":"+93","code":"AF"}, + {"name":"Albania","dial_code":"+355","code":"AL"}, + {"name":"Algeria","dial_code":"+213","code":"DZ"}, + {"name":"AmericanSamoa","dial_code":"+1 684","code":"AS"}, + {"name":"Andorra","dial_code":"+376","code":"AD"}, + {"name":"Angola","dial_code":"+244","code":"AO"}, + {"name":"Anguilla","dial_code":"+1 264","code":"AI"}, + {"name":"Antigua and Barbuda","dial_code":"+1268","code":"AG"}, + {"name":"Argentina","dial_code":"+54","code":"AR"}, + {"name":"Armenia","dial_code":"+374","code":"AM"}, + {"name":"Aruba","dial_code":"+297","code":"AW"}, + {"name":"Australia","dial_code":"+61","code":"AU"}, + {"name":"Austria","dial_code":"+43","code":"AT"}, + {"name":"Azerbaijan","dial_code":"+994","code":"AZ"}, + {"name":"Bahamas","dial_code":"+1 242","code":"BS"}, + {"name":"Bahrain","dial_code":"+973","code":"BH"}, + {"name":"Bangladesh","dial_code":"+880","code":"BD"}, + {"name":"Barbados","dial_code":"+1 246","code":"BB"}, + {"name":"Belarus","dial_code":"+375","code":"BY"}, + {"name":"Belgium","dial_code":"+32","code":"BE"}, + {"name":"Belize","dial_code":"+501","code":"BZ"}, + {"name":"Benin","dial_code":"+229","code":"BJ"}, + {"name":"Bermuda","dial_code":"+1 441","code":"BM"}, + {"name":"Bhutan","dial_code":"+975","code":"BT"}, + {"name":"Bosnia and Herzegovina","dial_code":"+387","code":"BA"}, + {"name":"Botswana","dial_code":"+267","code":"BW"}, + {"name":"Brazil","dial_code":"+55","code":"BR"}, + {"name":"British Indian Ocean Territory","dial_code":"+246","code":"IO"},{"name":"Bulgaria","dial_code":"+359","code":"BG"}, + {"name":"Burkina Faso","dial_code":"+226","code":"BF"}, + {"name":"Burundi","dial_code":"+257","code":"BI"}, + {"name":"Cambodia","dial_code":"+855","code":"KH"}, + {"name":"Cameroon","dial_code":"+237","code":"CM"}, + {"name":"Canada","dial_code":"+1","code":"CA"}, + {"name":"Cape Verde","dial_code":"+238","code":"CV"}, + {"name":"Cayman Islands","dial_code":"+ 345","code":"KY"}, + {"name":"Central African Republic","dial_code":"+236","code":"CF"}, + {"name":"Chad","dial_code":"+235","code":"TD"}, + {"name":"Chile","dial_code":"+56","code":"CL"}, + {"name":"China","dial_code":"+86","code":"CN"}, + {"name":"Christmas Island","dial_code":"+61","code":"CX"}, + {"name":"Colombia","dial_code":"+57","code":"CO"}, + {"name":"Comoros","dial_code":"+269","code":"KM"}, + {"name":"Congo","dial_code":"+242","code":"CG"}, + {"name":"Cook Islands","dial_code":"+682","code":"CK"}, + {"name":"Costa Rica","dial_code":"+506","code":"CR"}, + {"name":"Croatia","dial_code":"+385","code":"HR"}, + {"name":"Cuba","dial_code":"+53","code":"CU"}, + {"name":"Cyprus","dial_code":"+537","code":"CY"}, + {"name":"Czech Republic","dial_code":"+420","code":"CZ"}, + {"name":"Denmark","dial_code":"+45","code":"DK"}, + {"name":"Djibouti","dial_code":"+253","code":"DJ"}, + {"name":"Dominica","dial_code":"+1 767","code":"DM"}, + {"name":"Dominican Republic","dial_code":"+1 849","code":"DO"}, + {"name":"Ecuador","dial_code":"+593","code":"EC"}, + {"name":"Egypt","dial_code":"+20","code":"EG"}, + {"name":"El Salvador","dial_code":"+503","code":"SV"}, + {"name":"Equatorial Guinea","dial_code":"+240","code":"GQ"}, + {"name":"Eritrea","dial_code":"+291","code":"ER"}, + {"name":"Estonia","dial_code":"+372","code":"EE"}, + {"name":"Ethiopia","dial_code":"+251","code":"ET"}, + {"name":"Faroe Islands","dial_code":"+298","code":"FO"}, + {"name":"Fiji","dial_code":"+679","code":"FJ"}, + {"name":"Finland","dial_code":"+358","code":"FI"}, + {"name":"France","dial_code":"+33","code":"FR"}, + {"name":"French Guiana","dial_code":"+594","code":"GF"}, + {"name":"French Polynesia","dial_code":"+689","code":"PF"}, + {"name":"Gabon","dial_code":"+241","code":"GA"}, + {"name":"Gambia","dial_code":"+220","code":"GM"}, + {"name":"Georgia","dial_code":"+995","code":"GE"}, + {"name":"Germany","dial_code":"+49","code":"DE"}, + {"name":"Ghana","dial_code":"+233","code":"GH"}, + {"name":"Gibraltar","dial_code":"+350","code":"GI"}, + {"name":"Greece","dial_code":"+30","code":"GR"}, + {"name":"Greenland","dial_code":"+299","code":"GL"}, + {"name":"Grenada","dial_code":"+1 473","code":"GD"}, + {"name":"Guadeloupe","dial_code":"+590","code":"GP"}, + {"name":"Guam","dial_code":"+1 671","code":"GU"}, + {"name":"Guatemala","dial_code":"+502","code":"GT"}, + {"name":"Guinea","dial_code":"+224","code":"GN"}, + {"name":"Guinea-Bissau","dial_code":"+245","code":"GW"}, + {"name":"Guyana","dial_code":"+595","code":"GY"}, + {"name":"Haiti","dial_code":"+509","code":"HT"}, + {"name":"Honduras","dial_code":"+504","code":"HN"}, + {"name":"Hungary","dial_code":"+36","code":"HU"}, + {"name":"Iceland","dial_code":"+354","code":"IS"}, + {"name":"India","dial_code":"+91","code":"IN"}, + {"name":"Indonesia","dial_code":"+62","code":"ID"}, + {"name":"Iraq","dial_code":"+964","code":"IQ"}, + {"name":"Ireland","dial_code":"+353","code":"IE"}, + {"name":"Israel","dial_code":"+972","code":"IL"}, + {"name":"Italy","dial_code":"+39","code":"IT"}, + {"name":"Jamaica","dial_code":"+1 876","code":"JM"}, + {"name":"Japan","dial_code":"+81","code":"JP"}, + {"name":"Jordan","dial_code":"+962","code":"JO"}, + {"name":"Kazakhstan","dial_code":"+7 7","code":"KZ"}, + {"name":"Kenya","dial_code":"+254","code":"KE"}, + {"name":"Kiribati","dial_code":"+686","code":"KI"}, + {"name":"Kuwait","dial_code":"+965","code":"KW"}, + {"name":"Kyrgyzstan","dial_code":"+996","code":"KG"}, + {"name":"Latvia","dial_code":"+371","code":"LV"}, + {"name":"Lebanon","dial_code":"+961","code":"LB"}, + {"name":"Lesotho","dial_code":"+266","code":"LS"}, + {"name":"Liberia","dial_code":"+231","code":"LR"}, + {"name":"Liechtenstein","dial_code":"+423","code":"LI"}, + {"name":"Lithuania","dial_code":"+370","code":"LT"}, + {"name":"Luxembourg","dial_code":"+352","code":"LU"}, + {"name":"Madagascar","dial_code":"+261","code":"MG"}, + {"name":"Malawi","dial_code":"+265","code":"MW"}, + {"name":"Malaysia","dial_code":"+60","code":"MY"}, + {"name":"Maldives","dial_code":"+960","code":"MV"}, + {"name":"Mali","dial_code":"+223","code":"ML"}, + {"name":"Malta","dial_code":"+356","code":"MT"}, + {"name":"Marshall Islands","dial_code":"+692","code":"MH"}, + {"name":"Martinique","dial_code":"+596","code":"MQ"}, + {"name":"Mauritania","dial_code":"+222","code":"MR"}, + {"name":"Mauritius","dial_code":"+230","code":"MU"}, + {"name":"Mayotte","dial_code":"+262","code":"YT"}, + {"name":"Mexico","dial_code":"+52","code":"MX"}, + {"name":"Monaco","dial_code":"+377","code":"MC"}, + {"name":"Mongolia","dial_code":"+976","code":"MN"}, + {"name":"Montenegro","dial_code":"+382","code":"ME"}, + {"name":"Montserrat","dial_code":"+1664","code":"MS"}, + {"name":"Morocco","dial_code":"+212","code":"MA"}, + {"name":"Myanmar","dial_code":"+95","code":"MM"}, + {"name":"Namibia","dial_code":"+264","code":"NA"}, + {"name":"Nauru","dial_code":"+674","code":"NR"}, + {"name":"Nepal","dial_code":"+977","code":"NP"}, + {"name":"Netherlands","dial_code":"+31","code":"NL"}, + {"name":"Netherlands Antilles","dial_code":"+599","code":"AN"}, + {"name":"New Caledonia","dial_code":"+687","code":"NC"}, + {"name":"New Zealand","dial_code":"+64","code":"NZ"}, + {"name":"Nicaragua","dial_code":"+505","code":"NI"}, + {"name":"Niger","dial_code":"+227","code":"NE"}, + {"name":"Nigeria","dial_code":"+234","code":"NG"}, + {"name":"Niue","dial_code":"+683","code":"NU"}, + {"name":"Norfolk Island","dial_code":"+672","code":"NF"}, + {"name":"Northern Mariana Islands","dial_code":"+1 670","code":"MP"}, + {"name":"Norway","dial_code":"+47","code":"NO"}, + {"name":"Oman","dial_code":"+968","code":"OM"}, + {"name":"Pakistan","dial_code":"+92","code":"PK"}, + {"name":"Palau","dial_code":"+680","code":"PW"}, + {"name":"Panama","dial_code":"+507","code":"PA"}, + {"name":"Papua New Guinea","dial_code":"+675","code":"PG"}, + {"name":"Paraguay","dial_code":"+595","code":"PY"}, + {"name":"Peru","dial_code":"+51","code":"PE"}, + {"name":"Philippines","dial_code":"+63","code":"PH"}, + {"name":"Poland","dial_code":"+48","code":"PL"}, + {"name":"Portugal","dial_code":"+351","code":"PT"}, + {"name":"Puerto Rico","dial_code":"+1 939","code":"PR"}, + {"name":"Qatar","dial_code":"+974","code":"QA"}, + {"name":"Romania","dial_code":"+40","code":"RO"}, + {"name":"Rwanda","dial_code":"+250","code":"RW"}, + {"name":"Samoa","dial_code":"+685","code":"WS"}, + {"name":"San Marino","dial_code":"+378","code":"SM"}, + {"name":"Saudi Arabia","dial_code":"+966","code":"SA"}, + {"name":"Senegal","dial_code":"+221","code":"SN"}, + {"name":"Serbia","dial_code":"+381","code":"RS"}, + {"name":"Seychelles","dial_code":"+248","code":"SC"}, + {"name":"Sierra Leone","dial_code":"+232","code":"SL"}, + {"name":"Singapore","dial_code":"+65","code":"SG"}, + {"name":"Slovakia","dial_code":"+421","code":"SK"}, + {"name":"Slovenia","dial_code":"+386","code":"SI"}, + {"name":"Solomon Islands","dial_code":"+677","code":"SB"}, + {"name":"South Africa","dial_code":"+27","code":"ZA"}, + {"name":"South Georgia and the South Sandwich Islands","dial_code":"+500","code":"GS"}, + {"name":"Spain","dial_code":"+34","code":"ES"}, + {"name":"Sri Lanka","dial_code":"+94","code":"LK"}, + {"name":"Sudan","dial_code":"+249","code":"SD"}, + {"name":"Suriname","dial_code":"+597","code":"SR"}, + {"name":"Swaziland","dial_code":"+268","code":"SZ"}, + {"name":"Sweden","dial_code":"+46","code":"SE"}, + {"name":"Switzerland","dial_code":"+41","code":"CH"}, + {"name":"Tajikistan","dial_code":"+992","code":"TJ"}, + {"name":"Thailand","dial_code":"+66","code":"TH"}, + {"name":"Togo","dial_code":"+228","code":"TG"}, + {"name":"Tokelau","dial_code":"+690","code":"TK"}, + {"name":"Tonga","dial_code":"+676","code":"TO"}, + {"name":"Trinidad and Tobago","dial_code":"+1 868","code":"TT"}, + {"name":"Tunisia","dial_code":"+216","code":"TN"}, + {"name":"Turkey","dial_code":"+90","code":"TR"}, + {"name":"Turkmenistan","dial_code":"+993","code":"TM"}, + {"name":"Turks and Caicos Islands","dial_code":"+1 649","code":"TC"}, + {"name":"Tuvalu","dial_code":"+688","code":"TV"}, + {"name":"Uganda","dial_code":"+256","code":"UG"}, + {"name":"Ukraine","dial_code":"+380","code":"UA"}, + {"name":"United Arab Emirates","dial_code":"+971","code":"AE"}, + {"name":"United Kingdom","dial_code":"+44","code":"GB"}, + {"name":"United States","dial_code":"+1","code":"US"}, + {"name":"Uruguay","dial_code":"+598","code":"UY"}, + {"name":"Uzbekistan","dial_code":"+998","code":"UZ"}, + {"name":"Vanuatu","dial_code":"+678","code":"VU"}, + {"name":"Wallis and Futuna","dial_code":"+681","code":"WF"}, + {"name":"Yemen","dial_code":"+967","code":"YE"}, + {"name":"Zambia","dial_code":"+260","code":"ZM"}, + {"name":"Zimbabwe","dial_code":"+263","code":"ZW"}, + {"name":"Åland Islands","dial_code":"","code":"AX"}, + {"name":"Antarctica","dial_code":null,"code":"AQ"}, + {"name":"Bolivia, Plurinational State of","dial_code":"+591","code":"BO"}, + {"name":"Brunei Darussalam","dial_code":"+673","code":"BN"}, + {"name":"Cocos (Keeling) Islands","dial_code":"+61","code":"CC"}, + {"name":"Congo, The Democratic Republic of the","dial_code":"+243","code":"CD"}, + {"name":"Cote d'Ivoire","dial_code":"+225","code":"CI"}, + {"name":"Falkland Islands (Malvinas)","dial_code":"+500","code":"FK"}, + {"name":"Guernsey","dial_code":"+44","code":"GG"}, + {"name":"Holy See (Vatican City State)","dial_code":"+379","code":"VA"}, + {"name":"Hong Kong","dial_code":"+852","code":"HK"}, + {"name":"Iran, Islamic Republic of","dial_code":"+98","code":"IR"}, + {"name":"Isle of Man","dial_code":"+44","code":"IM"}, + {"name":"Jersey","dial_code":"+44","code":"JE"}, + {"name":"Korea, Democratic People's Republic of","dial_code":"+850","code":"KP"}, + {"name":"Korea, Republic of","dial_code":"+82","code":"KR"}, + {"name":"Lao People's Democratic Republic","dial_code":"+856","code":"LA"}, + {"name":"Libyan Arab Jamahiriya","dial_code":"+218","code":"LY"}, + {"name":"Macao","dial_code":"+853","code":"MO"}, + {"name":"Macedonia, The Former Yugoslav Republic of","dial_code":"+389","code":"MK"}, + {"name":"Micronesia, Federated States of","dial_code":"+691","code":"FM"}, + {"name":"Moldova, Republic of","dial_code":"+373","code":"MD"}, + {"name":"Mozambique","dial_code":"+258","code":"MZ"}, + {"name":"Palestinian Territory, Occupied","dial_code":"+970","code":"PS"},{"name":"Pitcairn","dial_code":"+872","code":"PN"}, + {"name":"Réunion","dial_code":"+262","code":"RE"}, + {"name":"Russia","dial_code":"+7","code":"RU"}, + {"name":"Saint Barthélemy","dial_code":"+590","code":"BL"}, + {"name":"Saint Helena, Ascension and Tristan Da Cunha","dial_code":"+290","code":"SH"}, + {"name":"Saint Kitts and Nevis","dial_code":"+1 869","code":"KN"}, + {"name":"Saint Lucia","dial_code":"+1 758","code":"LC"}, + {"name":"Saint Martin","dial_code":"+590","code":"MF"}, + {"name":"Saint Pierre and Miquelon","dial_code":"+508","code":"PM"}, + {"name":"Saint Vincent and the Grenadines","dial_code":"+1 784","code":"VC"}, + {"name":"Sao Tome and Principe","dial_code":"+239","code":"ST"}, + {"name":"Somalia","dial_code":"+252","code":"SO"}, + {"name":"Svalbard and Jan Mayen","dial_code":"+47","code":"SJ"}, + {"name":"Syrian Arab Republic","dial_code":"+963","code":"SY"}, + {"name":"Taiwan, Province of China","dial_code":"+886","code":"TW"}, + {"name":"Tanzania, United Republic of","dial_code":"+255","code":"TZ"}, + {"name":"Timor-Leste","dial_code":"+670","code":"TL"}, + {"name":"Venezuela, Bolivarian Republic of","dial_code":"+58","code":"VE"}, + {"name":"Viet Nam","dial_code":"+84","code":"VN"}, + {"name":"Virgin Islands, British","dial_code":"+1 284","code":"VG"}, + {"name":"Virgin Islands, U.S.","dial_code":"+1 340","code":"VI"} +] \ No newline at end of file diff --git a/exercises/06_code_quality/archive/index.specx.js b/exercises/06_code_quality/archive/index.specx.js new file mode 100644 index 00000000..93f7ad49 --- /dev/null +++ b/exercises/06_code_quality/archive/index.specx.js @@ -0,0 +1,33 @@ + +'use strict' + +const request = require('supertest') +const status = require('http-status-codes') + +const server = require('../../index.js') + +beforeAll( async() => console.log('Jest starting!')) + +describe('GET /', () => { + // TODO +}) + +describe('GET /register', () => { + // TODO +}) + +describe('POST /register', () => { + // TODO +}) + +describe('GET /login', () => { + // TODO +}) + +describe('POST /login', () => { + // TODO +}) + +describe('GET /logout', () => { + // TODO +}) diff --git a/exercises/06_code_quality/archive/test.sh b/exercises/06_code_quality/archive/test.sh new file mode 100755 index 00000000..f6c4ea02 --- /dev/null +++ b/exercises/06_code_quality/archive/test.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +node index.js& +node_modules/.bin/jest --detectOpenHandles tests/acceptance/ +kill %1 diff --git a/exercises/06_code_quality/archive/testdata/boy-2.png b/exercises/06_code_quality/archive/testdata/boy-2.png new file mode 100644 index 0000000000000000000000000000000000000000..094d3596c2f3e3c1144c292350d08ca8c19f09ba GIT binary patch literal 20123 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 literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/archive/testdata/boy-3.png b/exercises/06_code_quality/archive/testdata/boy-3.png new file mode 100644 index 0000000000000000000000000000000000000000..05da0fa5db2b607849b3707809e6ed4e736b4d23 GIT binary patch literal 17149 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 IY~jcK4@>Em&j0`b literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/archive/testdata/boy.png b/exercises/06_code_quality/archive/testdata/boy.png new file mode 100644 index 0000000000000000000000000000000000000000..bd28bfeb21c20a645ed070269cd078aa4e2add88 GIT binary patch literal 15971 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 literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/archive/testdata/girl-2.png b/exercises/06_code_quality/archive/testdata/girl-2.png new file mode 100644 index 0000000000000000000000000000000000000000..abb45ece9cf28c549febc40c19da77cc957f0209 GIT binary patch literal 20108 zcmXUM2Rzj8`@M5G5ofQgWHgLOlyPUJK}cm~G%00dX5EP-3Q>eIE3!xSxRWFeG_0(n zjI6WgjsJW7{(U}u@clmTv!CaE-sgG04=hfb?A#%?0|2n|#BrlD03hM7NPuR8KUM;M zZowZYZ-WzO(ePg|`brf1o5SSu2#}_;X_d$V;dhUk83{u7jIt${{H^T z*WKN`FJJV$s_b#wC2d|u41m)dCyeyZ2K<_9yyJ7;Ixu&@Z{KNOCF@G<5bKfRrBAp0 zk2Y0%Y{@IDjLb)S@8ADs{Py<;R;SPLWNN?4QUxEItQ_`M`W?G*Hiw;whM3mJ+Zx~ZTSbk%7xTK8^zj?y-H;(XYAg! zoXU#$6q6OP(As}1!Z^>&hF-sKllb(MkzRjhB z3X645B65=Uyi_ntWIR7GJ{Grm0D%F(_2`t-W0?{2Na`8U=RrlM$+ln<0MQds^tdbJ+)wcX`Bfihbc61HI1``bX>zhzc!@T>f0JWG2A}}x z35j7Sx@&0r(a{&-m2kBu7!B@Kx2hGpapKfEygAni5u?P)(W!AP$^W7Q;03+R_2hElm!a zxwsw2_~<*|B-~8gb38PTq64*uVlehn)_N_!xOA=IuiZX?v`FSmXyS_%L_*Dy$c)?6LxDzr-LP!A@Ckp9qzuSP2Kfp<}~~ozfd2b+nB1KYkmUI!6|SdPU%p zE#2Q9C0Bo^TZnt@ed7GWK~ro~tRekoz*R?k71m6lZks8_?^G73@9jByGW7Y*I#mD{YokVpVPONwef=_23x z_~M1D9%L*>U`cfyi!5v0z0B1%&LS?xqL@aKmhF;2uOgJ7LuZn*JA5mh7S{QqQCXMn zCiUu&Bz?K618MQuKY>WLV};x|)zh8+%D7Wl6jXG#!e@SkR?cq` zPpf(Wshn@ekEODqfOPpaJ*%7--*fk^6uE3&kI>7(SN?weC!@9s%I``qX5?=Eec+Pa zG~g05QY~_ZD!eyl4|c+i9R)H&@8LUL?Kb$RZ|NEW-DfsRY9`>CyLk7dirZO?B=Y@Z zMfl0;U^{Azglhj=GC=);GWOk3poNLraXw z<2z_tEuG(pgnM`;VLAKi^)1XdcJ!5NL%MOEM9^Zlf>69UMNZc1gBq{ z?yk2!Yi7)aE>OM^ZBBEnxXi&YH4PnR$kt}!N9;;MtF}kmzY*8aB>wU}#7;XT8axxC zGmIm*=Xzc@@&;P0^J20_q9hXVovF-sXJ*%{lfU!r3+Umo9HOyLPC31OoVuzI|8`%@}G1C0R-3mw?SGchJqv{vR^ ziB;hh1(>rI_EA+14RqaGV4tTCIUnJJDWXP{j*TD1r)%TM^G=*eC)2OpLZZMRno)6f zi^ZQ|_c$B{ReCy-@k5PjuA$wOd=dhVoDw>jeyIoo?m{zOCYnht%QA_ZJ&R)k``u?O zPQ1&ws7D$ip8sNugb5+&DD{=XxJJ;V`36LKG@;`cD;m5Pr{7PjkGVV`RkPijigAOn zjB(qbc)V#;31hPyp>>YWk6e9Sk%T~kZ`^CP%}1D&g;$)-U@Y(6zxCO4-uylmKC-q# z;ah*Pp~2hpi;Ui-(@I}nU_I9<``u5{pJ{MofU7bUAGlX(RK}l<8z-t9k>5P%CLs;F z@>)w8T2yXqb!6PYM@jhFMJ#kj#<_~ZI673g!KkVgA|Bcb3#d^eN;DS;C)z9n1R-^y z(=^?%6|1Em8n`>GK%u=bgp`JB#otd7@-W~U8=bzp7EzS`=cOZCDLP~w4>+Nwi_VD@T z89Y9QQ?rxa99z%0w`-dd^TQTC@50Y8D$i#O++OE_n5WEHsT^(xkU-4)`suN8p_U96 zrW8?+x(mzDK*Vmtx;}va5^hxLJ(@KP4O|1)oeX|RdA?mxQBT2e9j>=^gBXk8Uw6d( z8RV%RyrRB97ez|QcSE@60t&1gSzFH$ilce0^Y~C%wzXt8LwX$HW0AFr!wIpsB1GOd ztY∋PXtRn9m!C+l(AoPN}xhN#87q&o}RH4L+f2_c+5>x3-oY3j93=X@)v3^hvJ? zsnjbw+*FZZc!)e@7kZZOy98^SL|))o{kK!8iV@~V%tQ>>G9OUpv3tvnpV#A^XQVESUhTOC zwcc?mtPM7VfiToFS)sS3$D+{d)~X{WDq!w==hAo0N=hWQ_d5Z^0B&;n6@GZ~RsjBxKBJjw16AgKE@ICJ_x$^9fiH%vKQ z*o_8SUMng}SqD<-b0~46hE?+teCd5z=8Hc3N(ugtOHJ)Idmt^`g&M6P4zqfv)c56B&rKAVt>4Bg{hF+e5LcZL*2%V8QYajP2-KI>J>PO_BiM_)GZ`v+=T#|Rg4rmyHc=b@zS8w;3SvZ5ty(%7z##2TIVv}b>ibla4a>Ro_V-E)7a8GM`SGWRe z7RTEyR)-C|?Er+mxy^{N5pTc*;|iR*;tv+ip@C5qjS&yRYhtNaAro)MMBKEIpa>!` zEF5S=Ni7UY9hxAPeUJrROKS{2Xx>RW+3;BT{~v_+p$JGExdH3?^ytvF5x>^ESST!uGa1|!ZN*Y#S@x0DGC)7nk z485E~SoQAQzZZk_j5O+(R*N*~+5)t&IA{gko?sN1#xl&K*OlXOT$jE%1sSlK{=WME z$4-L1>dq)aHWsK)wWr1boCD&xc>^XHsG_5?vFJU>3% zfCZ>29p?4pHFc2Slyvdrn$Wr2^LC>iUKbk`?Y{TF>|H1+q@jULCnJ#??in{)vBr4m z+Q#d7=nSXzJya>nD*xCMC70RUut?Ce%y@qW1?&npTpCo4pY&@`dEffz(Yp}?`gZpC z2LaUl#W@oYK*wrs^33hyl2v@O!Ojrc*6mB|@mc5{ZLY2`yJIGpfIr114fH+0Pksd0 zN6+fNguP?!6zXGHFj|7nu)qA>ZF|2OKsbYV3I7Kxhy|yOT)C*bH}}!QzdWj>8F#-q z#|ulIR{O|IF5ICCA9Sh{O_N}>~7inkq0&k zYJF5W&HEMyy>2jp@&HjnRI()i)GCVP0Tz{nExDv+=+M9XkfTaN@;iZv!J49X-6~ zNt%Mx=;<8J)>T2>ni-GzL!^`oLnCP?+bNGZ(6}xXIT;N`dCX9Z1Oc!0L`$^|;X~q( z(B##anf)W9#Y90a#b|2h6(kb#Rua%Kz>fNkzqn{h`J{i7%DXn9N)hUg)sexEbFUZ< zjI!2rR-(Qyz#Ga#m()hqU=Y&Otnix3Vxr>qwMectxgs{a*~Vm4n%mY?NH5VlA=jT4 z*^Tho&5t2ua*&eIxcIH@f`!~xkH*Pu`$)~BpL%a>NI4yFFP>|2AQGp+2PV^`K(Hs> z1Rw?ITNYI_isku}a_cHr(Fm zRi2ronA$9H^+Vq?29Ek5Sg*%Fbm1N2n7hX!x!}$2;7eYE%}zlbPBhc`ty_vHo$B-J zl+NWVEJ(}~N#G#^B8X0@YXTmU@}Jf_%H&pN{5I;#PL_DnHG9_7r;CZB&eC6rr&J#A zMB^+_&ZzWHv}j9MX7NE+c$oWmbl)r_F~k>r!+g=zx(|3QG9Nw z*%2fkNvc#(I+q5b?Nng^HX)|DWZAhhioQM<};=qdS-bZwrk0F=53ix61 zg6P)R&W4g!M3!E(PeB$Df0568U>?cO2(_mU8MRj(%$~ML+Mnfg3P#lV`#6snQSF!@r%>k$zW76f zBf1Wg6el*O!e8xNxQZezEF@FbyJxFuWv#^Pc>xz^?x>R)HM@DMzcptDBaCswu+-OAnUsb-d50bz=EJ>3JBL+%`D;-TB^ zi@h>KeKB}~sYVRpZG;+%WV-Yt@k{a8$l(ulGi&=+lum~z?u%6}KgxEyuv2$moKnx` zc8Up;LJA8^qaq@7(TRJEM}v;%?T0_Hqzp$kjs3YT(@`WizK`1Y?DS;Cb$dk3pYf^O|$DLV|#rM@XY_gt-08P>3qRANo8e*Fzq2Q5{*Ch})~ zZ83YxvIrrv7kDJ_q6s4dz(p4Lth=Sh_K4EHOHj0r`n2iY;G`bz$-v@6U({53mF_o= z^VbV8Kl{SY_+y$1*n0(qB>N-!qJeAhhmmkL>~t_4=I8g}C9myrJXd*WA6P?uE&WIH z+hc!F2IiDxjmFod_~z-n1R3Va^&=pN7f9@b+Z?=p%;azqJU0e+&&|37ldCPr)+)}iD!xA1BVSi3(Mz)Z5w&<$>HAD| z>#>u?keT0>L)njQZpkmqu;M?TTiy4JQ(}7F|FW4=K^R76J_ylgdQ2MVWw6BCM1u{t z)C>v|8%>6pEyK-B&}R%~)ZfJQPFo9E`X5Sk9ul!o)2Gr=)zq|;imu+8`T7jjb8|y9 zW)8=@=d~jZ7b?MXS?D58-UolmKLjE_`^_T^ z(4bDNxb?h9ga1|jE3ZRDmJLfF&>1g?COEN@1yQ7&N!rfT?F&xd3s#oqiIc z-ZJ99_LYtCY3i<%#>Qj+$?9sZ>gxr>`!$TO2j(|;33WQ==cPgD3zh{TBzb9>{_u*I zY;|=_g>Ov_qjisElYcB)>NAI9Uz;f0%`)uwySt0Hp7I)@Q35_t4v$t8w9-^^AJh+g zh_YYuJ{x!8kN_e1;|>(51gR>5@LV{JeIl*gc}r!7cU^Rv+XzhZcqg{u1n2u9jU6HT zXUwKzBJ&gXU-4XzR@rzJrQ4TwdSNDldLZAtgzsw5_rf+OF*K>9ory1;V9>#VGsvu3 zQRz(7CmONQ>cYl`*Eq75$QO`Jtx1h#9u)=Z^cxNCUnV!K*9EU`t8>`%`*FY|z{As# zSl;t_KjQeF{V;+%5H^p1k?<1hkvC(<+_7FRGm4AknZMavu7|@U|Hh|lg*z>h>kqko zcQkD#RuKaNoF$uYOm*Nkvo;-dJlV4ph-ENoj3Ovf1xP0yei<@Xvz-w;b~dt zosid;tRK+k8_D=)<0xL$f6A{x%KP*1eKj5Q8Eh1ZZDtV{#_}jV_2L0r7_PpUu7kuK zgg|;aR^bF&khYiHDTj{^?<;wNpuX6n>+MajN6#nkeWxJA|NXS!nz2_TvGtbornkF? zq!2AW{ZY8l=Hq)2ug#@))|{1%*Jtu3f%384k3e@nkFy>v+8Qg+_SWFjbQ*f$(x_Cd zY+5$oRicD98MNuP9<;+AhdZLo$*M>EubfPId5ACM_VIM^kN!S_DiwZyLH>RJU`_Sr zjNtYQ$E&Nuajz}E&wXt%Hg@FJ7bOf4v@;&wwgb2SZ=L8De1vVM5b1gRLEAyb?R>@U zz&cp0B*E&FZ+v?q3Z~`kC5xmyy*gY(oD$y{>gnQy|E#^+Hqy!KW|^X$Wd9-JJGs4M z9WK8Me;^_*m)5BC3bV61EBw-BWw=;O`-gpUQPOdRFb(VlSrIqtTZlfr>=BnAKAHW>cgO8RjG201jNtFOD39Bb zF$LP!VoFbI@42BGw{N=s&tU%@!Kug3N3B@`P3L|IH`Q2Ppk2$_m}ud+)cQXClGQKi z$JN&(6^~RU;NmKe`%D@spfcl`l=|2>n@nmK-{f zp&7b&?SRA^{pu#)j>v4T<*_*X(ANb=8Mm`*fG-h>!!$0xy!ihn(EHh zw*Aw~I`zMvp1#xVay}+)hV77jpLK)p%RH^B_fv#A1o-#rcs34l!+*>2J3$ zHfkvSxW*9>`vpqT19vHHR_QM<@TQ|uCq#Z;HE7c`T3wXuzz$%E9hJuQOYha(Fy=Y$ znqE1)AL>+y%C{d0RmDi^-jE-r^?Jnb~*@JdzkW@}rqEuf&|Sh6QO6e#_B zK}iBr@(EyCdJ6Py#ib{uZ&n}c?WO0Q+a==fHvD5aB2?*>Q)g+_ddBk+Dfv%4+a+Fc z`_`;7Yzs50^Esq{=42dl%>fN3nC!T*JileKf!zp{50f;k#1~$)`26~B<8Ln7qjVv+ zq5i{F6Cxw!#o6!(V(I&d*iA_@VEIjNI3j@wcb-qZlnh?R|1*QL+aOX^;Xyq^#KMF& zwlm^w)2%N%Xun)WCwrpp#n~Q+yKUKqhrAQ++188tzNOGcyEAz!{X||{mqDHMhi1#2 zA_h!m(pXA0=Uo^B@|dZEnH`&L;%EwetweUJwZvo!tK5;`4+nhDc7KXf-fC*N#9T0E_e!o`KnUi4^_Ku3RSc>W}{f6c^5b0ql`Mtf?p9e#}+d*4~YC4PO>QNXe}7k&bM>? z(Zv%CUO2dXc4>4r+CgzCj6;kG6TV(yLy{|wfCsM@eQDw+p9Luam)^3EuraZt`tXM# z2~VCBn96QpER2I$@DuzKXdn%KEqmgRH6T5iz7^aG8xfv5NV2QuQ4~PnU`xDyTJ?{e zU@myVRBOfr&^a~ZgaR0Xv_(kZD+yoF87~31H56HJ2XHWIw9d8uDKPuOe!uYYX*56* zK+QR{V#yJ46!}g$3u58(E<*K~Fz^Fnt3R--7tOjdEcJ;WQcZi#`Zn2p;f2ElglEC> zA2w|iS&j)G1Gr-AS)45l9nC&j$=*IkD){Z+)4w(qOO}DHc_dl+un&r=(GO+1im_0X zMASSVKKu-sIX{2P=3$TNjJUt_%GNd` zY66BiNKG1vzqwKJ?^D9J3dd*--Tsm5-+!2Z#&&KLNd;LNvl~Z2kw4Joyx8AOzX`GF z+o>ONelc`-TDv9a?{!|X%|GF!GcS8dv0P!7R*r01ovA^NZY0?rn2*fVD+thYTXh%> zS)qzJv;D_y*LVP{bo?X2O#y<{z;~lb;sYhj#Ll^o@7zVE)nmqC?DN7Ex+`ya<98>| zLN8K7Px(PFy5kDZ+6w#S*B&0luu<1M-qZMN56nhp>8Y>w8*kr%VM%d%UPR#eQfUbM z{+VV1JZaqzTBRQ0z}QRbm!k*q0l9fqcRMLxu2^acz*WmrCLx+X{Ug?u^`bR*Rv3b% zk5FnUB<5sZtTjN|qFpQCge;(iJ)420`Nj;8J}azXc+5+#>TA;6&xS@$SKR!&7`LUI zM?q1NcV4jZFxl9@gQ+;4TZD`%S*qZ+HN%z#)fePHUrLalQ^I#;5&zkA_OfK)ig*suq^3d8{!h|9}PMotHi!6ZWC)$93A(OQgSS-K55VEf}Qk^jH zl7y?{Mz#Kh&bhfKz*N={1Af5b*w+9Q&J*m9$pAp+6(1Kn^zO}q^`CedG~ur|C_W+w zqS@|h4$!h>D8H_cPUM@zI!BBjAGW|=!132fR}{7u)aFT%k~CXcXYbi&;4p&fW*4yKqo z>}1>Ocf=&P8ExlUVjzS`PR8=g`=UoILtG5IbeU5aUs4%(<&oE;y3w(bf?V4fk_POaZ=dU?}8NjNddDNznhcms<`IAV5y$2ZI601`?R z2fzi9KNZJxbX2VehYy`i?kYL8+ZGCNl-;?~9cfW=Ub?ZUrYSq4X1QGp7K%Cm+yEN3& zwD&{8e_SkKU~U44s1zS2`>++FbawJ!G#J0$L5leg^rhHdU{cNtfYg~#)z4=U0Z&aKCuuCI z%|-}Ctg0})Wgr7fb5lWrX1f52^!6~RUw#L!zgi{)MgDpJz#us6#VFu`uLaat5vpdO zDpe7@($1Zh1vgZAIW-ANPlEND&mu$&n2dZy^tojN0T0ol-s8?f?!aDgSnb_e#Is}n zz0`s)FLX*|CW8xuAIEk&vuO72ghsyokxBRn=rt7}6mTA$kpseqO9NQ?aNm~Pp&-|o zgl{sv`T;T%mP>zS!DMe)0L%N&t&d(u5-;(jK*JtJ=RrbfH#y+;$SJs>vxt9v?dk*j z`fEC`H)i7VHqtN0PU~7wT8mU(W5-x5%l(UkJA3$k`GvBZmmIPM9gp{-36>YQDml{j zfv5L{r(}VPwRrv1`4_fI?v&KM#qPW0if@X1+tZ6p+atNlQJ@BQro^^!ZDKgNK-|PG z`{l49QYTbW@|jCH+yWu46YvzMp+Oad{hDuFio;Dax!%U3J!N0nE*KVvsOdkEaF}IW zJG7*c-z)ZaJA2r0)sb(^OAEVSDzB?P5gS-I& z!6}S++_>9~zp+GPj=sC7_fDX%8>YH+=9(0ig`{?*g%!Hy`B8#MZPTqwrux>&Y1*%& zZ%h3|=k;bfo@$`n4>adk>Vr*ix4@14j=Sw)ETWuC{~|NHZOG~cUpN~0r9Mdb`R?7i za<^vNAu>;^_WSd9dYkq6BejarMfBqq6s0i9me{k7u~H~-G1K<`Rt;=i?Q1Yj8R`RbP&} zld7QKqNe^9G7iDTNBB6OZSvrq(&fU*<@|k4S#(>P_A2o@tzH&bdawUjr|t%S|F4(N zp%^fCn&r8D4iVfGEAov>eF&LfRm^8}mMovz*nhiS2t|6LkE^Eb27>GreXLzC(W+Ax zD3Pl_UWJH;@)0EdA=*VyBcgGm36g<=EH|1sEkZ9Hxj2WJZj|fGnKCKMPtJg+B*^C% z48g*n(g{V{$3_hmtp}E#b3fKOZl+mM;333#aipDxCP0riD2EZ1wR7P|C`{~&ZIm)j z%(?yK?t|6H$O+iy6;Kq5u8v(u``078i~&QeWL6>v!OsM_vyauHZEDBiI2qD!-Cv3$ zh7-UjXvHIC1nvowA4O2O^~0o+ZA$=~C^@~#1jJm}e)A$eO}&hh@oiCol%GMz^Gtd- zCO@R=!4tP|J6zz8IKIlf$^u)4a)?MSj=+GMZ)(>58X4%0P15*_)*q_IWuaG{lbrr- zz~NwuxdFrW$nEncGN*5x#pFfvtK3x0RoEUi&i0(qGHB{w`|!JPJxV%`_l}Z)(y7%7 zcwYD*4eF{99cu+ZQ8HB1q{M+>^||Pl`Q_A#3xkUDbDi0Gna$pztLaAH^F{11Uxw7F zyXesZYHWxu2T-+T3*OFfyLPh_9&#_^cCzt!^kucYx@odm#i>4!=UpUM;PAg0C4#Ys< ztJ5`!c)4TpQ=Ce5{-g(9`9p5c z=fA#?iV`2lwUH_A7~206TY%4{Yp#yuG0xLOS6#Y0EwHC(rmGcu2Y=)YI4$-(*5_oF zGmvFi&h%%(DIZMI-4Vrpe59eh8wF#;KNVj3|Ed``3~*p2Kh4}h7=!2D)kH$#aj>C4 zr35cI#zTM9v4uE}vXhIXIZ402H7h&@puT0~zHI2_QMq#HJg|IWcK`=CHe6ABz}bGo z1Jjxo$w$|qrWQgskw6I;fEzWnp=kKBg^*z{&dy6UKfZ@abQ1jGqnk4elu&OLq^A)k z_;&v9FE_lrZ($9HdW|2&P&jKupYejGyU^J?0f<}Sh-~s`SZ%hmmjaS_@NzqR->Z+i z6A{YUi1ZoQsp><(Y}7ZKFSg~Nw}$|kG*{Ie?0o6WqQ1Tb>_@D>43w@0BK%8Jw<$evc}{CH&aAkZk#AWN;G-W4+E3e z3U8Qt0eZKm?#Ab}*D=|z9MEeY+hrj&T~;_mGOID!i?o$69?#kgj3T8xjo_>K{&RAa zZfg1Vz*AgYx&aem8O%zkz~EIx&vitJG5HW5;AUfl)#^;f#WAZNZe(T}Xu!n}s5%B* zOg4#Q)6qHT8F;VKhTqQF`YIkac`a8i`XdJ=(`CJ3;`#-MrwIcC*vyrfH@j!MJ+rK& zb|Wyt-MQzZ6C@}xcXxFx4}6LF59>?5L2h4xFA~!EOG34b0Nk8G*HMw|!HE*B28+Q9 znuJWhSnKv(C|vasz>jvj&&j4f5K~V1J{Y3onb6aW(H|JDaC=W1QqP<6zpwcZ5SCIA zZ)5n`t7C<_+mgF9FgjOq@)Ab$KdjW9-jM=*M;_R7T;qvm6ZZ8kagBF`9qBw3hYL=N z+!tqe8h-qbRuIP(9uB#v?=O@EcINXVlNGtSZd#5^Qa*#}DNM(AU zAbKkhQ+y3J1oXk%u}gVo&j>p`zey{gxDHI)>sw}|Jc&PoCY*+Kkla}_WwBY6{McU> zhdy#445PP%EPlG^b;j$W3ChTY9s1Mvvzz@Eg?Hv-KXV|Ww@BC16@s9PPJjku!kI%h z#1Pfiu%iO2=j@C_S~yG@i+uf1dAk7%hZ#|5=j#uShXUl2F>9rH6fxtF&RKhSOrZTXuy9nfX~dQwOO=fH#2+y^rjh+Td+^bbf@blEupD{k0ulHy^Lk zcY`pQ7qc)Gh@yN_2wXMbXSqjJ<<6n8--yb~q+MYjk5u>kx^C&eY1TN|qx>ajT?m2Z zs{KFi0n{F3m*TV7FCMn2jv|>s`+d{el?D+!UvF*d>eXcq2So!^q{Kg9SUVv35Uxoy z?^G2ror>>AOHPwDEr0f=I>YJtN+^?!ILO8dvv$xxJOFP`dK-uD61;igXRqCcrj>UX z#ALwK0JCI>kVRrN*wv>gJ5Xgo7@YSEaYG}lQ9dMN1 z#Y+eXXn0z*heR1-QE|_E^9TD(bRbBMap6?%0eEX-ahGTW2pEE$%6Gho(tEnhiOyv4fjx=XY)p8>j6R0n`DemVMHNAsX zUOVuiKsub7K~P`$-i1FO(K7o{DJFR!r0&CCONUbj*ee4>kA_Ky9 z-{Ud>4MKz>$WNx=4aJUT(}EMRNBuBWcV(_%kmS`}ghq%Ctj)XsTw8;ea#&wK)<+Y1 zy+H?GEWDug-ch4lMd9@V9PpcP|0g3^49ZB*jZ^-4e8i?j3W460)-H`A{bqLdn5ewY zZ&h~<@gNA-`V5)U@*wk}NkCN2cgDwH`*+L*lON#%E9J;v5gaD)TGpLmtoFnuEDG$A zWAZe3_kB$sy?Nt5lnQKW(+ zz=N0h!gAbWISGrz1UT-F!GIE!vvf0)*+eP^M1}Q!WP3?}$k+?7B^2L-SdIriX1;>EP z(ay!PiZ|w_&ut78*!VQ)GTRC-jRD>&9 zlUsf&ZE)Uv`DQ)whP0TCgpg)k~ zO@w5?FdCPbX0^e$9Nmz z?9QN=t1EBJ=(25G;%gS!<+vvi1FBi2pAxu8i^S*3*+&%z7}L8LS*9|vlOp0&-))5F zE>+crlkzgay%X^ahug}K9;Dr0?>xBWPTagi+8c3MH6ZanGSAI$TWM~egSM#d_+sq* zntdNDtU%ZifAMEN?m>}mA^J`p-%2j9m7rCx68)39%T%6McM-Ej2%o~ejlY$jHTXWl zCBx)r63ogeh6K*4RJ_Rhr9PnfV(Z=g$?LsEo#!~T;`c@;`N=5K;Kl`I4}u%lyYKi5 zDZToUj054-YcA0XVJoRwItoJUhgZbUlwnyo7F3R0;X{(wb`jiAuZfCwgJx$_4lh}2 zOdW}rp)6HIeEcjwYo9;}`K!adppe!MIUWD!|F5whJ6-qBhp6@ZQZDIPo5x=>vq}$F zn~nQeicKo|x}sZ=iW-j!8fbfv{ptnBX-4UNrWzzsXY~V8hks*j1w6!L^2LXasFdaZ zK3Deq*GcQ{rSl8(<`wfbFY-TC&rh6Vk*vIjSNsv^=ONL_xv(6Ro7Z8#2M*tO@0~h> zwpc!50<~Uz8`iU?QDSzZSYl#L#nrcYNBK-NsEe&V4mENdCc<|5w1`cOG3UqUT1M?A zx~W0u9+cdrX?6b96+~?IzmY)1a*CO8q(p$4Be3^&_h-W`I=sjebARL>TF>?MG3Qt~ z*+sS9y#}w+Ko~io!k^D}bMZc3YbDQi)V7mpCEI()z)VXBA0c@M|kY0#!HeDw=# zm(%Zf#K1w8u;8{DTG_L(z_~q_a`1+YxuYx-hz)TM?I4lAk@)^mH;Yk!ueuf=yK=da z4%NL%5q9AOlqUqjuHBCJ2LV z4$bd@QA=-Hi~`=HWwy9@yDytWv#YbkP%X|B0N+3)8qoxs`K`nbGCR)oqgEI;OaSDZr(gY8Kx^R^UhsjP)xIvIg)K> zMaPV=(#+nI{-))zW@S?>hjjBdnysx`i+pKCbmXW^%kH`l7(@)S#1=r3-+~6rELn>8 zTlQIVh+yODVpKfBNuPE>a4bg^WQitrHXyZx2b0_7-|g8{jdz*KtUvh*a2kRRc=joMI; zTgfrh7D^us?_s`%msj|y2URZ#aBAcBJQN%Ms38J)kIOJ$u{!T>mXZysupLC$U2>}W z-FtD>W+a+~QQLv=4CE#`5>a?dI~Plhj(aduw}>8C07_+-Uc2??@EALbiQWTRy6oh_ zzs-2LpQoRgi^>~Sht1z3UYZSJ0v-%~Sl|2d<&Ae}FZKHSQYd);!~i@`XYu?xxL}TX zRl&ybEvR%R=Am)EKx}x7%^yVSSp1igVwT3*!}UA@yb~ zElNZ4NKSkmJCod9VLOFLz4Y}arKB^|@ICEIGi+~4{^J~Daqs%5(^0p~s~hPm%F&iN zOvtguZ-Ezb;v_i*l+@fc$-9{Be}bd8(j%Q)1NHWQg!k5$+sq=Sm%4-JihnGSF22^_ zt2@OsKnEhA=g9&wrN=OeZnz51yRN%A^>7Z~<^SF(@{>}Oe93e01TtNw04fwkzRLfO zsP)s{u_k=wf`x$YABx|zHv}MLBGh|L_N zr2|k_ar-sBx8UXNXkNYrK3mA39ANR~W&~A8N>r*lALKQBhCw?Y^obDdE!@Zb{N(ualCmMj{|eAqv$)SsDq9I-{1AkCe0a&we7MgnfBfn5P;EPrb%m!kCOc2_ zjb^ocam3x&O!$DqsQ&aH=IM23WQ}cQ7a!%oDgVd)R24kDcz&|LACQjT`x}iy3njK~ zPHYv4m7LQhaWlEP0k1h6?xdL=nKub?CTs;C>~!ia{xjSVR)@w(GLgtK?=(mp+lsu; zwLFB}Enmh75Tmp*dVT0NPxsX)o-#}zW+Y3@)1^$MW{IsiLcT6WI6}r|aIr^;lUXd= zd3cYl0?uDykFKPJs9KabtV{oWbx;I}6xnp!_lBi)?p~u$JYn+V0TgK-cIV)%cRca_ zrvGBzRfni}fG-cMqLhr}Kalmsz>XXQa)%wc6}Vfn<40({-(Ap&$Y%Vmgpt3)hEzPw zPeRfC+A6cQmtzuzVZ3k#oZMa)zB(7UjYn91NilLJ5TEHD#Pk;1<=dKuuy z?7!`!mb|PKmgCTU{{lZJzfXH@nPHIqD`)zjmF8MbG;S1x454eFc)!> z&Uen!N5q{SY@+Kue1%7!Am~mOk#PcJ@A=-be3_`Ba`TA)-JUsDbmGRXe1}}ghZ28Y z0WO*Uc$;0l`O_m;FHYrv@%1t7<^X}xU^WEuTE)#{(#7X0<+~kn=KWWEj*$+jaUx2Y zrHINqqU*7fjhqEZxSuQy>c^vWIXQS$`B#VL4k}_gX=!#j?qBErJ_Uc`ZPA1wIE1?+ z1J>ErZY_=NFx4eZebX4oL+yB0wTcb&aZcaXH2y2y8I90Pguq|D0pBTIUcy>qY9k40 z#iNSf7lyo+)l`89njeV|n$sCT^cgZGh9$bEHkH#r0)DSj)X#Z9brnpXCFQ0>?0D9! zAgVFaPtaZW2oC>lHh7_Lh!de@0vA;=YmC_{_%#aAJVw|ia~iS5EjUKr{f>2If|Q*~ zxq-{r*8Ii#?AHhVc-1o1`9HA1ur{0zvSwf4>c0p2 zU^x+Vn@;r3h*Eh=`pI(Ox2v@4r|*Bm@be?b!5^`S$AJ29)&R_=!l{EW(qe$7at3M1 z({;<)%tZsq?sIATLIF=`7bI>}bWxInbn1#Q(m5G$`GjnAuAH`Xa1G06w=g`{`8-J!l<+ko95luilIvNwe6c zKYL)xfWW7KU#%nP)AU22e>M@i7{;pa&Wm_8AU3F6-6;8E?LjZ z!3Q#sX(iqD*Svm`zKW9WPBejSekfC~bmr&cYT(|hKF_HFEfzg!3!7WvTg9y8)ac1t zBAZf}_y2KK4+#^x zT7~lhK_#x_7?O1DJi7vQE&zJjSW4rd5WF-CWzT^J`C<=7TonV!bygQ>AV}(Xb7-e& zv{uJz;=lR1DoWZB&d*noq_7Z)S~QClkHzPGd%)P0bDr-;Iwt9lBn`ROUJAonKm>{L zfVF@F7TMP#ia?*$#VPH-#&-!LK3&hB>DD?Abrp$h{L#ya2zbn82*v~nXM6p@(Y4#N z29P*TY56tU>n<)FZ8;*i`hufNW9+>*BT!RPA}9ztLBd5euE86~*T4yT+5H^h%j9W< zKw=w*m(RgbHl>^<+39+|Ot+RdkjM>?FuZ60D~J{hAplko_4_~;s!insu7^btri@D- zhh^B!a+<`awc(0)?UVGKdq2)kRe_iBOd812ZZm}9mUQdWn1k`qgiVI``i{hvhHvFj zBDUO7vw@yVFgDyfyc%V?Flt z9N14|*FE0OX!WnAzy?3m=P+#W4@s~Lwsps-K@z?(EOF|mwMyZqfzGX=?s^dTx7PR7 z9KsQ%N-6NXQ!I&?{n5M1sScqlABxDm*W^UEWR}^7PRJf(ThgXXc;n;RkRI|-V6928 zXIT9f7xX^M@0T$zSi*Y-bK5dWp(8`V^OQv!GUXo!aQrVHi-4ZT_WGglm<2cDuQj*w zjzL~*Nyc`Nj?l&~(Ma%~dAq0d!DYf5_Nd2nsD`8yHd~L()sVL1l+}L}N933)hL?P1 zrbWmpb2^PU7AGDH|7`N}6SHg^R&Fk?Qo-V@U99PLJc2-ipb>Woa z$xfPhH=+hBv?2E&Mz%UTu;K1>OZn_HA~oPZW>rFWlA25b#gB2bYTGw(e#F(^D}IJq zY(SZgq80xnAB0J)FXGo3M?J%+%ZD)E*;Z}yIwR&nmHr8@_4q#?;%9RI0Ujr2X=Ej~ zMd){0P#U+mwswwh=Pmw|e|`6748exgIeFv*u;L+;JhQGw5oTnAx`T$3$(p0J_{K8Q z?ML3W;6uVyG_Ek5utYt~_AC(GHzq6YCc7@Eq$nF@$OMmYF_}EDU|`*b%uW0cQn_9Z z-1~9#ddRmkJQ$gM&&zYWza%NVox9j+AR}a2a3rbS|4YpzT{4cfLypM=J7Q>UM#Om< zaY0LCfo>zCm)i2a*+yaYmMQosnv(M$T3Lv;kNMHZ+&{noQs4TGI!?*V4ASK_mtLPaarIQneV8nQw1jHn znK-YrP<=4}6d{vyg*+ZC{oZ;xTzG3*qo7wWAvQ!mV4gB+LuMW=#E_UGc(i!JWWbeF z-xBfh*@5@DqVz&h3pm$0yeh`d^?RAS@1KsbCa-0{w<<)a?s29kc11~s-;fl{t3#YK zs_7*0vrhY;C)Nkf%ZW*Rx5DetGgX7E~)WH>B( z;C<<115-)sipt_&W9|w5Lr&K?yxt$v|Nl^_dnAiqeB$>F`n-Ql#bhmhWiWko+J>yz zeh4M~OM;-O{Pn~E^e?7?f{l8^3|4ks@HWwNt--Whb&iu%dcSc{t z^2QssAq(;uMG4h%SeX_K&~{;=?#AkR#XJc+6VwLQ57O_xmIMT-qera8NwZIU5~=LW z`t&z%Gvf^cN|c)B@9pIsXKGY&tS@BMieOMHlk zZJ$jHEVp6NBGgq;%TK?Dj&QQvUd{A>Wt-*n=#TLtS(T8)HH|V8Wta$~ThY6UGR~CB2r0Q`n#kXodHbZd z)?4eHwa!{+|M~s)Z}y(O)|uI#-&fg={oPDr+?K2Lp>_x9(v|!}Pz}X1+OI8r&z6ji zZOB-0PU8jc(zK8o-2P4BLB~RExyH#qFy1xL%*FIuKF_u&$Kj!{q}p5iOJ9q1^gu;> zfwtG0iT1As?`Z60?Gf?zxhh&n$yv?RU-DK5;XJQEJkwP*;_)|DPk5H=7ds%iAV@#r zaOt^S^;6TRJM~r6070^?g&-|XZ-cC|NxWt|iTGD===}!2H9M6_kd{((Rb+%zX{H{y zH-BPA&KtW-vOnIhTu0*~tsiZ;dd<%*$y5LMOsK&nJ6sYI_#!{So;Zgfgo%vxpXhHs zXw>;(azhB@3cnb&NpPo_O^eOT{bx#?M{dOPPKRni)IjHh`7;%bf#fp_qPL6TR*9F^rmh4b1JG{AOE81-e{x_icOr0oOne_@yWE}6sGX^{b4CW`BZO# zTkWg24UI%A+153Xll*&ZAKO7R=ee)rlBPEzO#O>(;t;!vIY}_M9MXv^_l$6&U7lee zTxO`$d}x}6wv44=W_p{0yj3%`vI0_T!Uv^FUcbyl{@#lFdzFbMry<9C=4D!NH?Eu> z?o?{5ctrIQkmB^VBiY5sMW%gkkuL-&)qJ((dY6~IME;v3>XD7TKRWq;9xi;-jE}>C z@{Qq6{Xh2j)uP;?n@1ZWev*DOX&Lx!DuU5`w~$GT>Bt70f!%8FB>%2o7FtIbnr)V< zie>S4N$BWc+}FaZnJ2O;>lPDE@0Z@pbV%=|T68(O$f6Nn|iPu4Zyg$qI*-P8k|PUlaz&TGV2fN;90d}kuM|qEPIlO zqQmDf?9LUmI!|iV%@ywPE&jAh2^`j{M};a!Hxo8E=6li#j7$NRZ1Q*{<=@PJhbf(B z+X46-uaUX&*vj~qx~+oMagWKa1|a=ki!I!Ky&$J_2j`hxXt-tz=miiSo^l*1EbZY_ z3owq;dGUM1BeEvn!fDtU(1&|9jTSvgh6`VSaXVAjL!FoEtMoJeX)SY$30A~#ca{7q zBE;0{u(BH0N~t@dB#v(0^{TgheAMR_Om#_$f=X7m^r5O&IsLZUYVZz+CuZ}DA!luJxFhZ zkn_yj(!NUcXDn}g@XcIh*NHre@f7;RKzrz9c8~7mGm+%$I|wz3MLtqd)O>hL7~C(v zqjsX*Rn#02OoK1R(``N|6JmK{$Ji2acf~~)HG52kqOa_xKwL3RVAIcTG54j}@lk~5SIsTC$Pc#G)8cxwf>9gnwLQXUNq($ZE zh0`)fnBsswz6^K%s0nwl_5(L6RXP6yeI#uMv#vNoo@wCF0D8!RJX z7JB$H%9|m-O{2UQ$t^F057CB0mzz0FneNJJOt#vKSmvPg&?B&<0x zTHR;4uR{iRqjQ5hihw0?a5z|jp4IY+$J*8Q{?h`ZkZ34A8?ctNNU(#Ffty(gjO&V*Lf(D!bV zho1NBa?NZ2$k*j~eRmDsu|^B6wLo_r5Fhf_$3fB(m#~jr*5>Gi2Lst4CEe!v@}H=_(ZF!={%7RUme+lC4XHXy5`sro6@kFW>nRxiFqWM13FEDo-Kx)xztr5BB? zuyF}S!H6N^qy>b&lGWsB%+Y{#G|IeR1T`(j3>6+^1_Vj*l0`x$Vt_bmfl^;d7j~2m z>o$K4M)Wb^jZ#0!xL>NT&>HiY8FsV|op(o8Yk|~kN#2Ta-zVQb;hB>3y88J-kueUa zq6fOj735;_+zJNyJT_*x*7-b?tI9)jx1-E^MIZds>k`eKm-kt090u_6-5jt<=oyvq EA1yKJwg3PC literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/archive/testdata/girl-3.png b/exercises/06_code_quality/archive/testdata/girl-3.png new file mode 100644 index 0000000000000000000000000000000000000000..d0dc6200a883b85ddb96076416b7267b4d1ec87f GIT binary patch literal 27458 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 literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/archive/testdata/girl-4.png b/exercises/06_code_quality/archive/testdata/girl-4.png new file mode 100644 index 0000000000000000000000000000000000000000..9822f81a8c1b59ee0ba361674c088fd017c9f5f5 GIT binary patch literal 20140 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 @@r}Q2K`?1$^}MpkTvjP>XoX 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 literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/archive/testdata/girl-5.png b/exercises/06_code_quality/archive/testdata/girl-5.png new file mode 100644 index 0000000000000000000000000000000000000000..16af9a001141fcdb19b65b6a376ac0a434485986 GIT binary patch literal 19352 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

X$BHM& zfyO^~1`dgfp_{ZFT^oCO?G!#fyi!47Bx0&hVu;; zqINJ5%;`b?n)&bIklk!^uhZKA)GT`i+dAWAv-U<#xQmeB)?MZ(UVW|_zS}W?x;TV+ z*ZCzXF$8h}R%1e|OshwfrvJ^B_IchtRX_CDLkWiU>1Prk9M2&1lQ)O?0QWqQ<&3lE zr{yovap6pd&3GdU&J{P~? z4|obVW%*zK6c0rqbJsq9C7B7!Y8DxK-ly2U?c{ee`*tTMp@X>Nc?@)P2wSmS!Qhlk zR7uvw7IQ@uj73UIN@D|c`lcO-6Yumg665MLDuDR3KXCt?`{J-D%kk!R+?<~zRteZ+ zTWY>(lU^fmYP!3eA}s{6_VJw=3By;*$ho_qlWBfr3~D|`)}UY%NcoZfDeGNqtG}&I zSz8r#^^Dhz{`i8Z+wmu(yQ&FpCcEug?R80)Z2PxzU!%2%3|zs1gCf_;C3el^E7*U1 zduAJ%p?v44XOe;`ai;(J15M1&E=!M~t+runjrS<-Izc(}qwy3h2r@q_rhjwl4#bwR zg5A9HAAyG+UY3oH`SOYo8!QKELv!4fiENnB|5&k9%l0A!@{Ql8c|FDc&tsU%%csl# z&j~BPU7cDIm3q}Rp?AilqRH{`FH_C*u8`54^sc4bN{nZ9KwV`1;jp=pV#r^evU+}h z=#%~@ZH6Dmox;#$`dj%K2wCevgKKJkD!4X#xTr_Aq9U_f5MpC>v<1Ys3E9@IL@&8qE0YtZnAD*e?4` zS#<80Zpr`85ZrfZhW;nZg$6di!k_57+c4;VuWL!Wdi(#s{MP>cTGL*v`1soJ@P|X0 z+rgk^mSj;-9>`d2V|QZetTdUO8D6t1VUy-O1z9rbmAMWp4e!6VGGpa;+rgW=DsNv^ zZQLHK4RiW5(@^+HWXtGDrAs!SM|xzm(2$LLTWe#{BoC)57_0iC(X;5q_JF5-%XYK< zmFA!0JQh3G=;@|w_Lc*wChEM0UTi(zy_Dme>K1rge^3yw*w=c(gI;C-Cv}>IH%qYAW;r?L^j>*DT;`@Ns2v`v(#3Oo&6GNEx=$u9SYSZNp(x@?ZMDL^i3%B$`h`;~aG3kP z9cuUH@Iqd$Ya&w1cT_&;=9NE`(ictZTZGnvz{2tX-%H}`(XpTC<<97Br5auydE>rw z(toxKo^rh|c3^{(jt(pxR2_|t%2#)r#7MUb^6WRAY*lrM$|~pNA9d71XvVWfV=xvNFRE zF@u>fTG2=pHj2_1iWFv}WXfe-jv0-UaXRf}QYti(gw16tl1sUyBDZnrWLnu#l)~8e zo9*l$d(M96eCK@M_x|4JecsD?&wHNV@A;sRpoXf5$?w}2JMiR>3l?FEQOhZGU6U|g z?09jCOaGG&z1gmg}x*^4-E=`QUDu|h4PPiqQH_jjx1{gaVg@o@ybhg zKUXtvI3`zaUF{mzmi>?p7BI@VxxF9w@?M6LSJoV|6eUZ=gT0Zb2*({*v&VXxFmYJW zv2A$kVk0#7HWO>D8RXetJEnn>owAt}&1O!alNKUR|9m`rGiEAJtQWCUtWk9_#i&3( z+M_-E?tLD`l>_HU3u0$ypK_1SwEr8$z6c4N2j zK*@kz-iMZ0z3|JQQjQuVp>H^wPebSz&r12Z6qn7`8Zf#-U!ykOtZ`kl zQIg=zcwgwtFyrIv{AV$Z8|aqNbM9npLWRZCA@V+-4O3`s467TDc!oviQ;YUjPAdY+ zPR{9)tE19BR4&^yul6LvpPJfx*29wsx}9W6T|U8_!0j*|6vYKGJ7TAbA_s5V7+CoX zw5tOP_3I_kSJ`XH`Z2d4L^6curMqh(Pp&$cg(rX#L>S@P*zf#LabA|HSY~RyP7Oq(WxlG~;PdWsi1r1O zf`IKvE6?!EXVBc4WhPFl*RPZrC=UIEmch*ssM8N~yo=$9l8IVDfaDFgaNba*9aWd9 zc%Y7K`|zzO@XDRO1fdk!4aR~}uPYFL08D02sF)ipJI9_5!y8h^WwY+hb_jcvMmFD_ z13?E-b(`$YBVLm8_kN^?lTn~7hf6hTRdvL5P&+(t$?`t iVE*HSMAFS-$><`g<(1J~$qV}j0A6kkri;WW==|RSpV_zo literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/archive/testdata/girl.png b/exercises/06_code_quality/archive/testdata/girl.png new file mode 100644 index 0000000000000000000000000000000000000000..831202b2211bf7059f5cee83013db12f1df2bdca GIT binary patch literal 23054 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 wYVA0$*hx>nGo8)M))iL2d=- { + try { + if(ctx.session.authorised !== true) return ctx.redirect('/login?msg=you need to log in') + const data = {} + if(ctx.query.msg) data.msg = ctx.query.msg + await ctx.render('index') + } catch(err) { + await ctx.render('error', {message: err.message}) + } +}) + +/** + * The user registration page. + * + * @name Register Page + * @route {GET} /register + */ +router.get('/register', async ctx => await ctx.render('register')) + +/** + * The script to process new user registrations. + * + * @name Register Script + * @route {POST} /register + */ +router.post('/register', koaBody, async ctx => { + try { + // extract the data from the request + const body = ctx.request.body + console.log(body) + const {path, type} = ctx.request.files.avatar + // call the functions in the module + const user = await new User(dbName) + await user.register(body.user, body.pass) + // await user.uploadPicture(path, type) + // redirect to the home page + ctx.redirect(`/?msg=new user "${body.name}" added`) + } catch(err) { + await ctx.render('error', {message: err.message}) + } +}) + +router.get('/login', async ctx => { + const data = {} + if(ctx.query.msg) data.msg = ctx.query.msg + if(ctx.query.user) data.user = ctx.query.user + await ctx.render('login', data) +}) + +router.post('/login', async ctx => { + try { + const body = ctx.request.body + const user = await new User(dbName) + await user.login(body.user, body.pass) + ctx.session.authorised = true + return ctx.redirect('/?msg=you are now logged in...') + } catch(err) { + await ctx.render('error', {message: err.message}) + } +}) + +router.get('/logout', async ctx => { + ctx.session.authorised = null + ctx.redirect('/?msg=you are now logged out') +}) + +app.use(router.routes()) +module.exports = app.listen(port, async() => console.log(`listening on port ${port}`)) diff --git a/exercises/06_code_quality/jest-test.config.js b/exercises/06_code_quality/jest-test.config.js new file mode 100644 index 00000000..220e31c9 --- /dev/null +++ b/exercises/06_code_quality/jest-test.config.js @@ -0,0 +1,19 @@ +'use strict' + +module.exports = { + displayName: 'test', + verbose: true, + collectCoverage: true, + coverageThreshold: { + global: { + branches: 0, + functions: 0, + lines: 0, + statements: 0 + } + }, + testPathIgnorePatterns: [ + '/node_modules/', + '/__tests__/fixtures/', + ] +} diff --git a/exercises/06_code_quality/jsdoc.conf b/exercises/06_code_quality/jsdoc.conf new file mode 100644 index 00000000..9fa536f2 --- /dev/null +++ b/exercises/06_code_quality/jsdoc.conf @@ -0,0 +1,22 @@ + +{ + "tags": { + "allowUnknownTags": true, + "dictionaries": ["jsdoc","closure"] + }, + "source": { + "include": [ "." ], + "exclude": [ "node_modules" ], + "includePattern": ".+\\.js(doc|x)?$", + "excludePattern": "(^|\\/|\\\\)_" + }, + "plugins": ["jsdoc-route-plugin"], + "templates": { + "cleverLinks": false, + "monospaceLinks": false + }, + "opts": { + "destination": "docs/jsdoc", + "recurse": true + } +} diff --git a/exercises/06_code_quality/modules/accounts.js b/exercises/06_code_quality/modules/accounts.js new file mode 100644 index 00000000..fd1c7ec4 --- /dev/null +++ b/exercises/06_code_quality/modules/accounts.js @@ -0,0 +1,60 @@ + +'use strict' + +const bcrypt = require('bcrypt-promise') +const fs = require('fs-extra') +const mime = require('mime-types') +const sqlite = require('sqlite-async') +const saltRounds = 10 + +module.exports = class User { + + constructor(dbName = ':memory:') { + return (async() => { + this.db = await sqlite.open(dbName) + // we need this table to store the user accounts + const sql = 'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, user TEXT, pass TEXT);' + await this.db.run(sql) + return this + })() + } + + async register(user, pass) { + try { + if(user.length === 0) throw new Error('missing username') + if(pass.length === 0) throw new Error('missing password') + let sql = `SELECT COUNT(id) as records FROM users WHERE user="${user}";` + const data = await this.db.get(sql) + if(data.records !== 0) throw new Error(`username "${user}" already in use`) + pass = await bcrypt.hash(pass, saltRounds) + sql = `INSERT INTO users(user, pass) VALUES("${user}", "${pass}")` + await this.db.run(sql) + return true + } catch(err) { + throw err + } + } + + async uploadPicture(path, mimeType) { + const extension = mime.extension(mimeType) + console.log(`path: ${path}`) + console.log(`extension: ${extension}`) + //await fs.copy(path, `public/avatars/${username}.${fileExtension}`) + } + + async login(username, password) { + try { + let sql = `SELECT count(id) AS count FROM users WHERE user="${username}";` + const records = await this.db.get(sql) + if(!records.count) throw new Error(`username "${username}" not found`) + sql = `SELECT pass FROM users WHERE user = "${username}";` + const record = await this.db.get(sql) + const valid = await bcrypt.compare(password, record.pass) + if(valid === false) throw new Error(`invalid password for account "${username}"`) + return true + } catch(err) { + throw err + } + } + +} \ No newline at end of file diff --git a/exercises/06_code_quality/package.json b/exercises/06_code_quality/package.json new file mode 100644 index 00000000..6c5393de --- /dev/null +++ b/exercises/06_code_quality/package.json @@ -0,0 +1,47 @@ +{ + "name": "10_auth", + "version": "1.0.0", + "description": "", + "main": "index.js", + "engines": { + "node": "12.x" + }, + "scripts": { + "start": "node index.js", + "acceptance": "jest --coverage --detectOpenHandles", + "jsdoc": "node_modules/.bin/jsdoc -c jsdoc.conf", + "linter": "node_modules/.bin/eslint .", + "test": "jest --coverage --detectOpenHandles", + "unit": "node_modules/.bin/jest --coverage --runInBand tests/unit/" + }, + "jest": { + "projects": [ + "/jest-test.config.js" + ] + }, + "author": "", + "license": "ISC", + "dependencies": { + "bcrypt": "^3.0.6", + "bcrypt-promise": "^2.0.0", + "fs-extra": "^7.0.1", + "handlebars": "^4.1.2", + "koa": "^2.6.2", + "koa-body": "^4.0.8", + "koa-bodyparser": "^4.2.1", + "koa-router": "^7.4.0", + "koa-session": "^5.10.1", + "koa-static": "^5.0.0", + "koa-views": "^6.1.5", + "mime-types": "^2.1.22", + "sqlite-async": "^1.0.11" + }, + "devDependencies": { + "eslint": "^5.15.2", + "handlebars-validate": "^0.1.2", + "http-status-codes": "^1.3.2", + "jest": "^24.1.0", + "jsdoc": "^3.6.3", + "jsdoc-route-plugin": "^0.1.0" + } +} diff --git a/exercises/06_code_quality/public/avatars/avatar.png b/exercises/06_code_quality/public/avatars/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..125a38930a39455cbb6b1873b696050a6ca232c9 GIT binary patch literal 56968 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 T#XL}^TZE;ds;g3^WE=560vv@b literal 0 HcmV?d00001 diff --git a/exercises/06_code_quality/public/style.css b/exercises/06_code_quality/public/style.css new file mode 100644 index 00000000..91b57140 --- /dev/null +++ b/exercises/06_code_quality/public/style.css @@ -0,0 +1,12 @@ + +body { + font-family: Arial, Helvetica, sans-serif; + } + + .msg { + border: 1px solid red; + font-weight: bold; + color: red; + padding: 1em; + } + \ No newline at end of file diff --git a/exercises/06_code_quality/unit tests/user.spec.js b/exercises/06_code_quality/unit tests/user.spec.js new file mode 100644 index 00000000..886d3440 --- /dev/null +++ b/exercises/06_code_quality/unit tests/user.spec.js @@ -0,0 +1,76 @@ + +'use strict' + +const Accounts = require('../modules/user.js') + +describe('register()', () => { + + test('register a valid account', async done => { + expect.assertions(1) + const account = await new Accounts() + const register = await account.register('doej', 'password') + expect(register).toBe(true) + done() + }) + + test('register a duplicate username', async done => { + expect.assertions(1) + const account = await new Accounts() + await account.register('doej', 'password') + await expect( account.register('doej', 'password') ) + .rejects.toEqual( Error('username "doej" already in use') ) + done() + }) + + test('error if blank username', async done => { + expect.assertions(1) + const account = await new Accounts() + await expect( account.register('', 'password') ) + .rejects.toEqual( Error('missing username') ) + done() + }) + + test('error if blank password', async done => { + expect.assertions(1) + const account = await new Accounts() + await expect( account.register('doej', '') ) + .rejects.toEqual( Error('missing password') ) + done() + }) + +}) + +describe('uploadPicture()', () => { + // this would have to be done by mocking the file system + // perhaps using mock-fs? +}) + +describe('login()', () => { + test('log in with valid credentials', async done => { + expect.assertions(1) + const account = await new Accounts() + await account.register('doej', 'password') + const valid = await account.login('doej', 'password') + expect(valid).toBe(true) + done() + }) + + test('invalid username', async done => { + expect.assertions(1) + const account = await new Accounts() + await account.register('doej', 'password') + await expect( account.login('roej', 'password') ) + .rejects.toEqual( Error('username "roej" not found') ) + done() + }) + + test('invalid password', async done => { + expect.assertions(1) + const account = await new Accounts() + await account.register('doej', 'password') + await expect( account.login('doej', 'bad') ) + .rejects.toEqual( Error('invalid password for account "doej"') ) + done() + }) + +}) diff --git a/exercises/06_code_quality/views/error.handlebars b/exercises/06_code_quality/views/error.handlebars new file mode 100644 index 00000000..11fe16d0 --- /dev/null +++ b/exercises/06_code_quality/views/error.handlebars @@ -0,0 +1,16 @@ + + + + + + + ERROR + + + + + +

An Error Has Occurred

+

{{message}}

+ + diff --git a/exercises/06_code_quality/views/index.handlebars b/exercises/06_code_quality/views/index.handlebars new file mode 100644 index 00000000..5d9be040 --- /dev/null +++ b/exercises/06_code_quality/views/index.handlebars @@ -0,0 +1,16 @@ + + + + + + + Home Page + + + + + +

Home

+

This is a secure page. Users need to have a valid account and be logged in to see it.

+

log out

+ diff --git a/exercises/06_code_quality/views/login.handlebars b/exercises/06_code_quality/views/login.handlebars new file mode 100644 index 00000000..e42e65bd --- /dev/null +++ b/exercises/06_code_quality/views/login.handlebars @@ -0,0 +1,24 @@ + + + + + + + Log In + + + + + +

Log In

+ {{#if msg}} +

{{msg}}

+ {{/if}} +
+

Username:

+

Password:

+

+
+

register

+ + diff --git a/exercises/06_code_quality/views/register.handlebars b/exercises/06_code_quality/views/register.handlebars new file mode 100644 index 00000000..2e543b83 --- /dev/null +++ b/exercises/06_code_quality/views/register.handlebars @@ -0,0 +1,21 @@ + + + + + + + Create an Account + + + + + +

Create an Account

+
+

Username:

+

Password:

+

Profile Picture:

+

+
+ +