2017-11-20 06:10:04 +01:00
// Copyright 2017 Frédéric Guillot. All rights reserved.
// Use of this source code is governed by the Apache 2.0
// license that can be found in the LICENSE file.
2018-08-25 06:51:50 +02:00
package rewrite // import "miniflux.app/reader/rewrite"
2017-11-20 06:10:04 +01:00
import "testing"
2018-10-09 05:47:10 +02:00
func TestReplaceTextLinks ( t * testing . T ) {
scenarios := map [ string ] string {
` This is a link to example.org ` : ` This is a link to example.org ` ,
` This is a link to ftp://example.org ` : ` This is a link to ftp://example.org ` ,
` This is a link to www.example.org ` : ` This is a link to www.example.org ` ,
` This is a link to http://example.org ` : ` This is a link to <a href="http://example.org">http://example.org</a> ` ,
` This is a link to http://example.org, end of sentence. ` : ` This is a link to <a href="http://example.org">http://example.org</a>, end of sentence. ` ,
` This is a link to https://example.org ` : ` This is a link to <a href="https://example.org">https://example.org</a> ` ,
` This is a link to https://www.example.org/path/to?q=s ` : ` This is a link to <a href="https://www.example.org/path/to?q=s">https://www.example.org/path/to?q=s</a> ` ,
` This is a link to https://example.org/index#hash-tag, http://example.org/. ` : ` This is a link to <a href="https://example.org/index#hash-tag">https://example.org/index#hash-tag</a>, <a href="http://example.org/">http://example.org/</a>. ` ,
}
for input , expected := range scenarios {
actual := replaceTextLinks ( input )
if actual != expected {
t . Errorf ( ` Unexpected link replacement, got "%s" instead of "%s" ` , actual , expected )
}
}
}
2017-11-20 06:10:04 +01:00
func TestRewriteWithNoMatchingRule ( t * testing . T ) {
2017-12-12 07:16:32 +01:00
output := Rewriter ( "https://example.org/article" , ` Some text. ` , ` ` )
2017-11-20 06:10:04 +01:00
expected := ` Some text. `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
func TestRewriteWithYoutubeLink ( t * testing . T ) {
2018-10-09 05:47:10 +02:00
output := Rewriter ( "https://www.youtube.com/watch?v=1234" , "Video Description\nhttp://example.org/path" , ` ` )
expected := ` <iframe width="650" height="350" frameborder="0" src="https://www.youtube-nocookie.com/embed/1234" allowfullscreen></iframe><p>Video Description<br><a href="http://example.org/path">http://example.org/path</a></p> `
2017-11-20 06:10:04 +01:00
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2017-12-12 07:16:32 +01:00
func TestRewriteWithInexistingCustomRule ( t * testing . T ) {
output := Rewriter ( "https://www.youtube.com/watch?v=1234" , ` Video Description ` , ` some rule ` )
expected := ` Video Description `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2017-11-20 06:10:04 +01:00
func TestRewriteWithXkcdLink ( t * testing . T ) {
description := ` <img src="https://imgs.xkcd.com/comics/thermostat.png" title="Your problem is so terrible, I worry that, if I help you, I risk drawing the attention of whatever god of technology inflicted it on you." alt="Your problem is so terrible, I worry that, if I help you, I risk drawing the attention of whatever god of technology inflicted it on you." /> `
2017-12-12 07:16:32 +01:00
output := Rewriter ( "https://xkcd.com/1912/" , description , ` ` )
2018-06-26 23:39:56 +02:00
expected := ` <figure><img src="https://imgs.xkcd.com/comics/thermostat.png" alt="Your problem is so terrible, I worry that, if I help you, I risk drawing the attention of whatever god of technology inflicted it on you."/><figcaption><p>Your problem is so terrible, I worry that, if I help you, I risk drawing the attention of whatever god of technology inflicted it on you.</p></figcaption></figure> `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2018-07-09 07:22:48 +02:00
2019-08-14 09:33:54 +02:00
func TestRewriteWithXkcdLinkHtmlInjection ( t * testing . T ) {
description := ` <img src="https://imgs.xkcd.com/comics/thermostat.png" title="<foo>" alt="<foo>" /> `
output := Rewriter ( "https://xkcd.com/1912/" , description , ` ` )
expected := ` <figure><img src="https://imgs.xkcd.com/comics/thermostat.png" alt="<foo>"/><figcaption><p><foo></p></figcaption></figure> `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2018-06-26 23:39:56 +02:00
func TestRewriteWithXkcdLinkAndImageNoTitle ( t * testing . T ) {
description := ` <img src="https://imgs.xkcd.com/comics/thermostat.png" alt="Your problem is so terrible, I worry that, if I help you, I risk drawing the attention of whatever god of technology inflicted it on you." /> `
output := Rewriter ( "https://xkcd.com/1912/" , description , ` ` )
expected := description
2017-11-20 06:10:04 +01:00
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2018-07-09 07:22:48 +02:00
2017-12-12 07:16:32 +01:00
func TestRewriteWithXkcdLinkAndNoImage ( t * testing . T ) {
description := "test"
output := Rewriter ( "https://xkcd.com/1912/" , description , ` ` )
expected := description
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
func TestRewriteWithXkcdAndNoImage ( t * testing . T ) {
description := "test"
output := Rewriter ( "https://xkcd.com/1912/" , description , ` ` )
expected := description
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2017-12-14 06:30:40 +01:00
2019-08-13 17:44:23 +02:00
func TestRewriteMailtoLink ( t * testing . T ) {
description := ` <a href="mailto:ryan@qwantz.com?subject=blah%20blah">contact</a> `
output := Rewriter ( "https://www.qwantz.com/" , description , ` ` )
expected := ` <a href="mailto:ryan@qwantz.com?subject=blah%20blah">contact [blah blah]</a> `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2017-12-14 06:30:40 +01:00
func TestRewriteWithPDFLink ( t * testing . T ) {
description := "test"
output := Rewriter ( "https://example.org/document.pdf" , description , ` ` )
expected := ` <a href="https://example.org/document.pdf">PDF</a><br>test `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2018-07-09 07:22:48 +02:00
func TestRewriteWithNoLazyImage ( t * testing . T ) {
description := ` <img src="https://example.org/image.jpg" alt="Image"><noscript><p>Some text</p></noscript> `
output := Rewriter ( "https://example.org/article" , description , "add_dynamic_image" )
expected := description
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
func TestRewriteWithLazyImage ( t * testing . T ) {
description := ` <img src="" data-url="https://example.org/image.jpg" alt="Image"><noscript><img src="https://example.org/fallback.jpg" alt="Fallback"></noscript> `
output := Rewriter ( "https://example.org/article" , description , "add_dynamic_image" )
expected := ` <img src="https://example.org/image.jpg" data-url="https://example.org/image.jpg" alt="Image"/><noscript><img src="https://example.org/fallback.jpg" alt="Fallback"></noscript> `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
func TestRewriteWithLazyDivImage ( t * testing . T ) {
description := ` <div data-url="https://example.org/image.jpg" alt="Image"></div><noscript><img src="https://example.org/fallback.jpg" alt="Fallback"></noscript> `
output := Rewriter ( "https://example.org/article" , description , "add_dynamic_image" )
expected := ` <img src="https://example.org/image.jpg" alt="Image"/><noscript><img src="https://example.org/fallback.jpg" alt="Fallback"></noscript> `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
func TestRewriteWithUnknownLazyNoScriptImage ( t * testing . T ) {
description := ` <img src="" data-non-candidate="https://example.org/image.jpg" alt="Image"><noscript><img src="https://example.org/fallback.jpg" alt="Fallback"></noscript> `
output := Rewriter ( "https://example.org/article" , description , "add_dynamic_image" )
expected := ` <img src="" data-non-candidate="https://example.org/image.jpg" alt="Image"/><img src="https://example.org/fallback.jpg" alt="Fallback"/> `
if expected != output {
t . Errorf ( ` Not expected output: got "%s" instead of "%s" ` , output , expected )
}
}
2019-11-29 05:11:39 +01:00
func TestNewLineRewriteRule ( t * testing . T ) {
description := "A\nB\nC"
output := Rewriter ( "https://example.org/article" , description , "nl2br" )
expected := ` A<br>B<br>C `
if expected != output {
t . Errorf ( ` Not expected output: got %q instead of %q ` , output , expected )
}
}
func TestConvertTextLinkRewriteRule ( t * testing . T ) {
description := "Test: http://example.org/a/b"
output := Rewriter ( "https://example.org/article" , description , "convert_text_link" )
expected := ` Test: <a href="http://example.org/a/b">http://example.org/a/b</a> `
if expected != output {
t . Errorf ( ` Not expected output: got %q instead of %q ` , output , expected )
}
}