Use Express.js to create three (3) routes that consume the API
npm start
npm test
- Fetch data from an API and serve JSON content as response
- Render out data using dynamic template files
- Identify and write useful tests
This will retrieve all dependencies from the package.json
and render HTML using handlebars.
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<ul>
<li>bent - ^7.3.7</li>
<li>express - ^4.17.1</li>
<li>hbs - ^4.1.1</li>
<li>semver - ^7.3.2</li>
</ul>
</body>
</html>
This will return the minimum secure version for each release line as JSON. In other words, what is the highest version of each line that has security: true
.
{
"v0": {
"version": "v0.12.17",
"date": "2016-10-18",
"files": [],
"npm": "2.15.1",
"v8": "3.28.71.19",
"uv": "1.6.1",
"zlib": "1.2.8",
"openssl": "1.0.1u",
"modules": "14",
"lts": false,
"security": true
},
"v4": {
"version": "v4.9.0",
"date": "2018-03-28",
"files": [],
"npm": "2.15.11",
"v8": "4.5.103.53",
"uv": "1.9.1",
"zlib": "1.2.11",
"openssl": "1.0.2o",
"modules": "46",
"lts": "Argon",
"security": true
}
}
This will return the latest release version in each release line as JSON.
{
"v14": {
"version": "v14.7.0",
"date": "2020-07-29",
"files": [],
"npm": "6.14.7",
"v8": "8.4.371.19",
"uv": "1.38.1",
"zlib": "1.2.11",
"openssl": "1.1.1g",
"modules": "83",
"lts": false,
"security": false
},
"v13": {
"version": "v13.14.0",
"date": "2020-04-28",
"files": [],
"npm": "6.14.4",
"v8": "7.9.317.25",
"uv": "1.37.0",
"zlib": "1.2.11",
"openssl": "1.1.1g",
"modules": "79",
"lts": false,
"security": false
}
}
Each of the above endpoints should have its own tests. Use the provided test/index.js
file to get started and see below for example output.
- Write tests using
tape
- Mock http requests during tests by using
nock
to prevent live requests
# should get dependencies
ok 1 should contain bent
ok 2 should contain express
ok 3 should contain hbs
ok 4 should contain semver
# should get minimum secure versions
ok 5 v14 version should match
ok 6 v13 version should match
# should get latest-releases
ok 7 v14 version should match
ok 8 v13 version should match
Name | Description |
---|---|
bent | Functional HTTP client for Node.js and Browsers with async/await. |
express | Fast, unopinionated, minimalist web framework for node. |
hbs | Express.js view engine for handlebars.js |
semver | The semantic versioner for npm |
Name | Description |
---|---|
get-port | Get an available TCP port |
nock | HTTP server mocking and expectations library for Node.js |
tape | tap-producing test harness for node and browsers |