test('test list releases for org/repo with multi-page', t => { t.plan(13) const auth = { user: '******', token: 'authtoken' } const org = 'testorg' const repo = 'testrepo' const testData = [ { response: [ { test3: 'data3' }, { test4: 'data4' } ], headers: { link: '<https://somenexturl>; rel="next"' } }, { response: [ { test5: 'data5' }, { test6: 'data6' } ], headers: { link: '<https://somenexturl2>; rel="next"' } }, [] ] ghutils.makeServer(testData) .on('ready', () => { var result = testData[0].response.concat(testData[1].response) ghreleases.list(xtend(auth), org, repo, ghutils.verifyData(t, result)) }) .on('request', ghutils.verifyRequest(t, auth)) .on('get', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/' + org + '/' + repo + '/releases', 'https://somenexturl', 'https://somenexturl2' ])) .on('close', ghutils.verifyClose(t)) })
test('create release', t => { t.plan(8) const auth = { user: '******', token: 'authtoken' } const org = 'testorg' const repo = 'testrepo' const testData = { tag_name: '1.2.3-test', name: 'Release name for 1.2.3-test', body: 'Body text of release goes here' } ghutils.makeServer(testData) .on('ready', () => { ghreleases.create(xtend(auth), org, repo, testData, ghutils.verifyData(t, testData)) }) .on('request', ghutils.verifyRequest(t, auth)) .on('post', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/' + org + '/' + repo + '/releases' ])) .on('post', (url, data) => { t.deepEqual(data, testData) }) .on('close', ghutils.verifyClose(t)) })
test('uploading assets', t => { t.plan(15) const auth = { user: '******', token: 'authtoken' } const org = 'testorg' const repo = 'testrepo' const testData = [ { upload_url: 'https://upload_url/path{?name}' }, { test5: 'data5' }, { test6: 'data6' } ] const ref = 'tags/v1.3.0' const files = [ 'test.js', 'README.md' ] var postCount = 0 ghutils.makeServer(testData) .on('ready', () => { ghreleases.uploadAssets(xtend(auth), org, repo, ref, files, ghutils.verifyData(t, [ testData[1], testData[2] ])) }) .on('request', ghutils.verifyRequest(t, auth)) .on('get', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/' + org + '/' + repo + '/releases/' + ref ])) .on('post', (url, data, options) => { t.equal(url, 'https://upload_url/path?name=' + files[postCount++]) t.equal(typeof data.pipe, 'function', 'should be a stream') }) .on('close', ghutils.verifyClose(t)) })
test('test list issues', function (t) { t.plan(10) var auth = { user: '******', token: 'authtoken' } , org = 'testorg' , repo = 'testrepo' , testData = [ { response : [ { test1: 'data1' }, { test2: 'data2' } ] , headers : { link: '<https://api.github.com/repos/testorg/testrepo/issues?page=2>; rel="next"' } } , { response: [] } ] , server server = ghutils.makeServer(testData) .on('ready', function () { ghissues.list(xtend(auth), org, repo, ghutils.verifyData(t, testData[0].response)) }) .on('request', ghutils.verifyRequest(t, auth)) .on('get', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/testorg/testrepo/issues?page=1' , 'https://api.github.com/repos/testorg/testrepo/issues?page=2' ])) .on('close' , ghutils.verifyClose(t)) })
test('test create new comment', function (t) { t.plan(9) var auth = { user: '******', token: 'authtoken' } , org = 'testorg' , repo = 'testrepo' , testData = 'comment body' , num = 303 , resp = 'herpderp' , server server = ghutils.makeServer(resp) .on('ready', function () { ghissues.createComment(xtend(auth), org, repo, num, testData, ghutils.verifyData(t, resp)) }) .on('request', ghutils.verifyRequest(t, auth)) .on('request', function (req) { req.pipe(bl(function (err, data) { t.notOk(err, 'no error') t.deepEqual(JSON.parse(data.toString()), {body:testData}, 'got expected post data') })) }) .on('post', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/testorg/testrepo/issues/' + num + '/comments' ])) .on('close' , ghutils.verifyClose(t)) })
test('get latest release', t => { t.plan(7) const auth = { user: '******', token: 'authtoken' } const org = 'testorg' const repo = 'testrepo' const testData = { test: 'data' } ghutils.makeServer(testData) .on('ready', () => { ghreleases.getLatest(xtend(auth), org, repo, ghutils.verifyData(t, testData)) }) .on('request', ghutils.verifyRequest(t, auth)) .on('get', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/' + org + '/' + repo + '/releases/latest' ])) .on('close', ghutils.verifyClose(t)) })
test('test list no issues', function (t) { t.plan(7) var auth = { user: '******', token: 'authtoken' } , org = 'testorg' , repo = 'testrepo' , testData = [ [] ] , server server = ghutils.makeServer(testData) .on('ready', function () { ghissues.list(xtend(auth), org, repo, ghutils.verifyData(t, [])) }) .on('request', ghutils.verifyRequest(t, auth)) .on('get', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/testorg/testrepo/issues?page=1' ])) .on('close' , ghutils.verifyClose(t)) })
test('get release by tag', function (t) { t.plan(7) var auth = { user: '******', token: 'authtoken' } , org = 'testorg' , repo = 'testrepo' , testData = { test: 'data' } , tag = 'v1.0.0' , server server = ghutils.makeServer(testData) .on('ready', function () { ghreleases.getByTag(xtend(auth), org, repo, tag, ghutils.verifyData(t, testData)) }) .on('request', ghutils.verifyRequest(t, auth)) .on('get', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/' + org + '/' + repo + '/releases/tags/' + tag ])) .on('close' , ghutils.verifyClose(t)) })
test('test get issue by id', function (t) { t.plan(7) var auth = { user: '******', token: 'authtoken' } , org = 'testorg' , repo = 'testrepo' , num = 101 , testData = { id: num, issue: 'body' } , server server = ghutils.makeServer(testData) .on('ready', function () { ghissues.get(xtend(auth), org, repo, num, ghutils.verifyData(t, testData)) }) .on('request', ghutils.verifyRequest(t, auth)) .on('get', ghutils.verifyUrl(t, [ 'https://api.github.com/repos/testorg/testrepo/issues/' + num ])) .on('close' , ghutils.verifyClose(t)) })