Skip to content

Commit 57bc1e4

Browse files
committed
add tests for the release API
note: I can't test editing and deleting an asset until I can create/upload an asset. The current node-github design doesn't seem to support that use case. Any thoughts on the best way forward are welcome.
1 parent 3e6aa92 commit 57bc1e4

File tree

1 file changed

+232
-0
lines changed

1 file changed

+232
-0
lines changed

api/v3.0.0/releasesTest.js

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
/*
2+
* Copyright 2012 Cloud9 IDE, Inc.
3+
*
4+
* This product includes software developed by
5+
* Cloud9 IDE, Inc (http://c9.io).
6+
*
7+
* Author: Mike de Boer <[email protected]>
8+
*/
9+
10+
"use strict";
11+
12+
var Assert = require("assert");
13+
var Client = require("./../../index");
14+
15+
describe("[releases]", function() {
16+
var client;
17+
var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba";
18+
19+
var owner = "greggman";
20+
var repo = "test";
21+
var haveWriteAccess = true; // set to false if the authenticated person below does not have write access to the repo above
22+
var releaseIdWithAsset = 393621; // Some release id from the repo above that has at least 1 asset.
23+
24+
var releaseId; // release id found when listing releases. Used for get release
25+
var newReleaseId; // release id created when creating release, used for edit and delete release
26+
var assetId; // asset id found when listing assets. Used for get asset
27+
var newAssetId; // asset id used when creating asset. Used for edit and delete asset
28+
29+
beforeEach(function() {
30+
client = new Client({
31+
version: "3.0.0"
32+
});
33+
client.authenticate({
34+
type: "oauth",
35+
token: token
36+
});
37+
});
38+
39+
it("should successfully execute GET /repos/:owner/:repo/releases (listReleases)", function(next) {
40+
client.releases.listReleases(
41+
{
42+
owner: owner,
43+
repo: repo,
44+
},
45+
function(err, res) {
46+
Assert.equal(err, null);
47+
Assert.ok(res instanceof Array);
48+
if (res instanceof Array && res.length > 0) {
49+
releaseId = res[0].id;
50+
}
51+
next();
52+
}
53+
);
54+
});
55+
56+
it("should successfully execute GET /repos/:owner/:repo/releases/:id (getRelease)", function(next) {
57+
if (!releaseId) {
58+
next();
59+
return;
60+
}
61+
client.releases.getRelease(
62+
{
63+
owner: owner,
64+
id: releaseId,
65+
repo: repo
66+
},
67+
function(err, res) {
68+
Assert.equal(err, null);
69+
Assert.equal(res.id, releaseId);
70+
next();
71+
}
72+
);
73+
});
74+
75+
it("should successfully execute POST /repos/:owner/:repo/releases (createRelease)", function(next) {
76+
if (!haveWriteAccess) {
77+
next();
78+
return;
79+
}
80+
client.releases.createRelease(
81+
{
82+
owner: owner,
83+
repo: repo,
84+
tag_name: "node-github-tag",
85+
target_commitish: "master",
86+
name: "node-github-name",
87+
body: "node-github-body",
88+
draft: false,
89+
prerelease: true,
90+
},
91+
function(err, res) {
92+
Assert.equal(err, null);
93+
Assert.equal(res.tag_name, "node-github-tag");
94+
Assert.equal(res.target_commitish, "master");
95+
Assert.equal(res.name, "node-github-name");
96+
Assert.equal(res.body, "node-github-body");
97+
Assert.equal(res.assets.length, 0);
98+
Assert.ok(res.prerelease);
99+
Assert.ok(!res.draft);
100+
newReleaseId = res.id;
101+
next();
102+
}
103+
);
104+
});
105+
106+
it("should successfully execute PATCH /repos/:owner/:repo/releases/:id (editRelease)", function(next) {
107+
if (!haveWriteAccess) {
108+
next();
109+
return;
110+
}
111+
client.releases.editRelease(
112+
{
113+
owner: owner,
114+
id: newReleaseId,
115+
repo: repo,
116+
tag_name: "node-github-new-tag",
117+
target_commitish: "master",
118+
name: "node-github-new-name",
119+
body: "node-github-new-body",
120+
draft: true,
121+
prerelease: true,
122+
},
123+
function(err, res) {
124+
Assert.equal(err, null);
125+
Assert.equal(res.id, newReleaseId);
126+
Assert.equal(res.tag_name, "node-github-new-tag");
127+
Assert.equal(res.target_commitish, "master");
128+
Assert.equal(res.name, "node-github-new-name");
129+
Assert.equal(res.body, "node-github-new-body");
130+
Assert.equal(res.assets.length, 0);
131+
Assert.ok(res.prerelease);
132+
Assert.ok(res.draft);
133+
next();
134+
}
135+
);
136+
});
137+
138+
it("should successfully execute DELETE /repos/:owner/:repo/releases/:id (deleteRelease)", function(next) {
139+
if (!haveWriteAccess) {
140+
next();
141+
return;
142+
}
143+
client.releases.deleteRelease(
144+
{
145+
owner: owner,
146+
repo: repo,
147+
id: newReleaseId,
148+
},
149+
function(err, res) {
150+
Assert.equal(err, null);
151+
next();
152+
}
153+
);
154+
});
155+
156+
it("should successfully execute GET /repos/:owner/:repo/releases/:id/assets (listAssets)", function(next) {
157+
client.releases.listAssets(
158+
{
159+
owner: owner,
160+
id: releaseIdWithAsset,
161+
repo: repo
162+
},
163+
function(err, res) {
164+
Assert.equal(err, null);
165+
Assert.ok(res instanceof Array);
166+
if (res instanceof Array && res.length > 0) {
167+
assetId = res[0].id;
168+
}
169+
next();
170+
}
171+
);
172+
});
173+
174+
it("should successfully execute GET /repos/:owner/:repo/releases/assets/:id (getAsset)", function(next) {
175+
if (!assetId) {
176+
next();
177+
return;
178+
}
179+
client.releases.getAsset(
180+
{
181+
owner: owner,
182+
id: assetId,
183+
repo: repo
184+
},
185+
function(err, res) {
186+
Assert.equal(err, null);
187+
Assert.equal(res.id, assetId);
188+
next();
189+
}
190+
);
191+
});
192+
193+
it("should successfully execute PATCH /repos/:owner/:repo/releases/assets/:id (editAsset)", function(next) {
194+
if (!newAssetId) {
195+
next();
196+
return;
197+
}
198+
client.releases.editAsset(
199+
{
200+
owner: owner,
201+
id: "Number",
202+
repo: repo,
203+
name: "String",
204+
label: "String"
205+
},
206+
function(err, res) {
207+
Assert.equal(err, null);
208+
// other assertions go here
209+
next();
210+
}
211+
);
212+
});
213+
214+
it("should successfully execute DELETE /repos/:owner/:repo/releases/assets/:id (deleteAsset)", function(next) {
215+
if (!newAssetId) {
216+
next();
217+
return;
218+
}
219+
client.releases.deleteAsset(
220+
{
221+
owner: owner,
222+
id: "Number",
223+
repo: repo
224+
},
225+
function(err, res) {
226+
Assert.equal(err, null);
227+
// other assertions go here
228+
next();
229+
}
230+
);
231+
});
232+
});

0 commit comments

Comments
 (0)