Advanced Node and Express - Create New Middleware - Does not pass

Hello,

I have no idea why test does not pass, I am successfully redirected while not authenticated by Passport, and I am still getting the test “A Get request to /profile should correctly redirect to / since we are not authenticated.” to not pass.
I have tried:
return res.redirect(301, ‘/’);
res.redirect(301, ‘/’);
res.redirect(’/’);
res.redirect(‘back’);
res.redirect(process.cwd() + ‘/’);

My code follows:

"use strict";

const express = require("express");
const bodyParser = require("body-parser");
const fccTesting = require("./freeCodeCamp/fcctesting.js");
const passport = require("passport");
const session = require("express-session");
const mongo = require("mongodb").MongoClient;
const ObjectID = require("mongodb").ObjectID;
const LocalStrategy = require("passport-local");

const app = express();
app.set("view engine", "pug");

fccTesting(app); //For FCC testing purposes
app.use("/public", express.static(process.cwd() + "/public"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(
  session({
    secret: process.env.SESSION_SECRET,
    resave: true,
    saveUninitialized: true
  })
);
app.use(passport.initialize());
app.use(passport.session());

mongo.connect(process.env.DATABASE, (err, db) => {
  if (err) console.log("Database connection ERROR");
  else {
    console.log("Database connection SUCCESSFUL");

    passport.serializeUser((user, done) => {
      done(null, user._id);
    });

    passport.deserializeUser((id, done) => {
      db.db()
        .collection("users")
        .findOne(
          {
            _id: new ObjectID(id)
          },
          (err, doc) => {
            done(null, doc);
          }
        );
    });
    passport.use(
      new LocalStrategy(function(username, password, done) {
        db.db()
          .collection("users")
          .findOne({ username: username }, function(err, user) {
            console.log("User " + username + " attempted to log in.");
            if (err) {
              return done(err);
            }
            if (!user) {
              return done(null, false);
            }
            if (password !== user.password) {
              return done(null, false);
            }
            return done(null, user);
          });
      })
    );

    app.get("/", (req, res) => {
      // res.render('./pug/index', {title: 'Puggy', message: 'Go Pug, go'});
      console.log("Redirected to here..");
      res.render(process.cwd() + "/views/pug/index", {
        title: "Hello",
        message: "Please login",
        showLogin: true
      });
    });
    
    app.post(
      "/login",
      passport.authenticate("local", { failureRedirect: "/" }),
      (req, res) => {
        res.redirect("/profile");
      }
    );

    app.get(
      "/profile",
      function ensureAuthenticated(req, res, next) {
        if (req.isAuthenticated()) {
          return next();
        }
        return res.redirect(301, '/');
      },
      (req, res) => {
        res.render(process.cwd() + "/views/pug/profile");
      }
    );

    app.listen(process.env.PORT || 3000, () => {
      console.log("Listening on port " + process.env.PORT);
    });
  }
});

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36.

Challenge: Advanced Node and Express - Create New Middleware

Link to the challenge:
https://www.freecodecamp.org/learn/information-security-and-quality-assurance/advanced-node-and-express/create-new-middleware

Not too obvious, but I should have search forums a bit better. It was resolved here:

Index page should be “Home page” and that solves everything. Weird, but that is the answer. I also skipped to:
Logging a User Out section and my problem persisted.
All good now.

1 Like