Mine is not passing the test. Any pointer to what the problem could be?
Please see glitch file here https://magic-sudden-handle.glitch.me
Also here is my server code
"use strict";
const express = require("express");
const session = require("express-session");
const bodyParser = require("body-parser");
const fccTesting = require("./freeCodeCamp/fcctesting.js");
const auth = require("./app/auth.js");
const routes = require("./app/routes.js");
const mongo = require("mongodb").MongoClient;
const passport = require("passport");
const cookieParser = require("cookie-parser");
const app = express();
const http = require("http").Server(app);
const sessionStore = new session.MemoryStore();
const io = require("socket.io")(http);
const cors = require("cors");
const passportSocketIo = require("passport.socketio");
require("dotenv").config();
fccTesting(app); //For FCC testing purposes
app.use(cors());
app.use("/public", express.static(process.cwd() + "/public"));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set("view engine", "pug");
app.use(
session({
secret: process.env.SESSION_SECRET,
resave: true,
saveUninitialized: true,
key: "express.sid",
store: sessionStore
})
);
mongo.connect(process.env.DATABASE, (err, db) => {
if (err) console.log("Database error: " + err);
auth(app, db);
routes(app, db);
http.listen(process.env.PORT || 3000);
//start socket.io code
io.use(
passportSocketIo.authorize({
cookieParser: cookieParser,
key: "express.sid",
secret: process.env.SESSION_SECRET,
store: sessionStore
})
);
io.on("connection", socket => {
var currentUsers = 0;
++currentUsers;
socket.on("user count", function(currentUsers) {
io.emit("user count", {
currentUsers: socket.request.currentUsers
});
});
console.log(currentUsers);
io.emit("user", {
name: socket.request.user.name,
currentUsers,
connected: true
});
socket.on("chat message", function(data) {
io.emit("chat message", {
name: socket.request.user.name,
message: data
});
});
console.log("user " + socket.request.user.name + " connected");
socket.on("disconnect", () => {
currentUsers -= 1;
io.emit("user", {
name: socket.request.user.name,
currentUsers,
connected: false
});
console.log("user " + socket.request.user.name + " disconnected");
});
});
//end socket.io code
});
and t code on fcctesting
'use strict';
const fs = require('fs');
const cors = require('cors');
module.exports = function (app) {
app.use(function (req, res, next) {
const allowedOriginsMatcher = /^https?:\/\/([\w-]+\.)*freecodecamp\.org/;
var origin = req.headers.origin;
if(allowedOriginsMatcher.test(origin)) {
res.setHeader('Access-Control-Allow-Origin', origin);
}
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.route('/_api/server.js')
.get(function(req, res, next) {
console.log('requested');
fs.readFile(process.cwd() + '/server.js', function(err, data) {
if(err) return next(err);
res.send(data.toString());
});
});
app.route('/_api/package.json')
.get(function(req, res, next) {
console.log('requested');
fs.readFile(process.cwd() + '/package.json', function(err, data) {
if(err) return next(err);
res.type('txt').send(data.toString());
});
});
app.get('/_api/app-info', function(req, res) {
var hs = Object.keys(res._headers)
.filter(h => !h.match(/^access-control-\w+/));
var hObj = {};
hs.forEach(h => {hObj[h] = res._headers[h]});
delete res._headers['strict-transport-security'];
res.json({headers: hObj});
});
};