dotfiles/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releasesTest.js
Cyryl Płotnicki 280bcab25f VSCode update
2016-09-24 13:12:34 +02:00

262 lines
8.2 KiB
JavaScript

/*
* Copyright 2012 Cloud9 IDE, Inc.
*
* This product includes software developed by
* Cloud9 IDE, Inc (http://c9.io).
*
* Author: Mike de Boer <info@mikedeboer.nl>
*/
"use strict";
var Assert = require("assert");
var Client = require("./../../index");
var fs = require("fs");
var mime = require("mime");
describe("[releases]", function() {
var client;
var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba";
var owner = "greggman";
var repo = "test";
var haveWriteAccess = true; // set to false if the authenticated person below does not have write access to the repo above
var releaseIdWithAsset = 393621; // Some release id from the repo above that has at least 1 asset.
var filePathToUpload = __filename;
var fileSizeToUpload = fs.statSync(filePathToUpload).size;
var releaseId; // release id found when listing releases. Used for get release
var newReleaseId; // release id created when creating release, used for edit and delete release
var assetId; // asset id found when listing assets. Used for get asset
var newAssetId; // asset id used when creating asset. Used for edit and delete asset
beforeEach(function() {
client = new Client({
version: "3.0.0"
});
client.authenticate({
type: "oauth",
token: token
});
});
it("should successfully execute GET /repos/:owner/:repo/releases (listReleases)", function(next) {
client.releases.listReleases(
{
owner: owner,
repo: repo,
},
function(err, res) {
Assert.equal(err, null);
Assert.ok(res instanceof Array);
if (res instanceof Array && res.length > 0) {
releaseId = res[0].id;
}
next();
}
);
});
it("should successfully execute GET /repos/:owner/:repo/releases/:id (getRelease)", function(next) {
if (!releaseId) {
next();
return;
}
client.releases.getRelease(
{
owner: owner,
id: releaseId,
repo: repo
},
function(err, res) {
Assert.equal(err, null);
Assert.equal(res.id, releaseId);
next();
}
);
});
it("should successfully execute POST /repos/:owner/:repo/releases (createRelease)", function(next) {
if (!haveWriteAccess) {
next();
return;
}
client.releases.createRelease(
{
owner: owner,
repo: repo,
tag_name: "node-github-tag",
target_commitish: "master",
name: "node-github-name",
body: "node-github-body",
draft: false,
prerelease: true,
},
function(err, res) {
Assert.equal(err, null);
Assert.equal(res.tag_name, "node-github-tag");
Assert.equal(res.target_commitish, "master");
Assert.equal(res.name, "node-github-name");
Assert.equal(res.body, "node-github-body");
Assert.equal(res.assets.length, 0);
Assert.ok(res.prerelease);
Assert.ok(!res.draft);
newReleaseId = res.id;
next();
}
);
});
it("should successfully execute PATCH /repos/:owner/:repo/releases/:id (editRelease)", function(next) {
if (!haveWriteAccess) {
next();
return;
}
client.releases.editRelease(
{
owner: owner,
id: newReleaseId,
repo: repo,
tag_name: "node-github-new-tag",
target_commitish: "master",
name: "node-github-new-name",
body: "node-github-new-body",
draft: true,
prerelease: true,
},
function(err, res) {
Assert.equal(err, null);
Assert.equal(res.id, newReleaseId);
Assert.equal(res.tag_name, "node-github-new-tag");
Assert.equal(res.target_commitish, "master");
Assert.equal(res.name, "node-github-new-name");
Assert.equal(res.body, "node-github-new-body");
Assert.equal(res.assets.length, 0);
Assert.ok(res.prerelease);
Assert.ok(res.draft);
next();
}
);
});
it("should successfully execute DELETE /repos/:owner/:repo/releases/:id (deleteRelease)", function(next) {
if (!haveWriteAccess) {
next();
return;
}
client.releases.deleteRelease(
{
owner: owner,
repo: repo,
id: newReleaseId,
},
function(err, res) {
Assert.equal(err, null);
next();
}
);
});
it("should successfully execute GET /repos/:owner/:repo/releases/:id/assets (listAssets)", function(next) {
client.releases.listAssets(
{
owner: owner,
id: releaseIdWithAsset,
repo: repo
},
function(err, res) {
Assert.equal(err, null);
Assert.ok(res instanceof Array);
if (res instanceof Array && res.length > 0) {
assetId = res[0].id;
}
next();
}
);
});
it("should successfully execute GET /repos/:owner/:repo/releases/assets/:id (getAsset)", function(next) {
if (!assetId) {
next();
return;
}
client.releases.getAsset(
{
owner: owner,
id: assetId,
repo: repo
},
function(err, res) {
Assert.equal(err, null);
Assert.equal(res.id, assetId);
next();
}
);
});
it("should successfully execute POST /repos/:owner/:repo/releases/:id/assets (uploadAsset)", function(next) {
var name = "somenameornot.zip";
client.releases.uploadAsset(
{
owner: owner,
id: releaseIdWithAsset,
repo: repo,
name: name,
filePath: filePathToUpload
},
function(err, res) {
Assert.equal(err, null);
Assert.equal(res.content_type, mime.lookup(name)); // matches extension of name, not filePath
Assert.equal(res.state, "uploaded");
Assert.equal(res.size, fileSizeToUpload);
Assert.equal(res.name, name);
newAssetId = res.id;
next();
}
);
});
it("should successfully execute PATCH /repos/:owner/:repo/releases/assets/:id (editAsset)", function(next) {
if (!newAssetId) {
next();
return;
}
var newName = "somenewname.zip";
client.releases.editAsset(
{
owner: owner,
id: newAssetId,
repo: repo,
name: newName,
label: "foo"
},
function(err, res) {
Assert.equal(err, null);
Assert.equal(res.state, "uploaded");
Assert.equal(res.size, fileSizeToUpload);
Assert.equal(res.name, newName);
Assert.equal(res.label, "foo");
next();
}
);
});
it("should successfully execute DELETE /repos/:owner/:repo/releases/assets/:id (deleteAsset)", function(next) {
if (!newAssetId) {
next();
return;
}
client.releases.deleteAsset(
{
owner: owner,
id: newAssetId,
repo: repo
},
function(err, res) {
Assert.equal(err, null);
// other assertions go here
next();
}
);
});
});