def TEST_purge_Folder(): # Set up exit and config classes for unit testing #_Config.iDebug = _Config.icLevels.AllDebug # All Debug during testing or debugging _Config.iDebug = _Config.icLevels.Success # Success when the test is ready _Config.caColors.Mute() # Tone down error and other console colors sTestName = "TEST_purge_Folder" _Log.dPrint(_Config.icLevels.SomeDebug, sTestName + " Started...") # Blank case _Exit.reset() _wpScan.purge_Folder("") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "blank") # Too short (try to avoid testing root folder case) _Exit.reset() _wpScan.purge_Folder("slash") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "slash") # Long and exists but invalid sLongButInvalid = "012345678901234567890123456789" if not os.path.exists(sLongButInvalid): os.mkdir(sLongButInvalid) _Exit.reset() _wpScan.purge_Folder(sLongButInvalid) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "long but invalid") os.rmdir(sLongButInvalid) # Valid and exists (and make sure it's actually gone) sValid = "Evidence_2016-10-12_08-24-56" if not os.path.exists(sValid): os.mkdir(sValid) if not os.path.exists(os.path.join(sValid, "a")): os.mkdir(os.path.join(sValid, "a")) if not os.path.exists(os.path.join(sValid, "b")): os.mkdir(os.path.join(sValid, "b")) file = open(os.path.join(sValid,"dfile.txt"), 'w') file.write("#delete me") file.close() file = open(os.path.join(os.path.join(sValid, "a"),"cfile.txt"), 'w') file.write("#delete me") file.close() _Exit.reset() _wpScan.purge_Folder(sValid) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "valid - return code") _Exit.DieIfTrue(os.path.exists(sValid), sTestName, "valid - failed to purge") # Valid but does not exist (this is OK) _Exit.reset() _wpScan.purge_Folder(sValid) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "valid but does not exist - return code") _Config.caColors.Unmute() _Log.dPrint(_Config.icLevels.Success, sTestName + " Tested OK!") return
def TEST_parse_Input_File_Into_Array(): # Set up exit and config classes for unit testing #_Config.iDebug = _Config.icLevels.AllDebug # All Debug during testing or debugging _Config.iDebug = _Config.icLevels.Success # Success when the test is ready _Exit.ExitOnExit = False _Config.caColors.Mute() # Tone down error and other console colors sTestName = "TEST_parse_Input_File_Into_Array" _Log.dPrint(_Config.icLevels.SomeDebug, sTestName + " Started...") # Test a good but empty file _Exit.reset() sRealFile = sTestName + '.deleteme' file = open(sRealFile, 'w') file.write("#delete me") file.close() saArr = _wpScan.parse_Input_File_Into_Array(sRealFile) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "good but empty file") _Exit.DieIfNoMatch(len(saArr), 0, sTestName, "good but empty file") os.remove(sRealFile) # Test a good file with 12 lines: 3 blank, 4 comments, 5 URLs _Exit.reset() sRealFile = sTestName + '.deleteme' file = open(sRealFile, 'w') file.write(" \n") # Tabs file.write("# I am a comment\n") file.write("# I am a comment\n") file.write("https:\\\\a.url.com\\1\n") file.write("https:\\\\a.url.com\\2 \n") file.write("# I am a comment\n") file.write(" https:\\\\a.url.com\\3\n") file.write(" https:\\\\a.url.com\\4 \n") file.write("# I am a comment\n") file.write(" https:\\\\a.url.com\\5 \n") # Tabs file.write(" \n") file.write("\n") file.close() saArr = _wpScan.parse_Input_File_Into_Array(sRealFile) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "good file") _Exit.DieIfNoMatch(len(saArr), 5, sTestName, "good file") os.remove(sRealFile) _Config.caColors.Unmute() _Log.dPrint(_Config.icLevels.Success, sTestName + " Tested OK!")
def TEST_validate_Existing_Evidence_Folder(): # Set up exit and config classes for unit testing #_Config.iDebug = _Config.icLevels.AllDebug # All Debug during testing or debugging _Config.iDebug = _Config.icLevels.Success # Success when the test is ready _Exit.ExitOnExit = False _Config.caColors.Mute() # Tone down error and other console colors sTestName = "TEST_validate_Existing_Evidence_Folder" _Log.dPrint(_Config.icLevels.SomeDebug, sTestName + " Started...") _Exit.reset() sTest = _wpScan.validate_Existing_Evidence_Folder("") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "blank") _Exit.reset() sTest = _wpScan.validate_Existing_Evidence_Folder("thisfolderdoesnotexist") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "not there") sFolder = sTestName + "_TestFolder" if not os.path.exists(sFolder): os.mkdir(sFolder) _Exit.reset() sTest = _wpScan.validate_Existing_Evidence_Folder(sFolder) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "valid") os.rmdir(sFolder) _Config.caColors.Unmute() _Log.dPrint(_Config.icLevels.Success, sTestName + " Tested OK!")
def TEST_validate_And_Normalize_DateTime(): # Set up exit and config classes for unit testing #_Config.iDebug = _Config.icLevels.AllDebug # All Debug during testing or debugging _Config.iDebug = _Config.icLevels.Success # Success when the test is ready _Exit.ExitOnExit = False _Config.caColors.Mute() # Tone down error and other console colors sTestName = "TEST_validate_And_Normalize_DateTime" _Log.dPrint(_Config.icLevels.SomeDebug, sTestName + " Started...") # Test blank _Exit.reset() sTest = _wpScan.validate_And_Normalize_DateTime("") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "blank") # Test incomplete _Exit.reset() sTest = _wpScan.validate_And_Normalize_DateTime("201-1-2 4:2:3") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "incomplete") # Test invalid _Exit.reset() sTest = _wpScan.validate_And_Normalize_DateTime("201X-15-14 10-12-32") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "invalid") # Test valid _Exit.reset() sTest = _wpScan.validate_And_Normalize_DateTime("2016-10-12_23-59-59") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "valid 1 - exit code") _Exit.DieIfNoMatch(sTest, "2016-10-12_23-59-59", sTestName, "valid 1 - value") _Exit.reset() sTest = _wpScan.validate_And_Normalize_DateTime("2016:10:12 23:59:59") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "valid 2 - exit code") _Exit.DieIfNoMatch(sTest, "2016-10-12_23-59-59", sTestName, "valid 2 - value") _Config.caColors.Unmute() _Log.dPrint(_Config.icLevels.Success, sTestName + " Tested OK!")
def TEST_validate_Input_File(): # Set up exit and config classes for unit testing #_Config.iDebug = _Config.icLevels.AllDebug # All Debug during testing or debugging _Config.iDebug = _Config.icLevels.Success # Success when the test is ready _Exit.ExitOnExit = False _Config.caColors.Mute() # Tone down error and other console colors sTestName = "TEST_validate_Input_File" _Log.dPrint(_Config.icLevels.SomeDebug, sTestName + " Started...") # Test for blank file _Exit.reset() _wpScan.validate_Input_File("") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "blank file") # Test the reset function _Exit.reset() _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "reset()") # Test a bad file _Exit.reset() _wpScan.validate_Input_File("notthere.does.not.exist") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "bad file") # Test a good file _Exit.reset() sRealFile = '__unittest_wordpress-scan_validate_Input_File.deleteme' file = open(sRealFile, 'w') file.write("delete me") file.close() _wpScan.validate_Input_File(sRealFile) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "good file") os.remove(sRealFile) _Config.caColors.Unmute() _Log.dPrint(_Config.icLevels.Success, sTestName + " Tested OK!")
def TEST_validate_Output_File(): # Set up exit and config classes for unit testing #_Config.iDebug = _Config.icLevels.AllDebug # All Debug during testing or debugging _Config.iDebug = _Config.icLevels.Success # Success when the test is ready _Config.caColors.Mute() # Tone down error and other console colors sTestName = "TEST_validate_Output_File" _Log.dPrint(_Config.icLevels.SomeDebug, sTestName + " Started...") # Test for blank files _Exit.reset() _wpScan.validate_Output_File("", "Test") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "blank file 1") _Exit.reset() _wpScan.validate_Output_File(" ", "Test") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "blank file 2") # Single space _Exit.reset() _wpScan.validate_Output_File(" ", "Test") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "blank file 3") # Tabs # Test for 'None' _Exit.reset() _wpScan.validate_Output_File("None", "Test") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "None file") # Test a missing but valid file _Exit.reset() _wpScan.validate_Output_File("notthere.does.not.exist", "Test") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "missing file") # Test a good file sRealFile = '__unittest_wordpress-scan_validate_Output_File.deleteme' file = open(sRealFile, 'w') file.write("delete me") file.close() _Exit.reset() _wpScan.validate_Output_File(sRealFile, "Test") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "existing file") os.remove(sRealFile) _Config.caColors.Unmute() _Log.dPrint(_Config.icLevels.Success, sTestName + " Tested OK!")
def TEST_create_Folder(): # Set up exit and config classes for unit testing #_Config.iDebug = _Config.icLevels.AllDebug # All Debug during testing or debugging _Config.iDebug = _Config.icLevels.Success # Success when the test is ready _Config.caColors.Mute() # Tone down error and other console colors sTestName = "TEST_create_Folder" _Log.dPrint(_Config.icLevels.SomeDebug, sTestName + " Started...") # Empty folder should die _Exit.reset() _wpScan.create_Folder("") _Exit.DieIfNotTrue(_Exit.LastExitCode_IsError(), sTestName, "empty path") sRootNew = sTestName + "_ROOTNEW" sRootExisting = sTestName + "_ROOTEXISTING" sSubfolderNew = sTestName + "_SUBNEW" sSubfolderExisting = sTestName + "_SUBEXISTING" # Create some folders and check on others if not os.path.exists(sRootExisting): os.mkdir(sRootExisting) if not os.path.exists(os.path.join(sRootExisting, sSubfolderExisting)): os.mkdir(os.path.join(sRootExisting, sSubfolderExisting)) _Exit.DieIfTrue(os.path.exists(sRootNew), sTestName, "Root folder " + sRootNew + " already exists - please delete manually!") _Exit.DieIfTrue(os.path.exists(os.path.join(sRootExisting, sSubfolderNew)), sTestName, "Subfolder folder " + os.path.join(sRootExisting, sSubfolderNew) + " already exists - please delete manually!") # Folder that does not exist _Exit.reset() _wpScan.create_Folder(sRootNew) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "Folder that does not exist - exited app") _Exit.DieIfNotTrue(os.path.exists(sRootNew), sTestName, "Folder that does not exist - failed to create") # Folder that does exist _Exit.reset() _wpScan.create_Folder(sRootExisting) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "Folder that does exist - exited app") _Exit.DieIfNotTrue(os.path.exists(sRootExisting), sTestName, "Folder that does exist - failed to create") # Subfolder that does not exist _Exit.reset() _wpScan.create_Folder(os.path.join(sRootExisting, sSubfolderNew)) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "Subfolder that does not exist - exited app") _Exit.DieIfNotTrue(os.path.exists(os.path.join(sRootExisting, sSubfolderNew)), sTestName, "Subfolder that does not exist - failed to create") # Subfolder that does exist _Exit.reset() _wpScan.create_Folder(os.path.join(sRootExisting, sSubfolderExisting)) _Exit.DieIfNotTrue(_Exit.LastExitCode_IsNotSet(), sTestName, "Subfolder that does exist - exited app") _Exit.DieIfNotTrue(os.path.exists(os.path.join(sRootExisting, sSubfolderExisting)), sTestName, "Subfolder that does exist - failed to create") # Clean up os.rmdir(os.path.join(sRootExisting, sSubfolderExisting)) os.rmdir(os.path.join(sRootExisting, sSubfolderNew)) os.rmdir(sRootExisting) os.rmdir(sRootNew) _Config.caColors.Unmute() _Log.dPrint(_Config.icLevels.Success, sTestName + " Tested OK!") return