From 74778c1af85e9e50c275e4f2665eb70b2c3d8210 Mon Sep 17 00:00:00 2001 From: Kris Koishigawa Date: Mon, 23 Sep 2019 18:48:23 +0900 Subject: [PATCH] fix: Updated all Glitch URLs used to import/remix a GitHub repo --- .../basic-node-and-express/index.md | 2 +- .../managing-packages-with-npm/index.md | 3 +- .../mongodb-and-mongoose/index.md | 33 +++++++++---------- .../advanced-node-and-express/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../exercise-tracker.english.md | 2 +- .../file-metadata-microservice.english.md | 2 +- ...uest-header-parser-microservice.english.md | 2 +- .../timestamp-microservice.english.md | 2 +- .../url-shortener-microservice.english.md | 2 +- .../meet-the-node-console.english.md | 2 +- .../announce-new-users.english.md | 6 ++-- .../authentication-strategies.english.md | 2 +- .../authentication-with-socket.io.english.md | 2 +- ...an-up-your-project-with-modules.english.md | 2 +- .../communicate-by-emitting.english.md | 2 +- .../create-new-middleware.english.md | 2 +- .../handle-a-disconnect.english.md | 2 +- .../hashing-your-passwords.english.md | 2 +- .../how-to-put-a-profile-together.english.md | 2 +- .../how-to-use-passport-strategies.english.md | 2 +- ...erialization-of-a-passport-user.english.md | 2 +- ...ion-of-social-authentication-ii.english.md | 2 +- ...on-of-social-authentication-iii.english.md | 2 +- ...tation-of-social-authentication.english.md | 2 +- .../logging-a-user-out.english.md | 2 +- .../registration-of-new-users.english.md | 2 +- .../send-and-display-chat-messages.english.md | 2 +- .../serialization-of-a-user-object.english.md | 2 +- .../set-up-a-template-engine.english.md | 2 +- .../set-up-passport.english.md | 2 +- .../set-up-the-environment.english.md | 2 +- .../use-a-template-engines-powers.english.md | 2 +- .../anonymous-message-board.english.md | 2 +- .../issue-tracker.english.md | 2 +- .../metric-imperial-converter.english.md | 2 +- .../personal-library.english.md | 2 +- .../stock-price-checker.english.md | 2 +- ...via-https-only-with-helmet.hsts.english.md | 2 +- ...e-mime-type-with-helmet.nosniff.english.md | 2 +- ...ng-the-parent-helmet-middleware.english.md | 2 +- ...ide-caching-with-helmet.nocache.english.md | 2 +- ...-with-helmet.dnsprefetchcontrol.english.md | 2 +- ...ompare-passwords-asynchronously.english.md | 4 +-- ...compare-passwords-synchronously.english.md | 2 +- ...tion-using-helmet.hidepoweredby.english.md | 2 +- .../install-and-require-helmet.english.md | 2 +- ...kjacking-with-helmet.frameguard.english.md | 2 +- ...s-attacks-with-helmet.xssfilter.english.md | 2 +- ...usted-html-with-helmet.ienoopen.english.md | 2 +- ...th-helmet.contentsecuritypolicy.english.md | 2 +- .../understand-bcrypt-hashes.english.md | 2 +- ...th-.deepequal-and-.notdeepequal.english.md | 2 +- ...-the-properties-of-two-elements.english.md | 2 +- ...-how-javascript-assertions-work.english.md | 2 +- ...sing-chai-http-iii---put-method.english.md | 2 +- ...using-chai-http-iv---put-method.english.md | 2 +- ...pi-endpoints-using-chai-http-ii.english.md | 2 +- ...n-api-endpoints-using-chai-http.english.md | 2 +- ...sts-using-a-headless-browser-ii.english.md | 2 +- ...-tests-using-a-headless-browser.english.md | 2 +- .../test-for-truthiness.english.md | 2 +- ...f-a-string-contains-a-substring.english.md | 2 +- ...e-falls-within-a-specific-range.english.md | 2 +- .../test-if-a-value-is-a-string.english.md | 2 +- .../test-if-a-value-is-an-array.english.md | 2 +- ...-a-specific-data-structure-type.english.md | 2 +- ...variable-or-function-is-defined.english.md | 2 +- ...st-if-an-array-contains-an-item.english.md | 2 +- ...est-if-an-object-has-a-property.english.md | 2 +- ...is-an-instance-of-a-constructor.english.md | 2 +- ...or-at-least-as-large-as-another.english.md | 2 +- ...-assert.isok-and-assert.isnotok.english.md | 2 +- ...ar-expressions-to-test-a-string.english.md | 2 +- ...ouble-equals-to-assert-equality.english.md | 2 +- ...quals-to-assert-strict-equality.english.md | 2 +- 77 files changed, 95 insertions(+), 97 deletions(-) diff --git a/client/src/pages/learn/apis-and-microservices/basic-node-and-express/index.md b/client/src/pages/learn/apis-and-microservices/basic-node-and-express/index.md index 7819ad6186..c5cf208d57 100644 --- a/client/src/pages/learn/apis-and-microservices/basic-node-and-express/index.md +++ b/client/src/pages/learn/apis-and-microservices/basic-node-and-express/index.md @@ -16,4 +16,4 @@ Express, while not included with Node.js, is another module often used with it. Working on these challenges will involve you writing your code on Glitch on our starter project. After completing each challenge you can copy your public Glitch url (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using the **Backend Challenges Boilerplate** (required if you use Glitch) or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using the **Backend Challenges Boilerplate** (required if you use Glitch) or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! diff --git a/client/src/pages/learn/apis-and-microservices/managing-packages-with-npm/index.md b/client/src/pages/learn/apis-and-microservices/managing-packages-with-npm/index.md index babd0401be..4e9b12e156 100644 --- a/client/src/pages/learn/apis-and-microservices/managing-packages-with-npm/index.md +++ b/client/src/pages/learn/apis-and-microservices/managing-packages-with-npm/index.md @@ -6,5 +6,4 @@ superBlock: APIs and Microservices ## Introduction to the Managing Packages with npm Challenges The Node Package Manager (npm) is a command-line tool used by developers to share and control modules (or packages) of JavaScript code written for use with Node.js.

When starting a new project, npm generates a package.json file. This file lists the package dependencies for your project. Since npm packages are regularly updated, the package.json file allows you to set specific version numbers for each dependency. This ensures that updates to a package don't break your project.

npm saves packages in a folder named node\_modules. These packages can be installed in two ways:

  1. globally in a root node\_modules folder, accessible by all projects.
  2. locally within a project's own node\_modules folder, accessible only to that project.

Most developers prefer to install packages local to each project to create a separation between the dependencies of different projects. -Working on these challenges will involve you writing your code on Glitch on our starter project. After completing each challenge you can copy your public Glitch url (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing.
Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! - +Working on these challenges will involve you writing your code on Glitch on our starter project. After completing each challenge you can copy your public Glitch url (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing.
Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! diff --git a/client/src/pages/learn/apis-and-microservices/mongodb-and-mongoose/index.md b/client/src/pages/learn/apis-and-microservices/mongodb-and-mongoose/index.md index 0348859930..a3fe6a7914 100644 --- a/client/src/pages/learn/apis-and-microservices/mongodb-and-mongoose/index.md +++ b/client/src/pages/learn/apis-and-microservices/mongodb-and-mongoose/index.md @@ -17,7 +17,7 @@ Mongoose.js is an npm module for Node.js that allows you to write objects for Mo Working on these challenges will involve you writing your code on Glitch on our starter project. After completing each challenge you can copy your public glitch url (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using [this link](https://glitch.com/#!/import/github/freeCodeCamp/boilerplate-mongomongoose/) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-mongomongoose/) on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using [this link](https://glitch.com/edit/#!/remix/clone-from-repo?REPO_URL=https://github.com/freeCodeCamp/boilerplate-mongomongoose/) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-mongomongoose/) on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! ## Use MongoDB Atlas to host a free mongodb instance for your projects @@ -46,37 +46,36 @@ Once you open the MongoDB Atlas page, you should sign up for a new account. ### Create a new cluster - Go through the steps of building your first cluster by following the instructions they provide and clicking next after each step. - - **Choose your cloud provider and region**, you can leave this as the default provided (typically AWS). - - **Customize your cluster's specs**, you can also leave this as the default provided, `M0 Sandbox (Shared RAM, 512 MB Storage) Encrypted`. - - **Give your cluster a name**, you can also leave this as the default provided, `Cluster 0`. + - **Choose your cloud provider and region**, you can leave this as the default provided (typically AWS). + - **Customize your cluster's specs**, you can also leave this as the default provided, `M0 Sandbox (Shared RAM, 512 MB Storage) Encrypted`. + - **Give your cluster a name**, you can also leave this as the default provided, `Cluster 0`. - Now click the green **Create Cluster** button at the bottom of the screen and verify the image captions they provide. - You should now see the message, `Your cluster is being created - New clusters take between 7-10 minutes to provision.` Wait until the cluster is created before going to the next step. -### Create a new user on the database. +### Create a new user on the database - You should be able to see the green **Get Started** button on the bottom left of your screen, you can click this button to see at which step of the process your are in, if you click on it now, you can see the next step is to **Create your first database user**, go ahead and click on that step. - - Follow the instructions by clicking on the `Security` tab. - - Click on the green **ADD NEW USER** button. - - Enter a user name and password and then select **Read or write to any database** under user privileges, remember to store your username and password somewhere safe. - - Click on the **ADD USER** green button in the bottom right of the modal. + - Follow the instructions by clicking on the `Security` tab. + - Click on the green **ADD NEW USER** button. + - Enter a user name and password and then select **Read or write to any database** under user privileges, remember to store your username and password somewhere safe. + - Click on the **ADD USER** green button in the bottom right of the modal. - Note: You can always upgrade your privileges to the **Admin** level, however, it is best practice to give permissions to a user on an as-needed basis for security reasons. +Note: You can always upgrade your privileges to the **Admin** level, however, it is best practice to give permissions to a user on an as-needed basis for security reasons. ### Whitelist your IP address - If you now click on the green **Get Started** button in the bottom left of your screen, you should see the next step to take highlighted, **Whitelist your IP address**, click on it. - - Follow the instructions by clicking on the `IP Whitelist` tab under the `Security` tab. - - Click on the green **ADD IP ADDRESS** button. - - In the modal, click the **ALLOW ACCESS FROM ANYWHERE** button and you should see `0.0.0.0/0` pre-filled for the whitelist entry field, click the green **Confirm** button. + - Follow the instructions by clicking on the `IP Whitelist` tab under the `Security` tab. + - Click on the green **ADD IP ADDRESS** button. + - In the modal, click the **ALLOW ACCESS FROM ANYWHERE** button and you should see `0.0.0.0/0` pre-filled for the whitelist entry field, click the green **Confirm** button. ### Connect to your cluster - Clicking on the green **Get Started** button in the bottom left of your screen should now show you the final step, **Connect to your cluster**, click on it. - - Follow the instructions by clicking on the `Connect` button in the `Sandbox` section. - - In the pop-up modal, click on **Connect Your Application**, a connection string will be displayed, you can copy that connection string by clicking on the `copy` button. - - This will be the final URI that you will use to connect to your db, it will look something like this `mongodb+srv://:@.mongodb.net/test?retryWrites=true`, notice that the `user` and `cluster#-dbname` fields are already filled out for you, all you would need to replace is the `password` field with the one that you created in the previous step. + - Follow the instructions by clicking on the `Connect` button in the `Sandbox` section. + - In the pop-up modal, click on **Connect Your Application**, a connection string will be displayed, you can copy that connection string by clicking on the `copy` button. + - This will be the final URI that you will use to connect to your db, it will look something like this `mongodb+srv://:@.mongodb.net/test?retryWrites=true`, notice that the `user` and `cluster#-dbname` fields are already filled out for you, all you would need to replace is the `password` field with the one that you created in the previous step. - That's it! You now have the URI you will add to your application to connect to your database. Keep this URI safe somewhere, so you can use it later! - Feel free to create separate databases for different applications if they need a separate database. You just need to create a new project under your current MongoDB Atlas account, build a new cluster, add a new user, whitelist your IP addresses and finally connect to your cluster to obtain the new URI. - diff --git a/client/src/pages/learn/information-security-and-quality-assurance/advanced-node-and-express/index.md b/client/src/pages/learn/information-security-and-quality-assurance/advanced-node-and-express/index.md index 90e17135ca..95c2c9dfd2 100644 --- a/client/src/pages/learn/information-security-and-quality-assurance/advanced-node-and-express/index.md +++ b/client/src/pages/learn/information-security-and-quality-assurance/advanced-node-and-express/index.md @@ -8,4 +8,4 @@ superBlock: Information Security and Quality Assurance *Authentication* is the process or action of verifying the identity of a user or process. Up to this point you have not been able to create an app utilizing this key concept. The most common and easiest to use authentication middleware for Node.js is [Passport](http://passportjs.org/). It is easy to learn, light-weight, and extremely flexible allowing for many *strategies*, which we will talk about in later challenges. In addition to authentication we will also look at template engines which allow for use of *Pug* and web sockets which allow for real time communication between all your clients and your server. Working on these challenges will involve you writing your code on Glitch on our starter project. After completing each challenge you can copy your public glitch url (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using [this link](https://glitch.com/#!/import/github/freeCodeCamp/boilerplate-advancednode/) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-advancednode/) on GitHub! If you use Glitch, remember to save the link to your project somewhere safe. +Start this project on Glitch using [this link](https://glitch.com/edit/#!/remix/clone-from-repo?REPO_URL=https://github.com/freeCodeCamp/boilerplate-advancednode/) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-advancednode/) on GitHub! If you use Glitch, remember to save the link to your project somewhere safe. diff --git a/client/src/pages/learn/information-security-and-quality-assurance/information-security-with-helmetjs/index.md b/client/src/pages/learn/information-security-and-quality-assurance/information-security-with-helmetjs/index.md index 0b092c64b0..59e2060cb2 100644 --- a/client/src/pages/learn/information-security-and-quality-assurance/information-security-with-helmetjs/index.md +++ b/client/src/pages/learn/information-security-and-quality-assurance/information-security-with-helmetjs/index.md @@ -9,4 +9,4 @@ HelmetJS is a type of middleware for Express-based applications that automatical Working on these challenges will involve you writing your code on Glitch on our starter project. After completing each challenge, you can copy your public Glitch url (to the homepage of your app) into the challenge screen to test it! Optionally, you may choose to write your project on another platform, but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! diff --git a/client/src/pages/learn/information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/index.md b/client/src/pages/learn/information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/index.md index 089a9804d0..f9760d0b57 100644 --- a/client/src/pages/learn/information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/index.md +++ b/client/src/pages/learn/information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/index.md @@ -9,4 +9,4 @@ As your programs become more complex, you need to test them often to make sure a Working on these challenges will involve you writing your code on Glitch on our starter project. After completing each challenge you can copy your public glitch url (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using [this link](https://glitch.com/#!/import/github/freeCodeCamp/boilerplate-mochachai/) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-mochachai/) on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! \ No newline at end of file +Start this project on Glitch using [this link](https://glitch.com/edit/#!/remix/clone-from-repo?REPO_URL=https://github.com/freeCodeCamp/boilerplate-mochachai/) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-mochachai/) on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! diff --git a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.english.md b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.english.md index 5499b9951d..b44b6b13ae 100644 --- a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.english.md +++ b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.english.md @@ -10,7 +10,7 @@ forumTopicId: 301505
Build a full stack JavaScript app that is functionally similar to this: https://fuschia-custard.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.english.md b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.english.md index 23190e5d2d..9152bf8f36 100644 --- a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.english.md +++ b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.english.md @@ -10,7 +10,7 @@ forumTopicId: 301506
Build a full stack JavaScript app that is functionally similar to this: https://purple-paladin.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.english.md b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.english.md index f32316ff9b..a3b4781824 100644 --- a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.english.md +++ b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.english.md @@ -10,7 +10,7 @@ forumTopicId: 301507
Build a full stack JavaScript app that is functionally similar to this: https://dandelion-roar.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.english.md b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.english.md index 5ad09bbbca..b4dfa699ed 100644 --- a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.english.md +++ b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.english.md @@ -10,7 +10,7 @@ forumTopicId: 301508
Build a full stack JavaScript app that is functionally similar to this: https://curse-arrow.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.english.md b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.english.md index fedfc3770c..a5e2c737ca 100644 --- a/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.english.md +++ b/curriculum/challenges/english/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.english.md @@ -10,7 +10,7 @@ forumTopicId: 301509
Build a full stack JavaScript app that is functionally similar to this: https://thread-paper.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.english.md b/curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.english.md index 86f3a2e228..32e5c704e5 100644 --- a/curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.english.md +++ b/curriculum/challenges/english/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.english.md @@ -14,7 +14,7 @@ We recommend to keep the log panel open while working at these challenges. By re ## Instructions
-If you have not already done so, please read the instructions in [the introduction](/learn/apis-and-microservices/basic-node-and-express/) and start a new project on Glitch using [this link](https://glitch.com/#!/import/github/freeCodeCamp/boilerplate-express/). +If you have not already done so, please read the instructions in [the introduction](/learn/apis-and-microservices/basic-node-and-express/) and start a new project on Glitch using [this link](https://glitch.com/edit/#!/remix/clone-from-repo?REPO_URL=https://github.com/freeCodeCamp/boilerplate-express/). Modify the myApp.js file to log "Hello World" to the console. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md index 8f548b9d98..ddf1e660f3 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/announce-new-users.english.md @@ -7,10 +7,10 @@ forumTopicId: 301546 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. -Many chat rooms are able to annouce when a user connects or disconnects and then display that to all of the connected users in the chat. Seeing as though you already are emitting an event on connect and disconnect, you will just have to modify this event to support such feature. The most logical way of doing so is sending 3 pieces of data with the event: name of the user connected/disconnected, the current user count, and if that name connected or disconnected. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +Many chat rooms are able to announce when a user connects or disconnects and then display that to all of the connected users in the chat. Seeing as though you already are emitting an event on connect and disconnect, you will just have to modify this event to support such feature. The most logical way of doing so is sending 3 pieces of data with the event: name of the user connected/disconnected, the current user count, and if that name connected or disconnected.
Change the event name to 'user' and as the data pass an object along containing fields 'name', 'currentUsers', and boolean 'connected' (to be true if connection, or false for disconnection of the user sent). Be sure to make the change to both points we had the 'user count' event and set the disconnect one to sent false for field 'connected' instead of true like the event emitted on connect. io.emit('user', {name: socket.request.user.name, currentUsers, connected: true}); -Now your client will have all the necessary information to correctly display the current user count and annouce when a user connects or disconnects! To handle this event on the client side we should listen for 'user' and then update the current user count by using jQuery to change the text of #num-users to '{NUMBER} users online', as well as append a <li> to the unordered list with id 'messages' with '{NAME} has {joined/left} the chat.'. +Now your client will have all the necessary information to correctly display the current user count and announce when a user connects or disconnects! To handle this event on the client side we should listen for 'user' and then update the current user count by using jQuery to change the text of #num-users to '{NUMBER} users online', as well as append a <li> to the unordered list with id 'messages' with '{NAME} has {joined/left} the chat.'. An implementation of this could look like the following:
```js diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-strategies.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-strategies.english.md index 756abf947a..77c11d1959 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-strategies.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-strategies.english.md @@ -7,7 +7,7 @@ forumTopicId: 301547 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. A strategy is a way of authenticating a user. You can use a strategy for allowing users to authenticate based on locally saved information (if you have them register first) or from a variety of providers such as Google or GitHub. For this project we will set up a local strategy. To see a list of the 100's of strategies, visit Passports site here. Add passport-local as a dependency and add it to your server as follows: const LocalStrategy = require('passport-local'); Now you will have to tell passport to use an instantiated LocalStartegy object with a few settings defined. Make sure this as well as everything from this point on is encapsulated in the database connection since it relies on it! diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-with-socket.io.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-with-socket.io.english.md index 48bbb18f4d..68d20cf7c8 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-with-socket.io.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/authentication-with-socket.io.english.md @@ -7,7 +7,7 @@ forumTopicId: 301548 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Currently, you cannot determine who is connected to your web socket. While 'req.user' containers the user object, thats only when your user interacts with the web server and with web sockets you have no req (request) and therefor no user data. One way to solve the problem of knowing who is connected to your web socket is by parsing and decoding the cookie that contains the passport session then deserializing it to obtain the user object. Luckily, there is a package on NPM just for this that turns a once complex task into something simple!
Add 'passport.socketio' as a dependency and require it as 'passportSocketIo'. Now we just have to tell Socket.IO to use it and set the options. Be sure this is added before the existing socket code and not in the existing connection listener. For your server it should look as follows: diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.english.md index 3ae58acfee..4f16e935bd 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.english.md @@ -7,7 +7,7 @@ forumTopicId: 301549 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Right now everything you have is in your server.js file. This can lead to hard to manage code that isn't very expandable. Create 2 new files: Routes.js and Auth.js Both should start with the following code: diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/communicate-by-emitting.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/communicate-by-emitting.english.md index 5c3aed2a5b..bbb8c8ef78 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/communicate-by-emitting.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/communicate-by-emitting.english.md @@ -7,7 +7,7 @@ forumTopicId: 301550 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Emit is the most common way of communicating you will use. When you emit something from the server to 'io', you send an event's name and data to all the connected sockets. A good example of this concept would be emitting the current count of connected users each time a new user connects!
Start by adding a variable to keep track of the users just before where you are currently listening for connections. var currentUsers = 0; Now when someone connects you should increment the count before emitting the count so you will want to add the incrementer within the connection listener. ++currentUsers; diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/create-new-middleware.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/create-new-middleware.english.md index f32207e00d..923b025652 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/create-new-middleware.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/create-new-middleware.english.md @@ -7,7 +7,7 @@ forumTopicId: 301551 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. As in, any user can just go to /profile whether they authenticated or not by typing in the url. We want to prevent this by checking if the user is authenticated first before rendering the profile page. This is the perfect example of when to create a middleware. The challenge here is creating the middleware function ensureAuthenticated(req, res, next), which will check if a user is authenticated by calling passports isAuthenticated on the request which in turn checks for req.user is to be defined. If it is then next() should be called, otherwise we can just respond to the request with a redirect to our homepage to login. An implementation of this middleware is: diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/handle-a-disconnect.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/handle-a-disconnect.english.md index 78006293e3..d4fb624b5d 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/handle-a-disconnect.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/handle-a-disconnect.english.md @@ -7,7 +7,7 @@ forumTopicId: 301552 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. You may notice that up to now you have only been increasing the user count. Handling a user disconnecting is just as easy as handling the initial connect except the difference is you have to listen for it on each socket versus on the whole server.
To do this, add in to your existing connect listener a listener that listens for 'disconnect' on the socket with no data passed through. You can test this functionality by just logging to the console a user has disconnected. socket.on('disconnect', () => { /*anything you want to do on disconnect*/ }); To make sure clients continuously have the updated count of current users, you should decrease the currentUsers by 1 when the disconnect happens then emit the 'user count' event with the updated count! diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md index f0152bc933..afc8826d94 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/hashing-your-passwords.english.md @@ -7,7 +7,7 @@ forumTopicId: 301553 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Going back to the information security section you may remember that storing plaintext passwords is never okay. Now it is time to implement BCrypt to solve this issue.
Add BCrypt as a dependency and require it in your server. You will need to handle hashing in 2 key areas: where you handle registering/saving a new account and when you check to see that a password is correct on login. Currently on our registeration route, you insert a user's password into the database like the following: password: req.body.password. An easy way to implement saving a hash instead is to add the following before your database logic var hash = bcrypt.hashSync(req.body.password, 12); and replacing the req.body.password in the database saving with just password: hash. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.english.md index c787111389..a05ba59bf4 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.english.md @@ -7,7 +7,7 @@ forumTopicId: 301554 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Now that we can ensure the user accessing the /profile is authenticated, we can use the information contained in 'req.user' on our page! Go ahead and pass the object containing the variable username equaling 'req.user.username' into the render method of the profile view. Then go to your 'profile.pug' view and add the line h2.center#welcome Welcome, #{username}! creating the h2 element with the class 'center' and id 'welcome' containing the text 'Welcome, ' and the username! Also in the profile, add a link to /logout. That route will host the logic to unauthenticate a user. a(href='/logout') Logout diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-use-passport-strategies.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-use-passport-strategies.english.md index 9519098f8e..25888b8ea4 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-use-passport-strategies.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/how-to-use-passport-strategies.english.md @@ -7,7 +7,7 @@ forumTopicId: 301555 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. In the index.pug file supplied there is actually a login form. It has previously been hidden because of the inline JavaScript if showLogin with the form indented after it. Before showLogin as a variable was never defined, it never rendered the code block containing the form. Go ahead and on the res.render for that page add a new variable to the object showLogin: true. When you refresh your page, you should then see the form! This form is set up to POST on /login so this is where we should set up to accept the POST and authenticate the user. For this challenge you should add the route /login to accept a POST request. To authenticate on this route you need to add a middleware to do so before then sending a response. This is done by just passing another argument with the middleware before your function(req,res) with your response! The middleware to use is passport.authenticate('local'). passport.authenticate can also take some options as an argument such as: { failureRedirect: '/' } which is incredibly useful so be sure to add that in as well. As a response after using the middleware (which will only be called if the authentication middleware passes) should be to redirect the user to /profile and that route should render the view 'profile.pug'. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.english.md index ce37fbef92..205063b618 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.english.md @@ -7,7 +7,7 @@ forumTopicId: 301556 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Right now we're not loading an actual user object since we haven't set up our database. This can be done many different ways, but for our project we will connect to the database once when we start the server and keep a persistent connection for the full life-cycle of the app. To do this, add MongoDB as a dependency and require it in your server. (const mongo = require('mongodb').MongoClient;) Now we want to the connect to our database then start listening for requests. The purpose of this is to not allow requests before our database is connected or if there is a database error. To accomplish you will want to encompass your serialization and your app listener in the following: diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.english.md index 6f14447904..1e5c4f7ebf 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.english.md @@ -7,7 +7,7 @@ forumTopicId: 301557 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. The last part of setting up your GitHub authentication is to create the strategy itself. For this, you will need to add the dependency of 'passport-github' to your project and require it as GithubStrategy like const GitHubStrategy = require('passport-github').Strategy;. To set up the GitHub strategy, you have to tell passport to use an instantiated GitHubStrategy, which accepts 2 arguments: An object (containing clientID, clientSecret, and callbackURL) and a function to be called when a user is successfully authenticated which we will determine if the user is new and what fields to save initially in the user's database object. This is common across many strategies but some may require more information as outlined in that specific strategy's github README; for example, Google requires a scope as well which determines what kind of information your request is asking returned and asks the user to approve such access. The current strategy we are implementing has its usage outlined here, but we're going through it all right here on freeCodeCamp! Here's how your new strategy should look at this point: diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-iii.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-iii.english.md index 41c361c84f..5fecc78b6c 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-iii.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-iii.english.md @@ -7,7 +7,7 @@ forumTopicId: 301558 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. The final part of the strategy is handling the profile returned from GitHub. We need to load the user's database object if it exists, or create one if it doesn't, and populate the fields from the profile, then return the user's object. GitHub supplies us a unique id within each profile which we can use to search with to serialize the user with (already implemented). Below is an example implementation you can use in your project- it goes within the function that is the second argument for the new strategy, right below the console.log(profile); currently is: ```js diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.english.md index dc08f593fa..05124b0a93 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.english.md @@ -7,7 +7,7 @@ forumTopicId: 301559 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. The basic path this kind of authentication will follow in your app is:
  1. User clicks a button or link sending them to our route to authenticate using a specific strategy (EG. GitHub)
  2. Your route calls passport.authenticate('github') which redirects them to GitHub.
  3. The page the user lands on, on GitHub, allows them to login if they aren't already. It then asks them to approve access to their profile from our app.
  4. The user is then returned to our app at a specific callback url with their profile if they are approved.
  5. They are now authenticated and your app should check if it is a returning profile, or save it in your database if it is not.
Strategies with OAuth require you to have at least a Client ID and a Client Secret which is a way for them to verify who the authentication request is coming from and if it is valid. These are obtained from the site you are trying to implement authentication with, such as GitHub, and are unique to your app- THEY ARE NOT TO BE SHARED and should never be uploaded to a public repository or written directly in your code. A common practice is to put them in your .env file and reference them like: process.env.GITHUB_CLIENT_ID. For this challenge we're going to use the GitHub strategy. Obtaining your Client ID and Secret from GitHub is done in your account profile settings under 'developer settings', then 'OAuth applications'. Click 'Register a new application', name your app, paste in the url to your glitch homepage (Not the project code's url), and lastly for the callback url, paste in the same url as the homepage but with '/auth/github/callback' added on. This is where users will be redirected to for us to handle after authenticating on GitHub. Save the returned information as 'GITHUB_CLIENT_ID' and 'GITHUB_CLIENT_SECRET' in your .env file. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/logging-a-user-out.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/logging-a-user-out.english.md index 45ec7215e8..6ca884ef24 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/logging-a-user-out.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/logging-a-user-out.english.md @@ -7,7 +7,7 @@ forumTopicId: 301560 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Creating the logout logic is easy. The route should just unauthenticate the user and redirect to the home page instead of rendering any view. In passport, unauthenticating a user is as easy as just calling req.logout(); before redirecting. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/registration-of-new-users.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/registration-of-new-users.english.md index eb97df45f7..fce99c0b5a 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/registration-of-new-users.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/registration-of-new-users.english.md @@ -7,7 +7,7 @@ forumTopicId: 301561 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Now we need to allow a new user on our site to register an account. On the res.render for the home page add a new variable to the object passed along- showRegistration: true. When you refresh your page, you should then see the registration form that was already created in your index.pug file! This form is set up to POST on /register so this is where we should set up to accept the POST and create the user object in the database. The logic of the registration route should be as follows: Register the new user > Authenticate the new user > Redirect to /profile The logic of step 1, registering the new user, should be as follows: Query database with a findOne command > if user is returned then it exists and redirect back to home OR if user is undefined and no error occurs then 'insertOne' into the database with the username and password and as long as no errors occur then call next to go to step 2, authenticating the new user, which we've already written the logic for in our POST /login route. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.english.md index 3316f44148..5ff41c15fb 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.english.md @@ -7,7 +7,7 @@ forumTopicId: 301562 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. It's time you start allowing clients to send a chat message to the server to emit to all the clients! Already in your client.js file you should see there is already a block of code handling when the message form is submitted. ($('form').submit(function(){ /*logic*/ });)
Within the form submit code, you should emit an event after you define 'messageToSend' but before you clear the text box #m. The event should be named 'chat message' and the data should just be 'messageToSend'. socket.emit('chat message', messageToSend); Now on your server you should be listening to the socket for the event 'chat message' with the data being named 'message'. Once the event is received it should then emit the event 'chat message' to all sockets io.emit with the data being an object containing 'name' and 'message'. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/serialization-of-a-user-object.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/serialization-of-a-user-object.english.md index d4112d2de9..6f745bcb75 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/serialization-of-a-user-object.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/serialization-of-a-user-object.english.md @@ -7,7 +7,7 @@ forumTopicId: 301563 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Serialization and deserialization are important concepts in regards to authentication. To serialize an object means to convert its contents into a small key essentially that can then be deserialized into the original object. This is what allows us to know whos communicated with the server without having to send the authentication data like username and password at each request for a new page. To set this up properly, we need to have a serialize function and a deserialize function. In passport we create these with passport.serializeUser( OURFUNCTION ) and passport.deserializeUser( OURFUNCTION ) The serializeUser is called with 2 arguments, the full user object and a callback used by passport. Returned in the callback should be a unique key to identify that user- the easiest one to use being the users _id in the object as it should be unique as it generated by MongoDb. Similarly deserializeUser is called with that key and a callback function for passport as well, but this time we have to take that key and return the users full object to the callback. To make a query search for a Mongo _id you will have to create const ObjectID = require('mongodb').ObjectID;, and then to use it you call new ObjectID(THE_ID). Be sure to add MongoDB as a dependency. You can see this in the examples below: diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-a-template-engine.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-a-template-engine.english.md index 695d5fd3d4..9ec09d37f4 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-a-template-engine.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-a-template-engine.english.md @@ -7,7 +7,7 @@ forumTopicId: 301564 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. A template engine enables you to use static template files (such as those written in Pug) in your app. At runtime, the template engine replaces variables in a template file with actual values which can be supplied by your server, and transforms the template into a static HTML file that is then sent to the client. This approach makes it easier to design an HTML page and allows for displaying of variables on the page without needing to make an API call from the client. To set up Pug for use in your project, you will need to add it as a dependency first in your package.json. "pug": "^0.1.0" Now to tell Node/Express to use the templating engine you will have to tell your express app to set 'pug' as the 'view-engine'. app.set('view engine', 'pug') diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md index c21e188d70..34ba825f63 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-passport.english.md @@ -7,7 +7,7 @@ forumTopicId: 301565 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. It's time to set up Passport so we can finally start allowing a user to register or login to an account! In addition to Passport, we will use Express-session to handle sessions. Using this middleware saves the session id as a cookie in the client and allows us to access the session data using that id on the server. This way we keep personal account information out of the cookie used by the client to verify to our server they are authenticated and just keep the key to access the data stored on the server. To set up Passport for use in your project, you will need to add it as a dependency first in your package.json. "passport": "^0.3.2" In addition, add Express-session as a dependency now as well. Express-session has a ton of advanced features you can use but for now we're just going to use the basics! "express-session": "^1.15.0" diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-the-environment.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-the-environment.english.md index ebaaddde22..942dac3813 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-the-environment.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/set-up-the-environment.english.md @@ -7,7 +7,7 @@ forumTopicId: 301566 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Add Socket.IO as a dependency and require/instantiate it in your server defined as 'io' with the http server as an argument. const io = require('socket.io')(http); The first thing needing to be handled is listening for a new connection from the client. The on keyword does just that- listen for a specific event. It requires 2 arguments: a string containing the title of the event thats emitted, and a function with which the data is passed though. In the case of our connection listener, we use socket to define the data in the second argument. A socket is an individual client who is connected. For listening for connections on our server, add the following between the comments in your project: diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.english.md index 385dbf50f6..40c7d21763 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.english.md @@ -7,7 +7,7 @@ forumTopicId: 301567 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. One of the greatest features of using a template engine is being able to pass variables from the server to the template file before rendering it to HTML. In your Pug file, you're able to use a variable by referencing the variable name as #{variable_name} inline with other text on an element or by using an equal sign on the element without a space such as p=variable_name which assigns the variable's value to the p element's text. We strongly recommend looking at the syntax and structure of Pug here on GitHub's README. Pug is all about using whitespace and tabs to show nested elements and cutting down on the amount of code needed to make a beautiful site. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/anonymous-message-board.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/anonymous-message-board.english.md index 095e9dd52d..1c380bd52d 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/anonymous-message-board.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/anonymous-message-board.english.md @@ -10,7 +10,7 @@ forumTopicId: 301568
Build a full stack JavaScript app that is functionally similar to this: https://horn-celery.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/issue-tracker.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/issue-tracker.english.md index 4df4b45d51..05ba455383 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/issue-tracker.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/issue-tracker.english.md @@ -10,7 +10,7 @@ forumTopicId: 301569
Build a full stack JavaScript app that is functionally similar to this: https://protective-garage.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/metric-imperial-converter.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/metric-imperial-converter.english.md index 9d49c1306c..24974bde52 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/metric-imperial-converter.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/metric-imperial-converter.english.md @@ -10,7 +10,7 @@ forumTopicId: 301570
Build a full stack JavaScript app that is functionally similar to this: https://hard-twilight.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/personal-library.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/personal-library.english.md index 0ecad8af74..e9038e19d9 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/personal-library.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/personal-library.english.md @@ -10,7 +10,7 @@ forumTopicId: 301571
Build a full stack JavaScript app that is functionally similar to this: https://spark-cathedral.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/stock-price-checker.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/stock-price-checker.english.md index 0e643e0f98..c2dabd8d70 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/stock-price-checker.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-and-quality-assurance-projects/stock-price-checker.english.md @@ -10,7 +10,7 @@ forumTopicId: 301572
Build a full stack JavaScript app that is functionally similar to this: https://giant-chronometer.glitch.me/. Working on this project will involve you writing your code on Glitch on our starter project. After completing this project you can copy your public glitch url (to the homepage of your app) into this screen to test it! Optionally you may choose to write your project on another platform but must be publicly visible for our testing. -Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe! +Start this project on Glitch using this link or clone this repository on GitHub! If you use Glitch, remember to save the link to your project somewhere safe!
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.english.md index f66674d042..a5506fdc25 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/ask-browsers-to-access-your-site-via-https-only-with-helmet.hsts.english.md @@ -7,7 +7,7 @@ forumTopicId: 301573 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. HTTP Strict Transport Security (HSTS) is a web security policy which helps to protect websites against protocol downgrade attacks and cookie hijacking. If your website can be accessed via HTTPS you can ask user’s browsers to avoid using insecure HTTP. By setting the header Strict-Transport-Security, you tell the browsers to use HTTPS for the future requests in a specified amount of time. This will work for the requests coming after the initial request.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.english.md index e63bb83f2e..5bd0846e8e 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/avoid-inferring-the-response-mime-type-with-helmet.nosniff.english.md @@ -7,7 +7,7 @@ forumTopicId: 301574 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Browsers can use content or MIME sniffing to adapt to different datatypes coming from a response. They override the Content-Type headers to guess and process the data. While this can be convenient in some scenarios, it can also lead to some dangerous attacks. This middleware sets the X-Content-Type-Options header to nosniff. This instructs the browser to not bypass the provided Content-Type.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.english.md index f631caa9a5..580dce75da 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/configure-helmet-using-the-parent-helmet-middleware.english.md @@ -7,7 +7,7 @@ forumTopicId: 301575 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. app.use(helmet()) will automatically include all the middleware introduced above, except noCache(), and contentSecurityPolicy(), but these can be enabled if necessary. You can also disable or configure any other middleware individually, using a configuration object.

Example:

diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.english.md index 25f9b77497..935e2a508d 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-client-side-caching-with-helmet.nocache.english.md @@ -7,7 +7,7 @@ forumTopicId: 301576 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. If you are releasing an update for your website, and you want the users to always download the newer version, you can (try to) disable caching on client’s browser. It can be useful in development too. Caching has performance benefits, which you will lose, so only use this option when there is a real need.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.english.md index 87929b1fda..6acc3094b6 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/disable-dns-prefetching-with-helmet.dnsprefetchcontrol.english.md @@ -7,7 +7,7 @@ forumTopicId: 301577 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. To improve performance, most browsers prefetch DNS records for the links in a page. In that way the destination ip is already known when the user clicks on a link. This may lead to over-use of the DNS service (if you own a big website, visited by millions people…), privacy issues (one eavesdropper could infer that you are on a certain page), or page statistics alteration (some links may appear visited even if they are not). If you have high security needs you can disable DNS prefetching, at the cost of a performance penalty.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.english.md index fa005f1e01..38733e8537 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-asynchronously.english.md @@ -7,8 +7,8 @@ forumTopicId: 301578 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. -As hashing is designed to be computationally intensive, it is recommended to do so asyncronously on your server as to avoid blocking incoming connections while you hash. All you have to do to hash a password asynchronous is call +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As hashing is designed to be computationally intensive, it is recommended to do so asynchronously on your server as to avoid blocking incoming connections while you hash. All you have to do to hash a password asynchronous is call ```js bcrypt.hash(myPlaintextPassword, saltRounds, (err, hash) => { diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.english.md index 48f6ebc292..741eebdc8f 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hash-and-compare-passwords-synchronously.english.md @@ -7,7 +7,7 @@ forumTopicId: 301579 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Hashing synchronously is just as easy to do but can cause lag if using it server side with a high cost or with hashing done very often. Hashing with this method is as easy as calling ```js diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.english.md index 8f972d419c..6b9230acac 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/hide-potentially-dangerous-information-using-helmet.hidepoweredby.english.md @@ -7,7 +7,7 @@ forumTopicId: 301580 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Hackers can exploit known vulnerabilities in Express/Node if they see that your site is powered by Express. X-Powered-By: Express is sent in every request coming from Express by default. The helmet.hidePoweredBy() middleware will remove the X-Powered-By header. You can also explicitly set the header to something else, to throw people off. e.g. app.use(helmet.hidePoweredBy({ setTo: 'PHP 4.2.0' }))
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/install-and-require-helmet.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/install-and-require-helmet.english.md index 77cbb78a52..d74301ae5a 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/install-and-require-helmet.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/install-and-require-helmet.english.md @@ -7,7 +7,7 @@ forumTopicId: 301581 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Helmet helps you secure your Express apps by setting various HTTP headers.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.english.md index cd946b0aa9..3b249f768e 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-clickjacking-with-helmet.frameguard.english.md @@ -7,7 +7,7 @@ forumTopicId: 301582 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Your page could be put in a <frame> or <iframe> without your consent. This can result in clickjacking attacks, among other things. Clickjacking is a technique of tricking a user into interacting with a page different from what the user thinks it is. This can be obtained executing your page in a malicious context, by mean of iframing. In that context a hacker can put a hidden layer over your page. Hidden buttons can be used to run bad scripts. This middleware sets the X-Frame-Options header. It restricts who can put your site in a frame. It has three modes: DENY, SAMEORIGIN, and ALLOW-FROM. We don’t need our app to be framed.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-cross-site-scripting-xss-attacks-with-helmet.xssfilter.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-cross-site-scripting-xss-attacks-with-helmet.xssfilter.english.md index cb6a1847b8..42635d7435 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-cross-site-scripting-xss-attacks-with-helmet.xssfilter.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/mitigate-the-risk-of-cross-site-scripting-xss-attacks-with-helmet.xssfilter.english.md @@ -7,7 +7,7 @@ forumTopicId: 301583 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Cross-site scripting (XSS) is a frequent type of attack where malicious scripts are injected into vulnerable pages, with the purpose of stealing sensitive data like session cookies, or passwords. The basic rule to lower the risk of an XSS attack is simple: “Never trust user’s input”. As a developer you should always sanitize all the input coming from the outside. This includes data coming from forms, GET query urls, and even from POST bodies. Sanitizing means that you should find and encode the characters that may be dangerous e.g. <, >. Modern browsers can help mitigating the risk by adopting better software strategies. Often these are configurable via http headers. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/prevent-ie-from-opening-untrusted-html-with-helmet.ienoopen.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/prevent-ie-from-opening-untrusted-html-with-helmet.ienoopen.english.md index aeb9774741..387729d1ff 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/prevent-ie-from-opening-untrusted-html-with-helmet.ienoopen.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/prevent-ie-from-opening-untrusted-html-with-helmet.ienoopen.english.md @@ -7,7 +7,7 @@ forumTopicId: 301584 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. Some web applications will serve untrusted HTML for download. Some versions of Internet Explorer by default open those HTML files in the context of your site. This means that an untrusted HTML page could start doing bad things in the context of your pages. This middleware sets the X-Download-Options header to noopen. This will prevent IE users from executing downloads in the trusted site’s context.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/set-a-content-security-policy-with-helmet.contentsecuritypolicy.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/set-a-content-security-policy-with-helmet.contentsecuritypolicy.english.md index aae70c71b2..0bbaca79f8 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/set-a-content-security-policy-with-helmet.contentsecuritypolicy.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/set-a-content-security-policy-with-helmet.contentsecuritypolicy.english.md @@ -7,7 +7,7 @@ forumTopicId: 301585 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. This challenge highlights one promising new defense that can significantly reduce the risk and impact of many type of attacks in modern browsers. By setting and configuring a Content Security Policy you can prevent the injection of anything unintended into your page. This will protect your app from XSS vulnerabilities, undesired tracking, malicious frames, and much more. CSP works by defining a whitelist of content sources which are trusted. You can configure them for each kind of resource a web page may need (scripts, stylesheets, fonts, frames, media, and so on…). There are multiple directives available, so a website owner can have a granular control. See HTML 5 Rocks, KeyCDN for more details. Unfortunately CSP is unsupported by older browser. By default, directives are wide open, so it’s important to set the defaultSrc directive as a fallback. Helmet supports both defaultSrc and default-src naming styles. The fallback applies for most of the unspecified directives.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/understand-bcrypt-hashes.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/understand-bcrypt-hashes.english.md index 62ffbbcc56..48f30b71cf 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/understand-bcrypt-hashes.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/information-security-with-helmetjs/understand-bcrypt-hashes.english.md @@ -7,7 +7,7 @@ forumTopicId: 301586 ## Description
-For the following challenges, you will be working with a new starter project that is different from earlier challenges. This project is being built upon the following starter project on Glitch, or cloned from GitHub. +For the following challenges, you will be working with a new starter project that is different from earlier challenges. This project is being built upon the following starter project on Glitch, or cloned from GitHub. BCrypt hashes are very secure. A hash is basically a fingerprint of the original data- always unique. This is accomplished by feeding the original data into an algorithm and returning a fixed length result. To further complicate this process and make it more secure, you can also salt your hash. Salting your hash involves adding random data to the original data before the hashing process which makes it even harder to crack the hash. BCrypt hashes will always looks like $2a$13$ZyprE5MRw2Q3WpNOGZWGbeG7ADUre1Q8QO.uUUtcbqloU0yvzavOm which does have a structure. The first small bit of data $2a is defining what kind of hash algorithm was used. The next portion $13 defines the cost. Cost is about how much power it takes to compute the hash. It is on a logarithmic scale of 2^cost and determines how many times the data is put through the hashing algorithm. For example, at a cost of 10 you are able to hash 10 passwords a second on an average computer, however at a cost of 15 it takes 3 seconds per hash... and to take it further, at a cost of 31 it would takes multiple days to complete a hash. A cost of 12 is considered very secure at this time. The last portion of your hash $ZyprE5MRw2Q3WpNOGZWGbeG7ADUre1Q8QO.uUUtcbqloU0yvzavOm, looks like one large string of numbers, periods, and letters but it is actually two separate pieces of information. The first 22 characters is the salt in plain text, and the rest is the hashed password!
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.english.md index c220a3318c..5ebfc100f7 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.english.md @@ -7,7 +7,7 @@ forumTopicId: 301587 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. deepEqual() asserts that two object are deep equal.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.english.md index 0c6304a109..899b034044 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.english.md @@ -7,7 +7,7 @@ forumTopicId: 301588 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.english.md index 19df7eac9d..b7948d3f7f 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.english.md @@ -7,7 +7,7 @@ forumTopicId: 301589 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.english.md index 26f59db31e..546c680a5e 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.english.md @@ -7,7 +7,7 @@ forumTopicId: 301590 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. In the next example we'll see how to send data in a request payload (body). We are going to test a PUT request. The '/travellers' endpoint accepts a JSON object taking the structure : diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.english.md index 295b2ee4ee..73933ecc20 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.english.md @@ -7,7 +7,7 @@ forumTopicId: 301591 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. This exercise is similar to the preceding. Look at it for the details.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.english.md index cd8c908c4a..bb34b94642 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.english.md @@ -7,7 +7,7 @@ forumTopicId: 301592 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.english.md index fe0ae250fc..ac1813c23e 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.english.md @@ -7,7 +7,7 @@ forumTopicId: 301593 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.english.md index 7027f85de3..2503960959 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.english.md @@ -7,7 +7,7 @@ forumTopicId: 301594 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.english.md index 38bbae48be..c722d03310 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.english.md @@ -7,7 +7,7 @@ forumTopicId: 301595 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. In the next challenges we are going to simulate the human interaction with a page using a device called 'Headless Browser'. A headless browser is a web browser without a graphical user interface. These kind of tools are particularly useful for testing web pages as they are able to render and understand HTML, CSS, and JavaScript the same way a browser would. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.english.md index b506153ef5..d21e5285d0 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.english.md @@ -7,7 +7,7 @@ forumTopicId: 301596 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. isTrue() will test for the boolean value true and isNotTrue() will pass when given anything but the boolean value of true. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.english.md index 1c6e65261e..3249ba022c 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.english.md @@ -7,7 +7,7 @@ forumTopicId: 301597 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. include() and notInclude() work for strings too! include() asserts that the actual string contains the expected substring. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.english.md index 25e6a5e22a..fcca6935ef 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.english.md @@ -7,7 +7,7 @@ forumTopicId: 301598 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. .approximately(actual, expected, delta, [message]) Asserts that the actual is equal expected, to within a +/- delta range. diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.english.md index 60db695031..0f578189e2 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.english.md @@ -7,7 +7,7 @@ forumTopicId: 301599 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. isString or isNotString asserts that the actual value is a string.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.english.md index 0fe85a7380..fa3b28d2f2 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.english.md @@ -7,7 +7,7 @@ forumTopicId: 301600 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.english.md index 7a82af237c..64d8419651 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.english.md @@ -7,7 +7,7 @@ forumTopicId: 301601 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. #typeOf asserts that value’s type is the given string, as determined by Object.prototype.toString.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.english.md index 6b6e6e9ee8..dcd5a72969 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.english.md @@ -7,7 +7,7 @@ forumTopicId: 301602 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.english.md index 8f1206a4a1..e3c9ea953e 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.english.md @@ -7,7 +7,7 @@ forumTopicId: 301603 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.english.md index b5191d9558..e9284d0b28 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.english.md @@ -7,7 +7,7 @@ forumTopicId: 301604 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. #property asserts that the actual object has a given property.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.english.md index 04a67d3662..503528e935 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.english.md @@ -7,7 +7,7 @@ forumTopicId: 301605 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. #instanceOf asserts that an object is an instance of a constructor.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.english.md index 74db02fa54..afeecb480f 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.english.md @@ -7,7 +7,7 @@ forumTopicId: 301606 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub.
## Instructions diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md index 898c293c49..2168e18cd2 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.english.md @@ -8,7 +8,7 @@ forumTopicId: 301607 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. isOk() will test for a truthy value and isNotOk() will test for a falsy value. [Truthy reference](https://developer.mozilla.org/en-US/docs/Glossary/Truthy) diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.english.md index 3ddb9e1b1b..25ca735cd1 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.english.md @@ -7,7 +7,7 @@ forumTopicId: 301608 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. match() asserts that the actual value matches the second argument regular expression.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.english.md index c1d8b4fd27..e4e21569ed 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.english.md @@ -7,7 +7,7 @@ forumTopicId: 301609 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. equal() compares objects using ==.
diff --git a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.english.md b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.english.md index b61e3f291b..6f9ba8348f 100644 --- a/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.english.md +++ b/curriculum/challenges/english/06-information-security-and-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.english.md @@ -7,7 +7,7 @@ forumTopicId: 301610 ## Description
-As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. +As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. strictEqual() compares objects using ===.