Skip to content
Snippets Groups Projects
Commit f58aa486 authored by blauren95's avatar blauren95
Browse files

#272: added test cases for testing typosquatting function

parent 3e3b5a3e
Branches
Tags
2 merge requests!58Onboarding screens swift ui merge dev,!57Resolve "Typosquatting"
......@@ -34,15 +34,14 @@ class Typosquatting {
Returns an dictionary with the urls as the keys and and a bollean if it fits the allowed editdistance as value
isAllowedDistance is false: if the URL's root domain has an unallowed edit distance with any other root domain.
*/
func compareURLsDic(url: String, urls: [String]) -> [String:String] {
func compareURLsAsDic(url: String, urls: [String], allowedEditDistance: Int) -> [String:String] {
let rootDomain = url.getRootDomain()
var isAllowedEditDistance = true
var typoDic: [String:String] = [:]
for url in urls {
let rd = url.getRootDomain()
if !rootDomain.isAllowedDistance(str: rd, allowedEditDistance: 4) {
if !rootDomain.isAllowedDistance(str: rd, allowedEditDistance: allowedEditDistance) {
// 2 domains contain less than 4 differences --> warning here needed
print("Warning!! \n Edit distance is not in the allowed range between link: " + url + " and link: " + url)
isAllowedEditDistance = false
typoDic.updateValue(String(isAllowedEditDistance), forKey : url)
isAllowedEditDistance = true
......@@ -58,7 +57,7 @@ class Typosquatting {
Compares a url's root domain with all root domain of all elements in a givin url list.
Retruns an dictionary with the URLs as keys and the Editdistance as value
*/
func getURLEditdistance(url: String, urls: [String]) -> [String:String] {
func getURLEditdistanceAsDic(url: String, urls: [String]) -> [String:String] {
let rootDomain = url.getRootDomain()
var urlEditDic: [String:String] = [:]
var editDistance = 0
......@@ -80,7 +79,6 @@ class Typosquatting {
for domain in domains {
if !secondLevelDomain.isAllowedDistance(str: domain, allowedEditDistance: 4) {
// 2 domains contain less than 4 differences --> warning here needed
print("Warning!! \n Edit distance is not in the allowed range between domain: " + secondLevelDomain + " and domain: " + domain)
isAllowedEditDistance = false
}
}
......@@ -88,18 +86,17 @@ class Typosquatting {
}
/**
Compares a url's second level domain with all domains of all elements in a givin url list.
Returns an dictionary with the domains as the keys and and a bollean if it fits the allowed editdistance as value
Compares a url's second level domain with all domains of all elements in a givin second level domain list.
Returns an dictionary with the domains as the keys and and a boolean if it fits the allowed edit-distance as value
isAllowedDistance is false: if the URL's second level domain has an unallowed edit distance with any other domain.
*/
func compareURLWithSLDListDic(url: String, domains: [String]) -> [String:String] {
func compareURLWithSLDListAsDic(url: String, domains: [String], allowedEditDistance: Int) -> [String:String] {
let secondLevelDomain = url.getSecondLevelDomain()
var isAllowedEditDistance = true
var typoDic: [String:String] = [:]
for domain in domains {
if !secondLevelDomain.isAllowedDistance(str: domain, allowedEditDistance: 4) {
if !secondLevelDomain.isAllowedDistance(str: domain, allowedEditDistance: allowedEditDistance) {
// 2 domains contain less than 4 differences --> warning here needed
print("Warning!! \n Edit distance is not in the allowed range between link: " + url + " and link: " + domain)
isAllowedEditDistance = false
typoDic.updateValue(String(isAllowedEditDistance), forKey : domain)
isAllowedEditDistance = true
......@@ -115,7 +112,7 @@ class Typosquatting {
Compares a url's second-level domain with all elements of a givin domain list.
Retruns an dictionary with the second level domain as keys and the editdistance as value
*/
func getSLDEditdistance(url: String, domains: [String]) -> [String:String] {
func getSLDEditdistanceAsDic(url: String, domains: [String]) -> [String:String] {
let secondLevelDomain = url.getSecondLevelDomain()
var sldEditDic: [String:String] = [:]
var editDistance = 0
......@@ -130,12 +127,11 @@ class Typosquatting {
Compares a second-level domain with all elements of a givin second-level domain list.
false: if the second-level domain has an unallowed edit distance with any other domain.
*/
func compareDomainWithDomians(secondLvlDomain: String, domains: [String]) -> Bool {
func compareDomainWithDomians(secondLvlDomain: String, domains: [String], allowedEditDistance: Int) -> Bool {
var isAllowedEditDistance = true
for domain in domains {
if !secondLvlDomain.isAllowedDistance(str: domain, allowedEditDistance: 4) {
if !secondLvlDomain.isAllowedDistance(str: domain, allowedEditDistance: allowedEditDistance) {
// 2 domains contain less than 4 differences --> warning here needed
print("Warning!! \n Edit distance is not in the allowed range between domain: " + secondLvlDomain + " and domain: " + domain)
isAllowedEditDistance = false
}
}
......@@ -144,16 +140,15 @@ class Typosquatting {
/**
Compares a second level domain with all elements of a givin second-level domain list.
Returns an dictionary with the domains as the keys and and a bollean if it fits the allowed editdistance as value
Returns an dictionary with the domains as the keys and and a boolean if it fits the allowed editdistance as value
isAllowedDistance is false: if the second level domain has an unallowed edit distance with any other domain.
*/
func compareDomainWithDomiansDic(secondLvlDomain: String, domains: [String]) -> [String:String] {
func compareDomainWithDomiansAsDic(secondLvlDomain: String, domains: [String], allowedEditDistance: Int) -> [String:String] {
var isAllowedEditDistance = true
var typoDic: [String:String] = [:]
for domain in domains {
if !secondLvlDomain.isAllowedDistance(str: domain, allowedEditDistance: 4) {
if !secondLvlDomain.isAllowedDistance(str: domain, allowedEditDistance: allowedEditDistance) {
// 2 domains contain less than 4 differences --> warning here needed
print("Warning!! \n Edit distance is not in the allowed range between link: " + secondLvlDomain + " and link: " + domain)
isAllowedEditDistance = false
typoDic.updateValue(String(isAllowedEditDistance), forKey : domain)
isAllowedEditDistance = true
......@@ -169,7 +164,7 @@ class Typosquatting {
Compares a domain with all elements of a givin domain list.
Retruns an dictionary with domains as keys and the editdistance as value
*/
func getDomainEditDistance(domain: String, domains: [String]) -> [String:String] {
func getDomainEditDistanceAsDic(domain: String, domains: [String]) -> [String:String] {
var domainEditDic: [String:String] = [:]
var editDistance = 0
for dom in domains {
......
......@@ -14,23 +14,76 @@ class TyposquattingTests: XCTestCase {
let typosquatting = Typosquatting()
var vaildRD = ["fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.eu.com", "3schools.com"]
var validRD = ["fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.eu.com", "3schools.com"]
var validSLD = ["fu-berlin", "google", "nljbjkjk", "w3schools", "w2schools", "w8schools", "w33schools", "w22schools", "w99schools.eu", "3schools"]
var validURLs = ["www.fu-berlin.de", "www.google.de", "nljbjkjk.com", "www.w3schools.com", "www.w2schools.com", "www.w8schools.de", "www.w33schools.com", "www.w22schools.com", "www.w99schools.eu.com", "www.3schools.com"]
// 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"
func testIsValidRD(){
func testIsValidRD() {
let pattern = typosquatting.isValidRD(mailBody: testMailText)
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])
XCTAssertEqual(pattern[0], validRD[0])
XCTAssertEqual(pattern[1], validRD[1])
XCTAssertEqual(pattern[2], validRD[2])
XCTAssertEqual(pattern[3], validRD[3])
XCTAssertEqual(pattern[4], validRD[4])
XCTAssertEqual(pattern[5], validRD[5])
XCTAssertEqual(pattern[6], validRD[6])
XCTAssertEqual(pattern[7], validRD[7])
XCTAssertEqual(pattern[8], validRD[8])
XCTAssertEqual(pattern[9], validRD[9])
}
func testCompareDomainWithDomians() {
let domain = "w2schools"
XCTAssertFalse(typosquatting.compareDomainWithDomians(secondLvlDomain: domain, domains: validSLD, allowedEditDistance: 4))
}
func testGetDomainEditDistance() {
let domain = "w2schools"
print(typosquatting.getDomainEditDistanceAsDic(domain: domain, domains: validSLD))
}
func testCompareDomainWithDomiansDic() {
let domain = "w2schools"
print(typosquatting.compareDomainWithDomiansAsDic(secondLvlDomain: domain, domains: validSLD, allowedEditDistance: 4))
}
func testGetSLDEditdistance() {
let url = "www.w2schools.com"
print(typosquatting.getSLDEditdistanceAsDic(url: url, domains: validSLD))
}
func testGetURLEditdistanceAsDic() {
let url = "www.w2schools.com"
print(typosquatting.getURLEditdistanceAsDic(url: url, urls: validURLs))
}
func testCompareURLWithSLDListAsDic() {
let url = "www.w2schools.com"
print(typosquatting.compareURLWithSLDListAsDic(url: url, domains: validSLD, allowedEditDistance: 4))
}
func testCompareURLWithSLDList() {
let url = "www.google.com"
let domains = ["googIe", "google", "gogle", "gooGle", "gle", "glllll"]
XCTAssertFalse(typosquatting.compareURLWithSLDList(url: url, domains: domains))
}
func testCompareURLsAsDic() {
let url = "www.google.com"
print(typosquatting.compareURLsAsDic(url: url, urls: validURLs, allowedEditDistance: 4))
}
func testCompareURLs() {
let url = "www.w2schools.com"
XCTAssertFalse(typosquatting.compareURLs(url: url, urls: validURLs))
}
}
......@@ -125,24 +125,6 @@ class UrlStringExtensionTests: XCTestCase {
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 <
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment