fixup tests
This commit is contained in:
parent
b300ce385d
commit
a1ee5feddc
@ -740,11 +740,11 @@ public class OWSLinkPreviewManager: NSObject {
|
||||
Logger.error("Invalid image URL.")
|
||||
return Promise.value(OWSLinkPreviewDraft(urlString: linkUrlString, title: title))
|
||||
}
|
||||
guard let imageFileExtension = fileExtension(forImageUrl: imageUrlString) else {
|
||||
guard let imageFileExtension = type(of: self).fileExtension(forImageUrl: imageUrlString) else {
|
||||
Logger.error("Image URL has unknown or invalid file extension: \(imageUrlString).")
|
||||
return Promise.value(OWSLinkPreviewDraft(urlString: linkUrlString, title: title))
|
||||
}
|
||||
guard let imageMimeType = mimetype(forImageFileExtension: imageFileExtension) else {
|
||||
guard let imageMimeType = type(of: self).mimetype(forImageFileExtension: imageFileExtension) else {
|
||||
Logger.error("Image URL has unknown or invalid content type: \(imageUrl).")
|
||||
return Promise.value(OWSLinkPreviewDraft(urlString: linkUrlString, title: title))
|
||||
}
|
||||
@ -798,7 +798,7 @@ public class OWSLinkPreviewManager: NSObject {
|
||||
return OWSLinkPreviewContents(title: title, imageUrl: imageUrlString)
|
||||
}
|
||||
|
||||
func fileExtension(forImageUrl urlString: String) -> String? {
|
||||
class func fileExtension(forImageUrl urlString: String) -> String? {
|
||||
guard let imageUrl = URL(string: urlString) else {
|
||||
Logger.error("Could not parse image URL.")
|
||||
return nil
|
||||
@ -811,7 +811,7 @@ public class OWSLinkPreviewManager: NSObject {
|
||||
return imageFileExtension
|
||||
}
|
||||
|
||||
func mimetype(forImageFileExtension imageFileExtension: String) -> String? {
|
||||
class func mimetype(forImageFileExtension imageFileExtension: String) -> String? {
|
||||
guard imageFileExtension.count > 0 else {
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -95,87 +95,87 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
}
|
||||
|
||||
func testIsValidLinkUrl() {
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.youtube.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://youtube.com/watch?v=tP-Ipsat90c"))
|
||||
Assert(validPreviewLink: "https://www.youtube.com/watch?v=tP-Ipsat90c")
|
||||
Assert(validPreviewLink: "https://youtube.com/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Case shouldn't matter.
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://WWW.YOUTUBE.COM/watch?v=tP-Ipsat90c"))
|
||||
Assert(validPreviewLink: "https://WWW.YOUTUBE.COM/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Don't allow arbitrary subdomains.
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://some.random.subdomain.youtube.com/watch?v=tP-Ipsat90c"))
|
||||
Assert(invalidPreviewMedia: "https://some.random.subdomain.youtube.com/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Don't allow HTTP, only HTTPS
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("http://youtube.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("mailto://youtube.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("ftp://youtube.com/watch?v=tP-Ipsat90c"))
|
||||
Assert(invalidPreviewLink: "http://youtube.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewLink: "mailto://youtube.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewLink: "ftp://youtube.com/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Don't allow similar domains.
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://xyoutube.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://youtubex.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://youtube.comx/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://www.xyoutube.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://www.youtubex.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://www.youtube.comx/watch?v=tP-Ipsat90c"))
|
||||
Assert(invalidPreviewLink: "https://xyoutube.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewLink: "https://youtubex.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewLink: "https://youtube.comx/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewLink: "https://www.xyoutube.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewLink: "https://www.youtubex.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewLink: "https://www.youtube.comx/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Don't allow media domains.
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://i.ytimg.com/vi/tP-Ipsat90c/maxresdefault.jpg"))
|
||||
Assert(invalidPreviewLink: "https://i.ytimg.com/vi/tP-Ipsat90c/maxresdefault.jpg")
|
||||
|
||||
// Allow all whitelisted domains.
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.youtube.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://youtu.be/tP-Ipsat90c"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.reddit.com/r/androiddev/comments/a7gctz/androidx_release_notes_this_is_the_first_release/"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.reddit.com/r/WhitePeopleTwitter/comments/a7j3mm/why/"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://imgur.com/gallery/KFCL8fm"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://imgur.com/gallery/FMdwTiV"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_web_button_share_sheet"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_share_sheet&igshid=94c7ihqjfmbm"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://imgur.com/gallery/igHOwDM"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://pinterest.com/something"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.pinterest.com/something"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://pin.it/something"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://www.pinterest.com/ohjoy/recipes/"))
|
||||
Assert(validPreviewLink: "https://www.youtube.com/watch?v=tP-Ipsat90c")
|
||||
Assert(validPreviewLink: "https://youtu.be/tP-Ipsat90c")
|
||||
Assert(validPreviewLink: "https://www.reddit.com/r/androiddev/comments/a7gctz/androidx_release_notes_this_is_the_first_release/")
|
||||
Assert(validPreviewLink: "https://www.reddit.com/r/WhitePeopleTwitter/comments/a7j3mm/why/")
|
||||
Assert(validPreviewLink: "https://imgur.com/gallery/KFCL8fm")
|
||||
Assert(validPreviewLink: "https://imgur.com/gallery/FMdwTiV")
|
||||
Assert(validPreviewLink: "https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_web_button_share_sheet")
|
||||
Assert(validPreviewLink: "https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_share_sheet&igshid=94c7ihqjfmbm")
|
||||
Assert(validPreviewLink: "https://imgur.com/gallery/igHOwDM")
|
||||
Assert(validPreviewLink: "https://pinterest.com/something")
|
||||
Assert(validPreviewLink: "https://www.pinterest.com/something")
|
||||
Assert(validPreviewLink: "https://pin.it/something")
|
||||
Assert(validPreviewLink: "https://www.pinterest.com/ohjoy/recipes/")
|
||||
|
||||
// Strip trailing commas.
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://imgur.com/gallery/igHOwDM,"))
|
||||
Assert(validPreviewLink: "https://imgur.com/gallery/igHOwDM,")
|
||||
|
||||
// Ignore URLs with an empty path.
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://imgur.com"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidLinkUrl("https://imgur.com/"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidLinkUrl("https://imgur.com/X"))
|
||||
Assert(invalidPreviewLink: "https://imgur.com")
|
||||
Assert(invalidPreviewLink: "https://imgur.com/")
|
||||
Assert(validPreviewLink: "https://imgur.com/X")
|
||||
}
|
||||
|
||||
func testIsValidMediaUrl() {
|
||||
// Only allow domains on the media whitelist.
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://www.youtube.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://youtube.com/watch?v=tP-Ipsat90c"))
|
||||
Assert(invalidPreviewMedia: "https://www.youtube.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "https://youtube.com/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Allow arbitrary subdomains.
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://ytimg.com/something"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://something.ytimg.com/something"))
|
||||
Assert(validPreviewMedia: "https://ytimg.com/something")
|
||||
Assert(validPreviewMedia: "https://something.ytimg.com/something")
|
||||
|
||||
// Don't allow HTTP, only HTTPS
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("http://ytimg.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("mailto://ytimg.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("ftp://ytimg.com/watch?v=tP-Ipsat90c"))
|
||||
Assert(invalidPreviewMedia: "http://ytimg.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "mailto://ytimg.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "ftp://ytimg.com/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Don't allow similar domains.
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://xytimg.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://youtubex.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://ytimg.comx/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://www.xytimg.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://www.ytimgx.com/watch?v=tP-Ipsat90c"))
|
||||
XCTAssertFalse(OWSLinkPreview.isValidMediaUrl("https://www.ytimg.comx/watch?v=tP-Ipsat90c"))
|
||||
Assert(invalidPreviewMedia: "https://xytimg.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "https://youtubex.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "https://ytimg.comx/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "https://www.xytimg.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "https://www.ytimgx.com/watch?v=tP-Ipsat90c")
|
||||
Assert(invalidPreviewMedia: "https://www.ytimg.comx/watch?v=tP-Ipsat90c")
|
||||
|
||||
// Allow media domains.
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://i.ytimg.com/vi/tP-Ipsat90c/maxresdefault.jpg"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://external-preview.redd.it/j5lhdY0huShdzyrbSEdKzOb09BKhNreyEZOLDu1UzBA.jpg?auto=webp&s=2cb8bdb5ac5b54fc9514719030c0c9f08a03f684"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://preview.redd.it/ehakvm9vx5521.jpg?auto=webp&s=925fb2d8776ca7102b944ab00e0615ae20c1bd5a"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://i.imgur.com/Y3wjlwY.jpg?fb"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://i.imgur.com/Vot3iHh.jpg?fbplay"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://scontent-mia3-2.cdninstagram.com/vp/9035a7d6b32e6f840856661e4a11e3cf/5CFC285B/t51.2885-15/e35/47690175_2275988962411653_1145978227188801192_n.jpg?_nc_ht=scontent-mia3-2.cdninstagram.com"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://scontent-mia3-2.cdninstagram.com/vp/9035a7d6b32e6f840856661e4a11e3cf/5CFC285B/t51.2885-15/e35/47690175_2275988962411653_1145978227188801192_n.jpg?_nc_ht=scontent-mia3-2.cdninstagram.com"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://i.imgur.com/PYiyLv1.jpg?fbplay"))
|
||||
XCTAssertTrue(OWSLinkPreview.isValidMediaUrl("https://pinimg.com/something"))
|
||||
Assert(validPreviewMedia: "https://i.ytimg.com/vi/tP-Ipsat90c/maxresdefault.jpg")
|
||||
Assert(validPreviewMedia: "https://external-preview.redd.it/j5lhdY0huShdzyrbSEdKzOb09BKhNreyEZOLDu1UzBA.jpg?auto=webp&s=2cb8bdb5ac5b54fc9514719030c0c9f08a03f684")
|
||||
Assert(validPreviewMedia: "https://preview.redd.it/ehakvm9vx5521.jpg?auto=webp&s=925fb2d8776ca7102b944ab00e0615ae20c1bd5a")
|
||||
Assert(validPreviewMedia: "https://i.imgur.com/Y3wjlwY.jpg?fb")
|
||||
Assert(validPreviewMedia: "https://i.imgur.com/Vot3iHh.jpg?fbplay")
|
||||
Assert(validPreviewMedia: "https://scontent-mia3-2.cdninstagram.com/vp/9035a7d6b32e6f840856661e4a11e3cf/5CFC285B/t51.2885-15/e35/47690175_2275988962411653_1145978227188801192_n.jpg?_nc_ht=scontent-mia3-2.cdninstagram.com")
|
||||
Assert(validPreviewMedia: "https://scontent-mia3-2.cdninstagram.com/vp/9035a7d6b32e6f840856661e4a11e3cf/5CFC285B/t51.2885-15/e35/47690175_2275988962411653_1145978227188801192_n.jpg?_nc_ht=scontent-mia3-2.cdninstagram.com")
|
||||
Assert(validPreviewMedia: "https://i.imgur.com/PYiyLv1.jpg?fbplay")
|
||||
Assert(validPreviewMedia: "https://pinimg.com/something")
|
||||
}
|
||||
|
||||
func testPreviewUrlForMessageBodyText() {
|
||||
@ -196,28 +196,28 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
}
|
||||
|
||||
func testUtils() {
|
||||
XCTAssertNil(OWSLinkPreview.fileExtension(forImageUrl: ""))
|
||||
XCTAssertNil(OWSLinkPreview.fileExtension(forImageUrl: "https://www.some.host/path/imagename"))
|
||||
XCTAssertNil(OWSLinkPreview.fileExtension(forImageUrl: "https://www.some.host/path/imagename."))
|
||||
XCTAssertNil(OWSLinkPreviewManager.fileExtension(forImageUrl: ""))
|
||||
XCTAssertNil(OWSLinkPreviewManager.fileExtension(forImageUrl: "https://www.some.host/path/imagename"))
|
||||
XCTAssertNil(OWSLinkPreviewManager.fileExtension(forImageUrl: "https://www.some.host/path/imagename."))
|
||||
|
||||
XCTAssertEqual(OWSLinkPreview.fileExtension(forImageUrl: "https://www.some.host/path/imagename.jpg"), "jpg")
|
||||
XCTAssertEqual(OWSLinkPreview.fileExtension(forImageUrl: "https://www.some.host/path/imagename.gif"), "gif")
|
||||
XCTAssertEqual(OWSLinkPreview.fileExtension(forImageUrl: "https://www.some.host/path/imagename.png"), "png")
|
||||
XCTAssertEqual(OWSLinkPreview.fileExtension(forImageUrl: "https://www.some.host/path/imagename.boink"), "boink")
|
||||
XCTAssertEqual(OWSLinkPreviewManager.fileExtension(forImageUrl: "https://www.some.host/path/imagename.jpg"), "jpg")
|
||||
XCTAssertEqual(OWSLinkPreviewManager.fileExtension(forImageUrl: "https://www.some.host/path/imagename.gif"), "gif")
|
||||
XCTAssertEqual(OWSLinkPreviewManager.fileExtension(forImageUrl: "https://www.some.host/path/imagename.png"), "png")
|
||||
XCTAssertEqual(OWSLinkPreviewManager.fileExtension(forImageUrl: "https://www.some.host/path/imagename.boink"), "boink")
|
||||
|
||||
XCTAssertNil(OWSLinkPreview.mimetype(forImageFileExtension: ""))
|
||||
XCTAssertNil(OWSLinkPreview.mimetype(forImageFileExtension: "boink"))
|
||||
XCTAssertNil(OWSLinkPreview.mimetype(forImageFileExtension: "tiff"))
|
||||
XCTAssertNil(OWSLinkPreview.mimetype(forImageFileExtension: "gif"))
|
||||
XCTAssertNil(OWSLinkPreviewManager.mimetype(forImageFileExtension: ""))
|
||||
XCTAssertNil(OWSLinkPreviewManager.mimetype(forImageFileExtension: "boink"))
|
||||
XCTAssertNil(OWSLinkPreviewManager.mimetype(forImageFileExtension: "tiff"))
|
||||
XCTAssertNil(OWSLinkPreviewManager.mimetype(forImageFileExtension: "gif"))
|
||||
|
||||
XCTAssertEqual(OWSLinkPreview.mimetype(forImageFileExtension: "jpg"), OWSMimeTypeImageJpeg)
|
||||
XCTAssertEqual(OWSLinkPreview.mimetype(forImageFileExtension: "png"), OWSMimeTypeImagePng)
|
||||
XCTAssertEqual(OWSLinkPreviewManager.mimetype(forImageFileExtension: "jpg"), OWSMimeTypeImageJpeg)
|
||||
XCTAssertEqual(OWSLinkPreviewManager.mimetype(forImageFileExtension: "png"), OWSMimeTypeImagePng)
|
||||
}
|
||||
|
||||
func testLinkDownloadAndParsing() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.tryToBuildPreviewInfo(previewUrl: "https://www.youtube.com/watch?v=tP-Ipsat90c")
|
||||
linkPreviewManager.tryToBuildPreviewInfo(previewUrl: "https://www.youtube.com/watch?v=tP-Ipsat90c")
|
||||
.done { (draft: OWSLinkPreviewDraft) in
|
||||
XCTAssertNotNil(draft)
|
||||
|
||||
@ -238,7 +238,7 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
let linkText = ""
|
||||
let linkData = linkText.data(using: .utf8)!
|
||||
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertNil(content.title)
|
||||
@ -250,7 +250,7 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
"<meta property=\"og:image\" content=\"https://i.ytimg.com/vi/tP-Ipsat90c/maxresdefault.jpg\">")
|
||||
let linkData = linkText.data(using: .utf8)!
|
||||
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Randomness is Random - Numberphile")
|
||||
@ -260,9 +260,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData1() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://www.youtube.com/watch?v=tP-Ipsat90c")
|
||||
linkPreviewManager.downloadLink(url: "https://www.youtube.com/watch?v=tP-Ipsat90c")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Randomness is Random - Numberphile")
|
||||
@ -281,9 +281,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData2() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://youtu.be/tP-Ipsat90c")
|
||||
linkPreviewManager.downloadLink(url: "https://youtu.be/tP-Ipsat90c")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Randomness is Random - Numberphile")
|
||||
@ -302,9 +302,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData3() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://www.reddit.com/r/androiddev/comments/a7gctz/androidx_release_notes_this_is_the_first_release/")
|
||||
linkPreviewManager.downloadLink(url: "https://www.reddit.com/r/androiddev/comments/a7gctz/androidx_release_notes_this_is_the_first_release/")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "r/androiddev - AndroidX release notes | This is the first release of SavedState")
|
||||
@ -323,9 +323,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData4() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://www.reddit.com/r/WhitePeopleTwitter/comments/a7j3mm/why/")
|
||||
linkPreviewManager.downloadLink(url: "https://www.reddit.com/r/WhitePeopleTwitter/comments/a7j3mm/why/")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "r/WhitePeopleTwitter - Why")
|
||||
@ -344,9 +344,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData5() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://imgur.com/gallery/KFCL8fm")
|
||||
linkPreviewManager.downloadLink(url: "https://imgur.com/gallery/KFCL8fm")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertNil(content.title)
|
||||
@ -365,9 +365,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData6() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://imgur.com/gallery/FMdwTiV")
|
||||
linkPreviewManager.downloadLink(url: "https://imgur.com/gallery/FMdwTiV")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Freddy would be proud!")
|
||||
@ -386,9 +386,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData7() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_web_button_share_sheet")
|
||||
linkPreviewManager.downloadLink(url: "https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_web_button_share_sheet")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Walter \"MFPallytime\" on Instagram: “Lol gg”")
|
||||
@ -413,9 +413,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData8() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_share_sheet&igshid=94c7ihqjfmbm")
|
||||
linkPreviewManager.downloadLink(url: "https://www.instagram.com/p/BrgpsUjF9Jo/?utm_source=ig_share_sheet&igshid=94c7ihqjfmbm")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Walter \"MFPallytime\" on Instagram: “Lol gg”")
|
||||
@ -424,7 +424,7 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
// It seems like some parts of the URL are stable, so we can pattern match, but if this continues to be brittle we may choose
|
||||
// to remove it or stub the network response
|
||||
XCTAssertMatch(expectedPattern: "^https://.*.cdninstagram.com/.*/47690175_2275988962411653_1145978227188801192_n.jpg\\?.*$",
|
||||
actualText: content.imageUrl!)
|
||||
actualText: content.imageUrl!)
|
||||
|
||||
expectation.fulfill()
|
||||
}.catch { (error) in
|
||||
@ -439,9 +439,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData9() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://imgur.com/gallery/igHOwDM")
|
||||
linkPreviewManager.downloadLink(url: "https://imgur.com/gallery/igHOwDM")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Sheet dance")
|
||||
@ -460,9 +460,9 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
func testLinkParsingWithRealData10() {
|
||||
let expectation = self.expectation(description: "link download and parsing")
|
||||
|
||||
OWSLinkPreview.downloadLink(url: "https://www.pinterest.com/ohjoy/recipes/")
|
||||
linkPreviewManager.downloadLink(url: "https://www.pinterest.com/ohjoy/recipes/")
|
||||
.done { (linkData) in
|
||||
let content = try! OWSLinkPreview.parse(linkData: linkData)
|
||||
let content = try! self.linkPreviewManager.parse(linkData: linkData)
|
||||
XCTAssertNotNil(content)
|
||||
|
||||
XCTAssertEqual(content.title, "Recipes")
|
||||
@ -576,8 +576,45 @@ class OWSLinkPreviewTest: SSKBaseTestSwift {
|
||||
selectedRange: NSRange(location: 3, length: 0))
|
||||
}
|
||||
|
||||
var linkPreviewManager: OWSLinkPreviewManager {
|
||||
return SSKEnvironment.shared.linkPreviewManager
|
||||
}
|
||||
|
||||
private func Assert(bodyText: String, extractsLink link: String?, selectedRange: NSRange? = nil, file: StaticString = #file, line: UInt = #line) {
|
||||
let actual = OWSLinkPreview.previewUrl(forMessageBodyText: bodyText, selectedRange: selectedRange)
|
||||
let actual = linkPreviewManager.previewUrl(forMessageBodyText: bodyText, selectedRange: selectedRange)
|
||||
XCTAssertEqual(actual, link, file: file, line: line)
|
||||
}
|
||||
|
||||
private func Assert(validPreviewLink urlString: String, file: StaticString = #file, line: UInt = #line) {
|
||||
guard let url = URL(string: urlString) else {
|
||||
XCTFail("unparsable url", file: file, line: line)
|
||||
return
|
||||
}
|
||||
XCTAssertTrue(OWSLinkPreviewManager.isValidLink(url: url), file: file, line: line)
|
||||
}
|
||||
|
||||
private func Assert(invalidPreviewLink urlString: String, file: StaticString = #file, line: UInt = #line) {
|
||||
guard let url = URL(string: urlString) else {
|
||||
XCTFail("unparsable url", file: file, line: line)
|
||||
return
|
||||
}
|
||||
XCTAssertFalse(OWSLinkPreviewManager.isValidLink(url: url), file: file, line: line)
|
||||
}
|
||||
|
||||
private func Assert(validPreviewMedia urlString: String, file: StaticString = #file, line: UInt = #line) {
|
||||
guard let url = URL(string: urlString) else {
|
||||
XCTFail("unparsable url", file: file, line: line)
|
||||
return
|
||||
}
|
||||
XCTAssertTrue(OWSLinkPreviewManager.isValidMedia(url: url), file: file, line: line)
|
||||
}
|
||||
|
||||
private func Assert(invalidPreviewMedia urlString: String, file: StaticString = #file, line: UInt = #line) {
|
||||
guard let url = URL(string: urlString) else {
|
||||
XCTFail("unparsable url", file: file, line: line)
|
||||
return
|
||||
}
|
||||
XCTAssertFalse(OWSLinkPreviewManager.isValidMedia(url: url), file: file, line: line)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user