diff options
author | VirtualTam <virtualtam@flibidi.net> | 2016-08-12 23:22:15 +0200 |
---|---|---|
committer | ArthurHoaro <arthur@hoa.ro> | 2016-11-05 14:29:52 +0100 |
commit | c019d62970a5b618f44ac858b990b573645bd714 (patch) | |
tree | 789bb2047f008993f08b3854855d01aeeb67decf | |
parent | 24d8f65abea2c1251e250089f20e89034454926d (diff) | |
download | Shaarli-c019d62970a5b618f44ac858b990b573645bd714.tar.gz Shaarli-c019d62970a5b618f44ac858b990b573645bd714.tar.zst Shaarli-c019d62970a5b618f44ac858b990b573645bd714.zip |
Fix: ensure Internet Explorer bookmark dumps can be imported
Relates to https://github.com/shaarli/Shaarli/issues/607
Modifications:
- [application][tests] NetscapeBookmarkUtils: more permissive doctype detection
The IE bookmark exports contain extra escape sequences, which can be observed
by binary comparison of the reference input data used in tests:
$ cmp -b -l -n 8 netscape_basic.htm internet_explorer_encoding.htm
1 74 < 357 M-o
2 41 ! 273 M-;
3 104 D 277 M-?
4 117 O 74 <
5 103 C 41 !
6 124 T 104 D
7 131 Y 117 O
8 120 P 103 C
Signed-off-by: VirtualTam <virtualtam@flibidi.net>
-rw-r--r-- | application/NetscapeBookmarkUtils.php | 3 | ||||
-rw-r--r-- | tests/NetscapeBookmarkUtils/BookmarkImportTest.php | 28 | ||||
-rw-r--r-- | tests/NetscapeBookmarkUtils/input/internet_explorer_encoding.htm | 9 |
3 files changed, 38 insertions, 2 deletions
diff --git a/application/NetscapeBookmarkUtils.php b/application/NetscapeBookmarkUtils.php index b99a432e..c3181254 100644 --- a/application/NetscapeBookmarkUtils.php +++ b/application/NetscapeBookmarkUtils.php | |||
@@ -98,8 +98,7 @@ class NetscapeBookmarkUtils | |||
98 | $filesize = $files['filetoupload']['size']; | 98 | $filesize = $files['filetoupload']['size']; |
99 | $data = file_get_contents($files['filetoupload']['tmp_name']); | 99 | $data = file_get_contents($files['filetoupload']['tmp_name']); |
100 | 100 | ||
101 | // Sniff file type | 101 | if (strpos($data, '<!DOCTYPE NETSCAPE-Bookmark-file-1>') === false) { |
102 | if (! startsWith($data, '<!DOCTYPE NETSCAPE-Bookmark-file-1>')) { | ||
103 | return self::importStatus($filename, $filesize); | 102 | return self::importStatus($filename, $filesize); |
104 | } | 103 | } |
105 | 104 | ||
diff --git a/tests/NetscapeBookmarkUtils/BookmarkImportTest.php b/tests/NetscapeBookmarkUtils/BookmarkImportTest.php index 2d4e7557..f0ad500f 100644 --- a/tests/NetscapeBookmarkUtils/BookmarkImportTest.php +++ b/tests/NetscapeBookmarkUtils/BookmarkImportTest.php | |||
@@ -83,6 +83,34 @@ class BookmarkImportTest extends PHPUnit_Framework_TestCase | |||
83 | } | 83 | } |
84 | 84 | ||
85 | /** | 85 | /** |
86 | * Ensure IE dumps are supported | ||
87 | */ | ||
88 | public function testImportInternetExplorerEncoding() | ||
89 | { | ||
90 | $files = file2array('internet_explorer_encoding.htm'); | ||
91 | $this->assertEquals( | ||
92 | 'File internet_explorer_encoding.htm (356 bytes) was successfully processed:' | ||
93 | .' 1 links imported, 0 links overwritten, 0 links skipped.', | ||
94 | NetscapeBookmarkUtils::import(array(), $files, $this->linkDb, $this->pagecache) | ||
95 | ); | ||
96 | $this->assertEquals(1, count($this->linkDb)); | ||
97 | $this->assertEquals(0, count_private($this->linkDb)); | ||
98 | |||
99 | $this->assertEquals( | ||
100 | array( | ||
101 | 'linkdate' => '20160618_173944', | ||
102 | 'title' => 'Hg Init a Mercurial tutorial by Joel Spolsky', | ||
103 | 'url' => 'http://hginit.com/', | ||
104 | 'description' => '', | ||
105 | 'private' => 0, | ||
106 | 'tags' => '' | ||
107 | ), | ||
108 | $this->linkDb->getLinkFromUrl('http://hginit.com/') | ||
109 | ); | ||
110 | } | ||
111 | |||
112 | |||
113 | /** | ||
86 | * Import bookmarks nested in a folder hierarchy | 114 | * Import bookmarks nested in a folder hierarchy |
87 | */ | 115 | */ |
88 | public function testImportNested() | 116 | public function testImportNested() |
diff --git a/tests/NetscapeBookmarkUtils/input/internet_explorer_encoding.htm b/tests/NetscapeBookmarkUtils/input/internet_explorer_encoding.htm new file mode 100644 index 00000000..18703cf6 --- /dev/null +++ b/tests/NetscapeBookmarkUtils/input/internet_explorer_encoding.htm | |||
@@ -0,0 +1,9 @@ | |||
1 | <!DOCTYPE NETSCAPE-Bookmark-file-1> | ||
2 | <!-- This is an automatically generated file. | ||
3 | It will be read and overwritten. | ||
4 | Do Not Edit! --> | ||
5 | <TITLE>Bookmarks</TITLE> | ||
6 | <H1>Bookmarks</H1> | ||
7 | <DL><p> | ||
8 | <DT><A HREF="http://hginit.com/" ADD_DATE="1466271584" LAST_VISIT="1466271584" LAST_MODIFIED="1466271584" >Hg Init a Mercurial tutorial by Joel Spolsky</A> | ||
9 | </DL><p> | ||