Removed debug option and added logger level
							parent
							
								
									af59febbb5
								
							
						
					
					
						commit
						62408c55b8
					
				
							
								
								
									
										14
									
								
								app/index.js
								
								
								
								
							
							
						
						
									
										14
									
								
								app/index.js
								
								
								
								
							| 
						 | 
					@ -21,23 +21,19 @@ module.exports.UserData = UserData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//#region Export properties
 | 
					//#region Export properties
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Shows log messages and other useful functions for module debugging.
 | 
					 * @public
 | 
				
			||||||
 * @param {Boolean} value
 | 
					 * Set the logger level for module debugging.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* istambul ignore next */
 | 
					/* istambul ignore next */
 | 
				
			||||||
module.exports.debug = function (value) {
 | 
					module.exports.loggerLevel = shared.logger.level;
 | 
				
			||||||
    shared.debug = value;
 | 
					exports.loggerLevel = "warn"; // By default log only the warn messages
 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Configure logger
 | 
					 | 
				
			||||||
    shared.logger.level = value ? "trace" : "warn";
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @public
 | 
					 * @public
 | 
				
			||||||
 * Indicates whether a user is logged in to the F95Zone platform or not.
 | 
					 * Indicates whether a user is logged in to the F95Zone platform or not.
 | 
				
			||||||
 * @returns {String}
 | 
					 * @returns {String}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* istambul ignore next */
 | 
					/* istambul ignore next */
 | 
				
			||||||
module.exports.isLogged = function () {
 | 
					module.exports.isLogged = function isLogged() {
 | 
				
			||||||
    return shared.isLogged;
 | 
					    return shared.isLogged;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
//#endregion Export properties
 | 
					//#endregion Export properties
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,11 +9,6 @@ const log4js = require("log4js");
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class Shared {
 | 
					class Shared {
 | 
				
			||||||
    //#region Properties
 | 
					    //#region Properties
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Shows log messages and other useful functions for module debugging.
 | 
					 | 
				
			||||||
     * @type Boolean
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    static #_debug = false;
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Indicates whether a user is logged in to the F95Zone platform or not.
 | 
					     * Indicates whether a user is logged in to the F95Zone platform or not.
 | 
				
			||||||
     * @type Boolean
 | 
					     * @type Boolean
 | 
				
			||||||
| 
						 | 
					@ -38,13 +33,6 @@ class Shared {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //#region Getters
 | 
					    //#region Getters
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
   * Shows log messages and other useful functions for module debugging.
 | 
					 | 
				
			||||||
   * @returns {Boolean}
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
    static get debug() {
 | 
					 | 
				
			||||||
        return this.#_debug;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
   * Indicates whether a user is logged in to the F95Zone platform or not.
 | 
					   * Indicates whether a user is logged in to the F95Zone platform or not.
 | 
				
			||||||
   * @returns {Boolean}
 | 
					   * @returns {Boolean}
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -83,10 +71,6 @@ class Shared {
 | 
				
			||||||
        this.#_statuses = val;
 | 
					        this.#_statuses = val;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static set debug(val) {
 | 
					 | 
				
			||||||
        this.#_debug = val;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static set isLogged(val) {
 | 
					    static set isLogged(val) {
 | 
				
			||||||
        this.#_isLogged = val;
 | 
					        this.#_isLogged = val;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,290 +0,0 @@
 | 
				
			||||||
"use strict";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Core modules
 | 
					 | 
				
			||||||
const fs = require("fs");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Public modules from npm
 | 
					 | 
				
			||||||
const _ = require("lodash");
 | 
					 | 
				
			||||||
const expect = require("chai").expect;
 | 
					 | 
				
			||||||
const sleep = require("sleep");
 | 
					 | 
				
			||||||
const dotenv = require("dotenv");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Modules from file
 | 
					 | 
				
			||||||
const urlHelper = require("../app/scripts/url-helper.js");
 | 
					 | 
				
			||||||
const F95API = require("../app/index.js");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Configure the .env reader
 | 
					 | 
				
			||||||
dotenv.config();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const COOKIES_SAVE_PATH = "./f95cache/cookies.json";
 | 
					 | 
				
			||||||
const ENGINES_SAVE_PATH = "./f95cache/engines.json";
 | 
					 | 
				
			||||||
const STATUSES_SAVE_PATH = "./f95cache/statuses.json";
 | 
					 | 
				
			||||||
const USERNAME = process.env.F95_USERNAME;
 | 
					 | 
				
			||||||
const PASSWORD = process.env.F95_PASSWORD;
 | 
					 | 
				
			||||||
const FAKE_USERNAME = "Fake_Username091276";
 | 
					 | 
				
			||||||
const FAKE_PASSWORD = "fake_password";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//F95API.debug(false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function randomSleep() {
 | 
					 | 
				
			||||||
    const random = Math.floor(Math.random() * 500) + 50;
 | 
					 | 
				
			||||||
    sleep.msleep(500 + random);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe("Login without cookies", function () {
 | 
					 | 
				
			||||||
    //#region Set-up
 | 
					 | 
				
			||||||
    this.timeout(30000); // All tests in this suite get 30 seconds before timeout
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    before("Set isolation", function () {
 | 
					 | 
				
			||||||
        F95API.setIsolation(true);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    beforeEach("Remove all cookies", function () {
 | 
					 | 
				
			||||||
    // Runs before each test in this block
 | 
					 | 
				
			||||||
        if (fs.existsSync(COOKIES_SAVE_PATH)) fs.unlinkSync(COOKIES_SAVE_PATH);
 | 
					 | 
				
			||||||
        if (F95API.isLogged()) F95API.logout();
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    //#endregion Set-up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    let testOrder = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Test with valid credentials", async function () {
 | 
					 | 
				
			||||||
    // Gain exclusive use of the cookies
 | 
					 | 
				
			||||||
        while (testOrder !== 0) randomSleep();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const result = await F95API.login(USERNAME, PASSWORD);
 | 
					 | 
				
			||||||
        expect(result.success).to.be.true;
 | 
					 | 
				
			||||||
        expect(result.message).equal("Authentication successful");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        testOrder = 1;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it("Test with invalid username", async function () {
 | 
					 | 
				
			||||||
    // Gain exclusive use of the cookies
 | 
					 | 
				
			||||||
        while (testOrder !== 1) randomSleep();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const result = await F95API.login(FAKE_USERNAME, FAKE_PASSWORD);
 | 
					 | 
				
			||||||
        expect(result.success).to.be.false;
 | 
					 | 
				
			||||||
        expect(result.message).to.equal("Incorrect username");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        testOrder = 2;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it("Test with invalid password", async function () {
 | 
					 | 
				
			||||||
    // Gain exclusive use of the cookies
 | 
					 | 
				
			||||||
        while (testOrder !== 2) randomSleep();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const result = await F95API.login(USERNAME, FAKE_PASSWORD);
 | 
					 | 
				
			||||||
        expect(result.success).to.be.false;
 | 
					 | 
				
			||||||
        expect(result.message).to.equal("Incorrect password");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        testOrder = 3;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it("Test with invalid credentials", async function () {
 | 
					 | 
				
			||||||
    // Gain exclusive use of the cookies
 | 
					 | 
				
			||||||
        while (testOrder !== 3) randomSleep();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const result = await F95API.login(FAKE_USERNAME, FAKE_PASSWORD);
 | 
					 | 
				
			||||||
        expect(result.success).to.be.false;
 | 
					 | 
				
			||||||
        expect(result.message).to.equal("Incorrect username"); // It should first check the username
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        testOrder = 4;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe("Login with cookies", function () {
 | 
					 | 
				
			||||||
    //#region Set-up
 | 
					 | 
				
			||||||
    this.timeout(30000); // All tests in this suite get 30 seconds before timeout
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    before("Log in to create cookies then logout", async function () {
 | 
					 | 
				
			||||||
    // Runs once before the first test in this block
 | 
					 | 
				
			||||||
        if (!fs.existsSync(COOKIES_SAVE_PATH))
 | 
					 | 
				
			||||||
            await F95API.login(USERNAME, PASSWORD); // Download cookies
 | 
					 | 
				
			||||||
        if (F95API.isLogged()) F95API.logout();
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    //#endregion Set-up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Test with valid credentials", async function () {
 | 
					 | 
				
			||||||
        const result = await F95API.login(USERNAME, PASSWORD);
 | 
					 | 
				
			||||||
        expect(result.success).to.be.true;
 | 
					 | 
				
			||||||
        expect(result.message).equal("Logged with cookies");
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe("Load base data without cookies", function () {
 | 
					 | 
				
			||||||
    //#region Set-up
 | 
					 | 
				
			||||||
    this.timeout(30000); // All tests in this suite get 30 seconds before timeout
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    before("Delete cache if exists", function () {
 | 
					 | 
				
			||||||
    // Runs once before the first test in this block
 | 
					 | 
				
			||||||
        if (fs.existsSync(ENGINES_SAVE_PATH)) fs.unlinkSync(ENGINES_SAVE_PATH);
 | 
					 | 
				
			||||||
        if (fs.existsSync(STATUSES_SAVE_PATH)) fs.unlinkSync(STATUSES_SAVE_PATH);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    //#endregion Set-up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("With login", async function () {
 | 
					 | 
				
			||||||
        const loginResult = await F95API.login(USERNAME, PASSWORD);
 | 
					 | 
				
			||||||
        expect(loginResult.success).to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const result = await F95API.loadF95BaseData();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const enginesCacheExists = fs.existsSync(ENGINES_SAVE_PATH);
 | 
					 | 
				
			||||||
        const statusesCacheExists = fs.existsSync(STATUSES_SAVE_PATH);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        expect(result).to.be.true;
 | 
					 | 
				
			||||||
        expect(enginesCacheExists).to.be.true;
 | 
					 | 
				
			||||||
        expect(statusesCacheExists).to.be.true;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Without login", async function () {
 | 
					 | 
				
			||||||
        if (F95API.isLogged()) F95API.logout();
 | 
					 | 
				
			||||||
        const result = await F95API.loadF95BaseData();
 | 
					 | 
				
			||||||
        expect(result).to.be.false;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe("Search game data", function () {
 | 
					 | 
				
			||||||
    //#region Set-up
 | 
					 | 
				
			||||||
    this.timeout(60000); // All tests in this suite get 60 seconds before timeout
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    beforeEach("Prepare API", function () {
 | 
					 | 
				
			||||||
    // Runs once before the first test in this block
 | 
					 | 
				
			||||||
        if (F95API.isLogged()) F95API.logout();
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    //#endregion Set-up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    let testGame = null;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Search game when logged", async function () {
 | 
					 | 
				
			||||||
        const loginResult = await F95API.login(USERNAME, PASSWORD);
 | 
					 | 
				
			||||||
        expect(loginResult.success).to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const loadResult = await F95API.loadF95BaseData();
 | 
					 | 
				
			||||||
        expect(loadResult).to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // This test depend on the data on F95Zone at
 | 
					 | 
				
			||||||
        // https://f95zone.to/threads/kingdom-of-deception-v0-10-8-hreinn-games.2733/
 | 
					 | 
				
			||||||
        const gamesList = await F95API.getGameData("Kingdom of Deception", false);
 | 
					 | 
				
			||||||
        expect(gamesList.length, "Should find only the game").to.equal(1);
 | 
					 | 
				
			||||||
        const result = gamesList[0];
 | 
					 | 
				
			||||||
        const src = "https://attachments.f95zone.to/2018/09/162821_f9nXfwF.png";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Test only the main information
 | 
					 | 
				
			||||||
        expect(result.name).to.equal("Kingdom of Deception");
 | 
					 | 
				
			||||||
        expect(result.author).to.equal("Hreinn Games");
 | 
					 | 
				
			||||||
        expect(result.isMod, "Should be false").to.be.false;
 | 
					 | 
				
			||||||
        expect(result.engine).to.equal("REN'PY");
 | 
					 | 
				
			||||||
        expect(result.previewSource).to.equal(src); // Could be null -> Why sometimes doesn't get the image?
 | 
					 | 
				
			||||||
        testGame = Object.assign({}, result);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it("Search game when not logged", async function () {
 | 
					 | 
				
			||||||
        const result = await F95API.getGameData("Kingdom of Deception", false);
 | 
					 | 
				
			||||||
        expect(result, "Without being logged should return null").to.be.null;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it("Test game serialization", function () {
 | 
					 | 
				
			||||||
        const json = JSON.stringify(testGame);
 | 
					 | 
				
			||||||
        const parsedGameInfo = JSON.parse(json);
 | 
					 | 
				
			||||||
        const result = _.isEqual(parsedGameInfo, testGame);
 | 
					 | 
				
			||||||
        expect(result).to.be.true;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe("Load user data", function () {
 | 
					 | 
				
			||||||
    //#region Set-up
 | 
					 | 
				
			||||||
    this.timeout(30000); // All tests in this suite get 30 seconds before timeout
 | 
					 | 
				
			||||||
    //#endregion Set-up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Retrieve when logged", async function () {
 | 
					 | 
				
			||||||
    // Login
 | 
					 | 
				
			||||||
        await F95API.login(USERNAME, PASSWORD);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Then retrieve user data
 | 
					 | 
				
			||||||
        const data = await F95API.getUserData();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        expect(data).to.exist;
 | 
					 | 
				
			||||||
        expect(data.username).to.equal(USERNAME);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    it("Retrieve when not logged", async function () {
 | 
					 | 
				
			||||||
    // Logout
 | 
					 | 
				
			||||||
        if (F95API.isLogged()) F95API.logout();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Try to retrieve user data
 | 
					 | 
				
			||||||
        const data = await F95API.getUserData();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        expect(data).to.be.null;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe("Check game update", function () {
 | 
					 | 
				
			||||||
    //#region Set-up
 | 
					 | 
				
			||||||
    this.timeout(30000); // All tests in this suite get 30 seconds before timeout
 | 
					 | 
				
			||||||
    //#endregion Set-up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Get online game and verify that no update exists", async function () {
 | 
					 | 
				
			||||||
        const loginResult = await F95API.login(USERNAME, PASSWORD);
 | 
					 | 
				
			||||||
        expect(loginResult.success).to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const loadResult = await F95API.loadF95BaseData();
 | 
					 | 
				
			||||||
        expect(loadResult).to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // This test depend on the data on F95Zone at
 | 
					 | 
				
			||||||
        // https://f95zone.to/threads/kingdom-of-deception-v0-10-8-hreinn-games.2733/
 | 
					 | 
				
			||||||
        const result = (await F95API.getGameData("Kingdom of Deception", false))[0];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const update = await F95API.chekIfGameHasUpdate(result);
 | 
					 | 
				
			||||||
        expect(update).to.be.false;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Verify that update exists from old URL", async function () {
 | 
					 | 
				
			||||||
        const loginResult = await F95API.login(USERNAME, PASSWORD);
 | 
					 | 
				
			||||||
        expect(loginResult.success).to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // This test depend on the data on F95Zone at
 | 
					 | 
				
			||||||
        // https://f95zone.to/threads/perverted-education-v0-9701-april-ryan.1854/
 | 
					 | 
				
			||||||
        const url =
 | 
					 | 
				
			||||||
      "https://f95zone.to/threads/perverted-education-v0-9701-april-ryan.1854/";
 | 
					 | 
				
			||||||
        const result = await F95API.getGameDataFromURL(url);
 | 
					 | 
				
			||||||
        result.version = "0.9600";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const update = await F95API.chekIfGameHasUpdate(result);
 | 
					 | 
				
			||||||
        expect(update).to.be.true;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe("Test url-helper", function () {
 | 
					 | 
				
			||||||
    //#region Set-up
 | 
					 | 
				
			||||||
    this.timeout(30000); // All tests in this suite get 30 seconds before timeout
 | 
					 | 
				
			||||||
    //#endregion Set-up
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Check if URL exists", async function () {
 | 
					 | 
				
			||||||
    // Check generic URLs...
 | 
					 | 
				
			||||||
        let exists = await urlHelper.urlExists("https://www.google.com/");
 | 
					 | 
				
			||||||
        expect(exists, "Complete valid URL").to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        exists = await urlHelper.urlExists("www.google.com");
 | 
					 | 
				
			||||||
        expect(exists, "URl without protocol prefix").to.be.false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        exists = await urlHelper.urlExists("https://www.google/");
 | 
					 | 
				
			||||||
        expect(exists, "URL without third level domain").to.be.false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Now check for more specific URLs (with redirect)...
 | 
					 | 
				
			||||||
        exists = await urlHelper.urlExists(
 | 
					 | 
				
			||||||
            "https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/"
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
        expect(exists, "URL with redirect without check").to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        exists = await urlHelper.urlExists(
 | 
					 | 
				
			||||||
            "https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/",
 | 
					 | 
				
			||||||
            true
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
        expect(exists, "URL with redirect with check").to.be.false;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it("Check if URL belong to the platform", async function () {
 | 
					 | 
				
			||||||
        let belong = urlHelper.isF95URL(
 | 
					 | 
				
			||||||
            "https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/"
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
        expect(belong).to.be.true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        belong = urlHelper.isF95URL("https://www.google/");
 | 
					 | 
				
			||||||
        expect(belong).to.be.false;
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue