diff --git a/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift b/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift index bfe4779c689e28e83678bc8d4198f6ce9cc62158..e12f53778674ec1e14bdff10267b27cca5ce5661 100644 --- a/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift +++ b/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift @@ -1,141 +1,155 @@ - // - // EmailAdressTests.swift - // enzevalos_iphoneTests - // - // Created by Katharina Müller on 17.03.20. - // Copyright © 2020 fu-berlin. All rights reserved. - // - import XCTest - @testable import enzevalos_iphone +// +// EmailAdressTests.swift +// enzevalos_iphoneTests +// +// Created by Katharina Müller on 17.03.20. +// Copyright © 2020 fu-berlin. All rights reserved. +// +import XCTest +@testable import enzevalos_iphone - class EmailStringExtensionTests: XCTestCase { +class EmailStringExtensionTests: XCTestCase { - override func setUp() { - // Put setup code here. This method is called before the invocation of each test method in the class. - } + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + } - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - // General TestText for all (needs to simulate a body of text from which to extract specific Strings - var TestText = "blabla moep jkjlkj lkjkljknmbjks llhil k. jhkhkih. huhuhj! fsdf bob.alice@zedat.fu-berlin.de dfsf. jhjknjknjkh https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240 hjkhjkhkhn www.google.de kljhl@hjkghgkhj.com nljbjkjk.de url tag html mail <a href='https://www.w3schools.com'>Visit W3Schools</a> hjhkhiuhziu kjhkl <a href=\"https://www.w2schools.com\">Visit W2Schools</a>. lknljnlk. kmm /n lmölmpöl < a href=\"https://www.w8schools.com\">Visit W8Schools</a> gfg fghfghnhg <a href=\"https://www.w33schools.com\">Visit W33Schools</a> nkjhjkhkjn,mn jnmnklmj j <a href=\"https://www.w22schools.com\">Visit W22Schools</ a> hghjcfgh hfgchnvhj vgjcgj cjghcj <a href=\"https://www.w99schools.com\">Visit W99Schools</a > 你好@yahoo.com eewfve test@莎士比亚.org 你好@莎士比亚.org Rδοκιμή@παράδειγμα.δοκιμή or 管理员@中国互联网络信息中心.中国 你好45@yahoo.com" + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + // General TestText for all (needs to simulate a body of text from which to extract specific Strings + var TestText = "blabla moep jkjlkj lkjkljknmbjks llhil k. jhkhkih. huhuhj! fsdf bob.alice@zedat.fu-berlin.de dfsf. jhjknjknjkh https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240 hjkhjkhkhn www.google.de kljhl@hjkghgkhj.com nljbjkjk.de url tag html mail <a href='https://www.w3schools.com'>Visit W3Schools</a> hjhkhiuhziu kjhkl <a href=\"https://www.w2schools.com\">Visit W2Schools</a>. lknljnlk. kmm /n lmölmpöl < a href=\"https://www.w8schools.com\">Visit W8Schools</a> gfg fghfghnhg <a href=\"https://www.w33schools.com\">Visit W33Schools</a> nkjhjkhkjn,mn jnmnklmj j <a href=\"https://www.w22schools.com\">Visit W22Schools</ a> hghjcfgh hfgchnvhj vgjcgj cjghcj <a href=\"https://www.w99schools.com\">Visit W99Schools</a > 你好@yahoo.com eewfve test@莎士比亚.org 你好@莎士比亚.org Rδοκιμή@παράδειγμα.δοκιμή or 管理员@中国互联网络信息中心.中国 你好45@yahoo.com" - // setup for find mail address in text - var finalMailAddresses = ["bob.alice@zedat.fu-berlin.de", - "kljhl@hjkghgkhj.com", - "你好@yahoo.com", - "test@莎士比亚.org", - "你好@莎士比亚.org", - "Rδοκιμή@παράδειγμα.δοκιμή", - "管理员@中国互联网络信息中心.中国", - "你好45@yahoo.com"] + // setup for find mail address in text + var finalMailAddresses = ["bob.alice@zedat.fu-berlin.de", + "kljhl@hjkghgkhj.com", + "你好@yahoo.com", + "test@莎士比亚.org", + "你好@莎士比亚.org", + "Rδοκιμή@παράδειγμα.δοκιμή", + "管理员@中国互联网络信息中心.中国", + "你好45@yahoo.com"] - func testFindEmails(){ - let arr = TestText.findEmails() - XCTAssertNotNil(arr) - XCTAssertEqual(arr[0], finalMailAddresses[0]) - XCTAssertEqual(arr[1], finalMailAddresses[1]) - XCTAssertEqual(arr[2], finalMailAddresses[2]) - XCTAssertEqual(arr[3], finalMailAddresses[3]) - XCTAssertEqual(arr[4], finalMailAddresses[4]) - XCTAssertEqual(arr[5], finalMailAddresses[5]) - XCTAssertEqual(arr[6], finalMailAddresses[6]) - XCTAssertEqual(arr[7], finalMailAddresses[7]) - } - - // setup email validation - var validEmails = ["alice.bob@moep.blubb.de", - "test@google.com", - "test@google.co.uk", - "你好@yahoo.com", - "test@莎士比亚.org", - "你好@莎士比亚.org", - "Rδοκιμή@παράδειγμα.δοκιμή", - "管理员@中国互联网络信息中心.中国", - "你好45@yahoo.com"] + func testFindEmails(){ + let arr = TestText.findEmails() + XCTAssertNotNil(arr) + XCTAssertEqual(arr[0], finalMailAddresses[0]) + XCTAssertEqual(arr[1], finalMailAddresses[1]) + XCTAssertEqual(arr[2], finalMailAddresses[2]) + XCTAssertEqual(arr[3], finalMailAddresses[3]) + XCTAssertEqual(arr[4], finalMailAddresses[4]) + XCTAssertEqual(arr[5], finalMailAddresses[5]) + XCTAssertEqual(arr[6], finalMailAddresses[6]) + XCTAssertEqual(arr[7], finalMailAddresses[7]) + } + + // setup email validation + var validEmails = ["alice.bob@moep.blubb.de", + "test@google.com", + "test@google.co.uk", + "你好@yahoo.com", + "test@莎士比亚.org", + "你好@莎士比亚.org", + "Rδοκιμή@παράδειγμα.δοκιμή", + "管理员@中国互联网络信息中心.中国", + "你好45@yahoo.com"] - var notValidEmails = ["test@@google.com", - "test@google", - "Abc.example.com", - "A@b@c@example.com", - "this is\"not\\allowed@example.com", - "this\\ still\\\"not\\\\allowed@example.com", - "1234567890123456789012345678901234567890123456789012345678901234+x@example.com"] - ///Finding Email adresses etc. - func testIsValidEmail(){ - for v in validEmails { - XCTAssertTrue(v.isValidEmail()) - } - for n in notValidEmails{ - XCTAssertFalse(n.isValidEmail()) - } + var notValidEmails = ["test@@google.com", + "test@google", + "Abc.example.com", + "A@b@c@example.com", + "this is\"not\\allowed@example.com", + "this\\ still\\\"not\\\\allowed@example.com", + "1234567890123456789012345678901234567890123456789012345678901234+x@example.com"] + + //Finding Email adresses etc. + func testIsValidEmail(){ + for v in validEmails { + XCTAssertTrue(v.isValidEmail()) } - - // setup for mail address splitting - var correctSplit_0 = ["alice.bob", "moep", "blubb", "de"] - var correctSplit_1 = ["test", "google", "com"] - var correctSplit_2 = ["test", "google", "co", "uk"] - var correctSplit_3 = ["你好", "yahoo", "com"] - var correctSplit_4 = ["test", "莎士比亚", "org"] - var correctSplit_5 = ["你好", "莎士比亚", "org"] - var correctSplit_6 = ["Rδοκιμή", "παράδειγμα", "δοκιμή"] - var correctSplit_7 = ["管理员", "中国互联网络信息中心", "中国"] - var correctSplit_8 = ["你好45", "yahoo", "com"] - var spliEmails:[Any] { - return [correctSplit_0, correctSplit_1, correctSplit_2, correctSplit_3, correctSplit_4, correctSplit_5, correctSplit_6, correctSplit_7, correctSplit_8] + for n in notValidEmails{ + XCTAssertFalse(n.isValidEmail()) } + } + + // setup for mail address splitting + var correctSplit_0 = ["alice.bob", "moep", "blubb", "de"] + var correctSplit_1 = ["test", "google", "com"] + var correctSplit_2 = ["test", "google", "co", "uk"] + var correctSplit_3 = ["你好", "yahoo", "com"] + var correctSplit_4 = ["test", "莎士比亚", "org"] + var correctSplit_5 = ["你好", "莎士比亚", "org"] + var correctSplit_6 = ["Rδοκιμή", "παράδειγμα", "δοκιμή"] + var correctSplit_7 = ["管理员", "中国互联网络信息中心", "中国"] + var correctSplit_8 = ["你好45", "yahoo", "com"] + var spliEmails:[Any] { + return [correctSplit_0, correctSplit_1, correctSplit_2, correctSplit_3, correctSplit_4, correctSplit_5, correctSplit_6, correctSplit_7, correctSplit_8] + } - func testSplitMailAddress(){ - for (i, email) in validEmails.enumerated(){ - let arr = (email.splitAddress()) - XCTAssertNotNil(arr) - for (j, _) in arr.enumerated() - { - let array = spliEmails[i] as? [String] - XCTAssertEqual(arr[j], array?[j]) - } + func testSplitMailAddress(){ + for (i, email) in validEmails.enumerated(){ + let arr = (email.splitAddress()) + XCTAssertNotNil(arr) + for (j, _) in arr.enumerated() + { + let array = spliEmails[i] as? [String] + XCTAssertEqual(arr[j], array?[j]) } } + } - var finalTestEMailIdentity = ["alice.bob", "test", "test", "你好", "test", "你好", "Rδοκιμή", "管理员", "你好45"] - func testGetMailIdentity(){ - for (i, email) in validEmails.enumerated(){ - let arr = (email.getLocalMailIdentity()) - XCTAssertNotNil(arr) - XCTAssertEqual(arr, finalTestEMailIdentity[i]) - } + var finalTestEMailIdentity = ["alice.bob", "test", "test", "你好", "test", "你好", "Rδοκιμή", "管理员", "你好45"] + func testGetMailIdentity(){ + for (i, email) in validEmails.enumerated(){ + let arr = (email.getLocalMailIdentity()) + XCTAssertNotNil(arr) + XCTAssertEqual(arr, finalTestEMailIdentity[i]) } + } - var eMailSubDomain_0 = ["moep", "blubb"] - var eMailSubDomain_1 = ["παράδειγμα"] - var eMailSubDomain_2 = ["中国互联网络信息中心"] - var eMailSubDomain_3 = ["google", "co"] - func testGetSubdomains(){ - let arr_0 = validEmails[0].getSubdomains() - XCTAssertNotNil(arr_0) - XCTAssertEqual(arr_0[0], eMailSubDomain_0[0]) - XCTAssertEqual(arr_0[1], eMailSubDomain_0[1]) - - let arr_1 = validEmails[6].getSubdomains() - XCTAssertNotNil(arr_1) - XCTAssertEqual(arr_1[0], eMailSubDomain_1[0]) - - let arr_2 = validEmails[7].getSubdomains() - XCTAssertNotNil(arr_2) - XCTAssertEqual(arr_2[0], eMailSubDomain_2[0]) + var eMailSubDomain_0 = ["moep", "blubb"] + var eMailSubDomain_1 = ["παράδειγμα"] + var eMailSubDomain_2 = ["中国互联网络信息中心"] + var eMailSubDomain_3 = ["google", "co"] + func testGetSubdomains(){ + let arr_0 = validEmails[0].getSubdomains() + XCTAssertNotNil(arr_0) + XCTAssertEqual(arr_0[0], eMailSubDomain_0[0]) + XCTAssertEqual(arr_0[1], eMailSubDomain_0[1]) + + let arr_1 = validEmails[6].getSubdomains() + XCTAssertNotNil(arr_1) + XCTAssertEqual(arr_1[0], eMailSubDomain_1[0]) - let arr_3 = validEmails[2].getSubdomains() - XCTAssertNotNil(arr_3) - XCTAssertEqual(arr_3[0], eMailSubDomain_3[0]) - XCTAssertEqual(arr_3[1], eMailSubDomain_3[1]) - } + let arr_2 = validEmails[7].getSubdomains() + XCTAssertNotNil(arr_2) + XCTAssertEqual(arr_2[0], eMailSubDomain_2[0]) - var finalTestEMailDomain = ["de", "com", "uk", "com", "org", "org", "δοκιμή", "中国", "com"] - func testGetDomain(){ - for (i, email) in validEmails.enumerated(){ - let arr = (email.getDomain()) - XCTAssertNotNil(arr) - XCTAssertEqual(arr, finalTestEMailDomain[i]) - } + let arr_3 = validEmails[2].getSubdomains() + XCTAssertNotNil(arr_3) + XCTAssertEqual(arr_3[0], eMailSubDomain_3[0]) + XCTAssertEqual(arr_3[1], eMailSubDomain_3[1]) + } + + var finalTestEMailDomain = ["de", "com", "uk", "com", "org", "org", "δοκιμή", "中国", "com"] + func testGetDomain(){ + for (i, email) in validEmails.enumerated(){ + let arr = (email.getDomain()) + XCTAssertNotNil(arr) + XCTAssertEqual(arr, finalTestEMailDomain[i]) } } + + func testTextFindMailAddress() { + let arr = TestText.findMailAddress() + XCTAssertNotNil(arr) + XCTAssertEqual(arr[0], finalMailAddresses[0]) + XCTAssertEqual(arr[1], finalMailAddresses[1]) + } + + func testGetMailDomain() { + XCTAssertEqual("test@google.com".getMailDomains(), "google") + XCTAssertEqual("test@google.co.uk".getMailDomains(), "google.co") + } +} + diff --git a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift index 5885406ca658a19e4a0e5fecdbffe00c3ef5e03c..e7b28cc4a614215211b09623a30c21f4fe4c20c0 100644 --- a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift +++ b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift @@ -54,41 +54,41 @@ class MailComparisonTests: XCTestCase { Code ******************/ @NSManaged public var contact: EnzevalosContact - public func compareSenderToContacts(_ mail: PersistentMail? ) -> String { - let senderAddress = mail?.from.mailAddress + public func compareSenderToContacts(_ mail: PersistentMail? ) -> String { + let senderAddress = mail?.from.mailAddress - // 1. ich will wissen, ob der sender bekannt ist, deshalb erst einmal equal test mit sender und kontaktbuch durch cncontact + // 1. ich will wissen, ob der sender bekannt ist, deshalb erst einmal equal test mit sender und kontaktbuch durch cncontact - let contacts = datahandler.getContacts() - for cont in contacts{ - let addr = mail?.from.contact?.cnContact - if addr != nil{ - return "is a contact" - } - if cont.isAddress(mailadr: senderAddress!){ - return "send mails before" - } + let contacts = datahandler.getContacts() + for cont in contacts{ + let addr = mail?.from.contact?.cnContact + if addr != nil{ + return "is a contact" } - - // 2. ich will wissen, ob der sender schon eine mail geschickt hat, wenn nicht im kontaktbuch, deshalb vergleich mit contact - let knownMailAddresses = contact.getMailAddresses() - for knownAddress in knownMailAddresses{ - if knownAddress.mailAddress == senderAddress{ - return "has alrady send an email" - } - + if cont.isAddress(mailadr: senderAddress!){ + return "send mails before" } - /* - if mail?.from.contact?.getMailAddresses() == senderAddress{ + } + + // 2. ich will wissen, ob der sender schon eine mail geschickt hat, wenn nicht im kontaktbuch, deshalb vergleich mit contact + let knownMailAddresses = contact.getMailAddresses() + for knownAddress in knownMailAddresses{ + if knownAddress.mailAddress == senderAddress{ return "has alrady send an email" - }*/ - // 3. ich will wissen, ob wenn der sender unbekannt, eine ähnliche mailaddresse schon einmal ankam + } - return "false" - } - /************** + } + /* + if mail?.from.contact?.getMailAddresses() == senderAddress{ + return "has alrady send an email" + }*/ + // 3. ich will wissen, ob wenn der sender unbekannt, eine ähnliche mailaddresse schon einmal ankam + return "false" + } +/************** End Code ****************/ + func createAddressBook(){ let _ = datahandler.getContactByMCOAddress(address: user) } diff --git a/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift b/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift index 8bcabf7dc73b30376b1c1a47ae5734baebccb684..d8003858130227ec51a84f248b3a93f0815fe968 100644 --- a/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift +++ b/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift @@ -10,13 +10,26 @@ import XCTest class UrlStringExtensionTests: XCTestCase { + // Setup for Critical Pattern of a Root Domain + var testMailText = "https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240http:// www.google.de http://nljbjkjk.de https://www.w3schools.com https://www.w2schools.com https://www.w8schools.com https://www.w33schools.com https://www.w22schools.com https://www.w99schools.eu.com https://git.imp.fu-ber_lin.de/enzevalos/enzevalos_iphone/issues/240 http://www.google-.de http://nljbj#kjk.de https://www.3schools.com https://www.w2sc..hools.com https://www.w8sch?ools.com https://www.w33sc_hools.com https://www.w22schooIs.com https://www.W99schools$.com" + var vaildRD = ["fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.eu.com", "3schools.com"] + // Setup for get second level doamin of URL + var finalSLD = ["fu-berlin", "google", "nljbjkjk", "w3schools", "w2schools", "w8schools", "w33schools", "w22schools", "w99schools"] + // Setup for get root domein of URL + var testmailURL = "https://git.imp.fu-ber_lin.de/enzevalos/enzevalos_iphone/issues/240 http://www.google-.de http://nljbj#kjk.de https://www.3schools.com https://www.w2sc..hools.com https://www.w8sch?ools.com https://www.w33sc_hools.com https://www.w22schooIs.com https://www.W99schools$.com https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240 http://www.google.de http://nljbjkjk.de https://www.w3schools.com https://www.w2schools.com https://www.w8schools.com https://www.w33schools.com https://www.w22schools.com https://www.w99schools.eu.com bob.alice@zedat.fu-berlin.de https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240 www.google.de kljhl@hjkghgkhj.com nljbjkjk.de https://www.w3#schools.com/ https://www.w2schools.com/ https://www.w8schools.com/ https://www.w33schools.com/ https://www.w22schools.com/ https://www.w99schools.com/ 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org Rδοκιμή@παράδειγμα.δοκιμή 管理员@中国互联网络信息中心.中国 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org" + var finalRD = ["fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.com"] + + // Setup for critical pattern of a root domain + var testmail = "fu-ber_lin.de google-.de nljbj#kjk.de 3schools.com w2sc..hools.com w8sch?ools.com w33sc_hools.com w22schooIs.com W99schools$.com fu-berlin.de google.de nljbjkjk.de w3schools.com w2schools.com w8schools.com w33schools.com w22schools.com w99schools.eu.com bob.alice@zedat.fu-berlin.de git.imp.fu-berlin.de google.de kljhl@hjkghgkhj.com nljbjkjk.de w3#schools.com w2schools.com w8schools.com w33schools.com w22schools.com w99schools.com 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org Rδοκιμή@παράδειγμα.δοκιμή 管理员@中国互联网络信息中心.中国 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org" + var finalunciticalrd = ["3schools.com", "fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.eu.com", "git.imp.fu-berlin.de", "google.de", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.com"] + // General TestText for all (needs to simulate a body of text from which to extract specific Strings var TestText = "blabla moep jkjlkj lkjkljknmbjks llhil k. jhkhkih. huhuhj! fsdf bob.alice@zedat.fu-berlin.de dfsf. jhjknjknjkh https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240 hjkhjkhkhn www.google.de kljhl@hjkghgkhj.com nljbjkjk.de url tag html mail <a href='https://www.w3schools.com'>Visit W3Schools</a> hjhkhiuhziu kjhkl <a href=\"https://www.w2schools.com\">Visit W2Schools</a>. lknljnlk. kmm /n lmölmpöl < a href=\"https://www.w8schools.com\">Visit W8Schools</a> gfg fghfghnhg <a href=\"https://www.w33schools.com\">Visit W33Schools</a> nkjhjkhkjn,mn jnmnklmj j <a href=\"https://www.w22schools.com\">Visit W22Schools</ a> hghjcfgh hfgchnvhj vgjcgj cjghcj <a href=\"https://www.w99schools.com\">Visit W99Schools</a > 你好@yahoo.com eewfve test@莎士比亚.org 你好@莎士比亚.org Rδοκιμή@παράδειγμα.δοκιμή or 管理员@中国互联网络信息中心.中国 你好45@yahoo.com" - // setup for find URLs in text + // Setup for find URLs in text var finalURLs = ["https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240", "http://www.google.de", "http://nljbjkjk.de", "https://www.w3schools.com", "https://www.w2schools.com", "https://www.w8schools.com", "https://www.w33schools.com", "https://www.w22schools.com", "https://www.w99schools.com"] - // setup for tag tests + // Setup for tag tests var finalTestTextFindHtmlTags = ["<a href=\'https://www.w3schools.com\'>Visit W3Schools</a>", "<a href=\"https://www.w2schools.com\">Visit W2Schools</a>", "< a href=\"https://www.w8schools.com\">Visit W8Schools</a>", "<a href=\"https://www.w33schools.com\">Visit W33Schools</a>", "<a href=\"https://www.w22schools.com\">Visit W22Schools</ a>", "<a href=\"https://www.w99schools.com\">Visit W99Schools</a >"] var finalTestTextHtmlTagURL = ["https://www.w3schools.com", "https://www.w2schools.com", "https://www.w8schools.com", "https://www.w33schools.com", "https://www.w22schools.com", "https://www.w99schools.com"] @@ -24,6 +37,7 @@ class UrlStringExtensionTests: XCTestCase { var finalTestTexthttpTagLinkName = ["Visit W3Schools", "Visit W2Schools", "Visit W8Schools", "Visit W33Schools", "Visit W22Schools", "Visit W99Schools"] var testUrl = "www.google.de" + var testURL2 = "https://www.mycampus.imp.fu-berlin.de/portal" override func setUp() { super.setUp() @@ -79,4 +93,87 @@ class UrlStringExtensionTests: XCTestCase { XCTAssertNotNil(testUrl.url2ip()) //It changes often therefore a direct comparisson is not useful } + + // Test get Root Domain + func testGetRD() { + let rd = testMailText.getRD() + print(rd) + } + + // Test get Second Level Domain + func testGetSLD(){ + let sld = TestText.getSLD() + XCTAssertNotNil(sld) + XCTAssertEqual(sld[0], finalSLD[0]) + XCTAssertEqual(sld[1], finalSLD[1]) + XCTAssertEqual(sld[2], finalSLD[2]) + XCTAssertEqual(sld[3], finalSLD[3]) + } + + func testIsValidRD(){ + let pattern = testMailText.isValidRD() + XCTAssertNotNil(pattern) + XCTAssertEqual(pattern[0], vaildRD[0]) + XCTAssertEqual(pattern[1], vaildRD[1]) + XCTAssertEqual(pattern[2], vaildRD[2]) + XCTAssertEqual(pattern[3], vaildRD[3]) + XCTAssertEqual(pattern[4], vaildRD[4]) + XCTAssertEqual(pattern[5], vaildRD[5]) + XCTAssertEqual(pattern[6], vaildRD[6]) + XCTAssertEqual(pattern[7], vaildRD[7]) + XCTAssertEqual(pattern[8], vaildRD[8]) + XCTAssertEqual(pattern[9], vaildRD[9]) + } + + func testCompareURL() { + let url = "www.google.com" + let urls = ["www.googIe.com/klsdkhl", "https://www.google.com/maps?client=safari&sxsrf=", "www.gogle.com", "www.google.de", "www.outlook.com"] + XCTAssertFalse(url.compareURLs(urls: urls)) + } + + func testcompareURLsDic(){ + let url = "www.google.com" + let urls = ["www.googIe.com/klsdkhl", "https://www.google.com/maps?client=safari&sxsrf=", "www.gogle.com", "www.google.de", "www.outlook.com"] + print("resultlist:", url.compareURLsDic(urls: urls)) + } + + func testCompareURLWithSLDList() { + let url = "www.google.com" + let domains = ["googIe", "google", "gogle", "gooGle", "gle", "glllll"] + XCTAssertFalse(url.compareURLWithSLDList(domains: domains)) + } + + func testIsAllowedDistance() { + let str = "google" + // #distance: 0 1 2 3 4 < + let strArray = ["google", "googIe", "gogIe", "gooogIIe", "go", "amazon"] + XCTAssertTrue(str.isAllowedDistance(str: strArray[0], allowedEditDistance: 4)) + XCTAssertFalse(str.isAllowedDistance(str: strArray[1], allowedEditDistance: 4)) + XCTAssertFalse(str.isAllowedDistance(str: strArray[2], allowedEditDistance: 4)) + XCTAssertFalse(str.isAllowedDistance(str: strArray[3], allowedEditDistance: 6)) + XCTAssertTrue(str.isAllowedDistance(str: strArray[4], allowedEditDistance: 4)) + XCTAssertTrue(str.isAllowedDistance(str: strArray[5], allowedEditDistance: 4)) + } + + func testLevenshtein(){ + let str1 = "hallo" + let str2 = "hlalo" + let str3 = "haloo" + let str4 = "halo" + let str5 = "halllo" + let str6 = "halol" + let edd1 = str1.levenshtein(str2) + let edd2 = str1.levenshtein(str3) + let edd3 = str1.levenshtein(str4) + let edd4 = str1.levenshtein(str5) + let edd5 = str1.levenshtein(str6) + + print("editdistance transposition:", edd1) + print("editdistance substitution:", edd2) + print("editdistance deletion:",edd3) + print("editdistance insertion:",edd4) + print("editdistance transposition at the end:", edd5) + } + } +