{"action":"created","comment":{"url":"https://api.github.com/repos/scality/S3/pulls/comments/95713840","pull_request_review_id":16278363,"id":95713840,"diff_hunk":"@@ -349,5 +348,104 @@ describe('GET Bucket - AWS.S3.listObjects', () => {\n                 })\n                 .catch(done);\n         });\n+\n+        ['&amp', ';quot', '\\'apos', '<lt', '>gt'].forEach(k => {\n+            it(`should list objects with key ${k} as Prefix`, done => {\n+                const s3 = bucketUtil.s3;\n+                const Bucket = bucketName;\n+                const objects = [{ Bucket, Key: k }];\n+\n+                Promise\n+                    .mapSeries(objects, param => s3.putObjectAsync(param))\n+                    .then(() => s3.listObjectsAsync({ Bucket, Prefix: k }))\n+                    .then(data => {\n+                        const isValidResponse = tv4.validate(data,\n+                            bucketSchema);\n+                        if (!isValidResponse) {\n+                            throw new Error(tv4.error);\n+                        }\n+                        return data;\n+                    }).then(data => {\n+                        assert.deepStrictEqual(data.Prefix, k);\n+                        done();\n+                    })\n+                    .catch(done);\n+            });\n+        });\n+\n+        ['&amp', ';quot', '\\'apos', '<lt', '>gt'].forEach(k => {\n+            it(`should list objects with key ${k} as Marker`, done => {\n+                const s3 = bucketUtil.s3;\n+                const Bucket = bucketName;\n+                const objects = [{ Bucket, Key: k }];\n+\n+                Promise\n+                    .mapSeries(objects, param => s3.putObjectAsync(param))\n+                    .then(() => s3.listObjectsAsync({ Bucket, Marker: k }))\n+                    .then(data => {\n+                        const isValidResponse = tv4.validate(data,\n+                            bucketSchema);\n+                        if (!isValidResponse) {\n+                            throw new Error(tv4.error);\n+                        }\n+                        return data;\n+                    }).then(data => {\n+                        assert.deepStrictEqual(data.Marker, k);\n+                        done();\n+                    })\n+                    .catch(done);\n+            });\n+        });\n+\n+        ['&amp', ';quot', '\\'apos', '<lt', '>gt'].forEach(k => {\n+            it(`should list objects with key ${k} as NextMarker`, done => {\n+                const s3 = bucketUtil.s3;\n+                const Bucket = bucketName;\n+                const objects = [{ Bucket, Key: k }, { Bucket, Key: 'zzz' }];\n+\n+                Promise\n+                    .mapSeries(objects, param => s3.putObjectAsync(param))\n+                    .then(() => s3.listObjectsAsync({ Bucket, MaxKeys: 1 }))\n+                    .then(data => {\n+                        const isValidResponse = tv4.validate(data,\n+                            bucketSchema);\n+                        if (!isValidResponse) {\n+                            throw new Error(tv4.error);\n+                        }\n+                        return data;\n+                    }).then(data => {\n+                        assert.strictEqual(data.NextMarker, k);\n+                        done();\n+                    })\n+                    .catch(done);\n+            });\n+        });\n+\n+        it('should list objects with special chars in CommonPrefixes', done => {\n+            const s3 = bucketUtil.s3;\n+            const Bucket = bucketName;\n+            const objects = [{ Bucket, Key: '&amp#' },\n+            { Bucket, Key: ';quot#' }, { Bucket, Key: '\\'apos#' },\n+            { Bucket, Key: '<lt#' }, { Bucket, Key: '<lt#' },","path":"tests/functional/aws-node-sdk/test/bucket/get.js","position":90,"original_position":90,"commit_id":"85f3d3140decc33eb76d60cd9e74b23e9e158f57","original_commit_id":"85f3d3140decc33eb76d60cd9e74b23e9e158f57","user":{"login":"bennettbuchanan","id":15207067,"avatar_url":"https://avatars.githubusercontent.com/u/15207067?v=3","gravatar_id":"","url":"https://api.github.com/users/bennettbuchanan","html_url":"https://github.com/bennettbuchanan","followers_url":"https://api.github.com/users/bennettbuchanan/followers","following_url":"https://api.github.com/users/bennettbuchanan/following{/other_user}","gists_url":"https://api.github.com/users/bennettbuchanan/gists{/gist_id}","starred_url":"https://api.github.com/users/bennettbuchanan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bennettbuchanan/subscriptions","organizations_url":"https://api.github.com/users/bennettbuchanan/orgs","repos_url":"https://api.github.com/users/bennettbuchanan/repos","events_url":"https://api.github.com/users/bennettbuchanan/events{/privacy}","received_events_url":"https://api.github.com/users/bennettbuchanan/received_events","type":"User","site_admin":false},"body":"Some duplicate objects here","created_at":"2017-01-12T02:09:39Z","updated_at":"2017-01-12T02:09:39Z","html_url":"https://github.com/scality/S3/pull/520#discussion_r95713840","pull_request_url":"https://api.github.com/repos/scality/S3/pulls/520","_links":{"self":{"href":"https://api.github.com/repos/scality/S3/pulls/comments/95713840"},"html":{"href":"https://github.com/scality/S3/pull/520#discussion_r95713840"},"pull_request":{"href":"https://api.github.com/repos/scality/S3/pulls/520"}}},"pull_request":{"url":"https://api.github.com/repos/scality/S3/pulls/520","id":101180300,"html_url":"https://github.com/scality/S3/pull/520","diff_url":"https://github.com/scality/S3/pull/520.diff","patch_url":"https://github.com/scality/S3/pull/520.patch","issue_url":"https://api.github.com/repos/scality/S3/issues/520","number":520,"state":"open","locked":false,"title":"fix: escape invalid xml characters","user":{"login":"rahulreddy","id":914178,"avatar_url":"https://avatars.githubusercontent.com/u/914178?v=3","gravatar_id":"","url":"https://api.github.com/users/rahulreddy","html_url":"https://github.com/rahulreddy","followers_url":"https://api.github.com/users/rahulreddy/followers","following_url":"https://api.github.com/users/rahulreddy/following{/other_user}","gists_url":"https://api.github.com/users/rahulreddy/gists{/gist_id}","starred_url":"https://api.github.com/users/rahulreddy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rahulreddy/subscriptions","organizations_url":"https://api.github.com/users/rahulreddy/orgs","repos_url":"https://api.github.com/users/rahulreddy/repos","events_url":"https://api.github.com/users/rahulreddy/events{/privacy}","received_events_url":"https://api.github.com/users/rahulreddy/received_events","type":"User","site_admin":false},"body":"fixes #519","created_at":"2017-01-12T01:20:57Z","updated_at":"2017-01-12T02:09:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"22bc71288bc49c31ad58b559a8d0b244660f3278","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/scality/S3/pulls/520/commits","review_comments_url":"https://api.github.com/repos/scality/S3/pulls/520/comments","review_comment_url":"https://api.github.com/repos/scality/S3/pulls/comments{/number}","comments_url":"https://api.github.com/repos/scality/S3/issues/520/comments","statuses_url":"https://api.github.com/repos/scality/S3/statuses/85f3d3140decc33eb76d60cd9e74b23e9e158f57","head":{"label":"scality:fix/listingXMLErrors","ref":"fix/listingXMLErrors","sha":"85f3d3140decc33eb76d60cd9e74b23e9e158f57","user":{"login":"scality","id":383812,"avatar_url":"https://avatars.githubusercontent.com/u/383812?v=3","gravatar_id":"","url":"https://api.github.com/users/scality","html_url":"https://github.com/scality","followers_url":"https://api.github.com/users/scality/followers","following_url":"https://api.github.com/users/scality/following{/other_user}","gists_url":"https://api.github.com/users/scality/gists{/gist_id}","starred_url":"https://api.github.com/users/scality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scality/subscriptions","organizations_url":"https://api.github.com/users/scality/orgs","repos_url":"https://api.github.com/users/scality/repos","events_url":"https://api.github.com/users/scality/events{/privacy}","received_events_url":"https://api.github.com/users/scality/received_events","type":"Organization","site_admin":false},"repo":{"id":60165924,"name":"S3","full_name":"scality/S3","owner":{"login":"scality","id":383812,"avatar_url":"https://avatars.githubusercontent.com/u/383812?v=3","gravatar_id":"","url":"https://api.github.com/users/scality","html_url":"https://github.com/scality","followers_url":"https://api.github.com/users/scality/followers","following_url":"https://api.github.com/users/scality/following{/other_user}","gists_url":"https://api.github.com/users/scality/gists{/gist_id}","starred_url":"https://api.github.com/users/scality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scality/subscriptions","organizations_url":"https://api.github.com/users/scality/orgs","repos_url":"https://api.github.com/users/scality/repos","events_url":"https://api.github.com/users/scality/events{/privacy}","received_events_url":"https://api.github.com/users/scality/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scality/S3","description":"An open-source Node.js implementation of a server handling the S3 protocol","fork":false,"url":"https://api.github.com/repos/scality/S3","forks_url":"https://api.github.com/repos/scality/S3/forks","keys_url":"https://api.github.com/repos/scality/S3/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scality/S3/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scality/S3/teams","hooks_url":"https://api.github.com/repos/scality/S3/hooks","issue_events_url":"https://api.github.com/repos/scality/S3/issues/events{/number}","events_url":"https://api.github.com/repos/scality/S3/events","assignees_url":"https://api.github.com/repos/scality/S3/assignees{/user}","branches_url":"https://api.github.com/repos/scality/S3/branches{/branch}","tags_url":"https://api.github.com/repos/scality/S3/tags","blobs_url":"https://api.github.com/repos/scality/S3/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scality/S3/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scality/S3/git/refs{/sha}","trees_url":"https://api.github.com/repos/scality/S3/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scality/S3/statuses/{sha}","languages_url":"https://api.github.com/repos/scality/S3/languages","stargazers_url":"https://api.github.com/repos/scality/S3/stargazers","contributors_url":"https://api.github.com/repos/scality/S3/contributors","subscribers_url":"https://api.github.com/repos/scality/S3/subscribers","subscription_url":"https://api.github.com/repos/scality/S3/subscription","commits_url":"https://api.github.com/repos/scality/S3/commits{/sha}","git_commits_url":"https://api.github.com/repos/scality/S3/git/commits{/sha}","comments_url":"https://api.github.com/repos/scality/S3/comments{/number}","issue_comment_url":"https://api.github.com/repos/scality/S3/issues/comments{/number}","contents_url":"https://api.github.com/repos/scality/S3/contents/{+path}","compare_url":"https://api.github.com/repos/scality/S3/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scality/S3/merges","archive_url":"https://api.github.com/repos/scality/S3/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scality/S3/downloads","issues_url":"https://api.github.com/repos/scality/S3/issues{/number}","pulls_url":"https://api.github.com/repos/scality/S3/pulls{/number}","milestones_url":"https://api.github.com/repos/scality/S3/milestones{/number}","notifications_url":"https://api.github.com/repos/scality/S3/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scality/S3/labels{/name}","releases_url":"https://api.github.com/repos/scality/S3/releases{/id}","deployments_url":"https://api.github.com/repos/scality/S3/deployments","created_at":"2016-06-01T09:58:56Z","updated_at":"2017-01-10T08:51:43Z","pushed_at":"2017-01-12T01:45:20Z","git_url":"git://github.com/scality/S3.git","ssh_url":"git@github.com:scality/S3.git","clone_url":"https://github.com/scality/S3.git","svn_url":"https://github.com/scality/S3","homepage":"http://s3.scality.com","size":14493,"stargazers_count":314,"watchers_count":314,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":44,"mirror_url":null,"open_issues_count":34,"forks":44,"open_issues":34,"watchers":314,"default_branch":"master"}},"base":{"label":"scality:rel/6.2.5","ref":"rel/6.2.5","sha":"e9be5be2e473bafc0ddee52a5dffd902ede5067f","user":{"login":"scality","id":383812,"avatar_url":"https://avatars.githubusercontent.com/u/383812?v=3","gravatar_id":"","url":"https://api.github.com/users/scality","html_url":"https://github.com/scality","followers_url":"https://api.github.com/users/scality/followers","following_url":"https://api.github.com/users/scality/following{/other_user}","gists_url":"https://api.github.com/users/scality/gists{/gist_id}","starred_url":"https://api.github.com/users/scality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scality/subscriptions","organizations_url":"https://api.github.com/users/scality/orgs","repos_url":"https://api.github.com/users/scality/repos","events_url":"https://api.github.com/users/scality/events{/privacy}","received_events_url":"https://api.github.com/users/scality/received_events","type":"Organization","site_admin":false},"repo":{"id":60165924,"name":"S3","full_name":"scality/S3","owner":{"login":"scality","id":383812,"avatar_url":"https://avatars.githubusercontent.com/u/383812?v=3","gravatar_id":"","url":"https://api.github.com/users/scality","html_url":"https://github.com/scality","followers_url":"https://api.github.com/users/scality/followers","following_url":"https://api.github.com/users/scality/following{/other_user}","gists_url":"https://api.github.com/users/scality/gists{/gist_id}","starred_url":"https://api.github.com/users/scality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scality/subscriptions","organizations_url":"https://api.github.com/users/scality/orgs","repos_url":"https://api.github.com/users/scality/repos","events_url":"https://api.github.com/users/scality/events{/privacy}","received_events_url":"https://api.github.com/users/scality/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scality/S3","description":"An open-source Node.js implementation of a server handling the S3 protocol","fork":false,"url":"https://api.github.com/repos/scality/S3","forks_url":"https://api.github.com/repos/scality/S3/forks","keys_url":"https://api.github.com/repos/scality/S3/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scality/S3/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scality/S3/teams","hooks_url":"https://api.github.com/repos/scality/S3/hooks","issue_events_url":"https://api.github.com/repos/scality/S3/issues/events{/number}","events_url":"https://api.github.com/repos/scality/S3/events","assignees_url":"https://api.github.com/repos/scality/S3/assignees{/user}","branches_url":"https://api.github.com/repos/scality/S3/branches{/branch}","tags_url":"https://api.github.com/repos/scality/S3/tags","blobs_url":"https://api.github.com/repos/scality/S3/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scality/S3/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scality/S3/git/refs{/sha}","trees_url":"https://api.github.com/repos/scality/S3/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scality/S3/statuses/{sha}","languages_url":"https://api.github.com/repos/scality/S3/languages","stargazers_url":"https://api.github.com/repos/scality/S3/stargazers","contributors_url":"https://api.github.com/repos/scality/S3/contributors","subscribers_url":"https://api.github.com/repos/scality/S3/subscribers","subscription_url":"https://api.github.com/repos/scality/S3/subscription","commits_url":"https://api.github.com/repos/scality/S3/commits{/sha}","git_commits_url":"https://api.github.com/repos/scality/S3/git/commits{/sha}","comments_url":"https://api.github.com/repos/scality/S3/comments{/number}","issue_comment_url":"https://api.github.com/repos/scality/S3/issues/comments{/number}","contents_url":"https://api.github.com/repos/scality/S3/contents/{+path}","compare_url":"https://api.github.com/repos/scality/S3/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scality/S3/merges","archive_url":"https://api.github.com/repos/scality/S3/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scality/S3/downloads","issues_url":"https://api.github.com/repos/scality/S3/issues{/number}","pulls_url":"https://api.github.com/repos/scality/S3/pulls{/number}","milestones_url":"https://api.github.com/repos/scality/S3/milestones{/number}","notifications_url":"https://api.github.com/repos/scality/S3/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scality/S3/labels{/name}","releases_url":"https://api.github.com/repos/scality/S3/releases{/id}","deployments_url":"https://api.github.com/repos/scality/S3/deployments","created_at":"2016-06-01T09:58:56Z","updated_at":"2017-01-10T08:51:43Z","pushed_at":"2017-01-12T01:45:20Z","git_url":"git://github.com/scality/S3.git","ssh_url":"git@github.com:scality/S3.git","clone_url":"https://github.com/scality/S3.git","svn_url":"https://github.com/scality/S3","homepage":"http://s3.scality.com","size":14493,"stargazers_count":314,"watchers_count":314,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":44,"mirror_url":null,"open_issues_count":34,"forks":44,"open_issues":34,"watchers":314,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scality/S3/pulls/520"},"html":{"href":"https://github.com/scality/S3/pull/520"},"issue":{"href":"https://api.github.com/repos/scality/S3/issues/520"},"comments":{"href":"https://api.github.com/repos/scality/S3/issues/520/comments"},"review_comments":{"href":"https://api.github.com/repos/scality/S3/pulls/520/comments"},"review_comment":{"href":"https://api.github.com/repos/scality/S3/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/scality/S3/pulls/520/commits"},"statuses":{"href":"https://api.github.com/repos/scality/S3/statuses/85f3d3140decc33eb76d60cd9e74b23e9e158f57"}}}}
{"actor":{"display_login":"bennettbuchanan"}}