480 lines
18 KiB
JavaScript
480 lines
18 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");
|
|
|
|
describe("[gitdata]", function() {
|
|
var client;
|
|
var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba";
|
|
|
|
beforeEach(function() {
|
|
client = new Client({
|
|
version: "3.0.0"
|
|
});
|
|
client.authenticate({
|
|
type: "oauth",
|
|
token: token
|
|
});
|
|
});
|
|
|
|
it("should successfully execute GET /repos/:user/:repo/git/blobs/:sha (getBlob)", function(next) {
|
|
// found an object after executing:
|
|
// git rev-list --all | xargs -l1 git diff-tree -r -c -M -C --no-commit-id | awk '{print $3}'
|
|
client.gitdata.getBlob(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: "8433b682c95edf3fd81f5ee217dc9c874db35e4b"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.sha, "8433b682c95edf3fd81f5ee217dc9c874db35e4b");
|
|
Assert.equal(res.size, 2654);
|
|
Assert.equal(res.encoding, "base64");
|
|
|
|
next();
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute POST /repos/:user/:repo/git/blobs (createBlob)", function(next) {
|
|
client.gitdata.createBlob(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
content: "test",
|
|
encoding: "utf-8"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(typeof res.sha, "string");
|
|
var sha = res.sha;
|
|
|
|
client.gitdata.getBlob(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: sha
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.sha, sha);
|
|
Assert.equal(res.size, 4);
|
|
Assert.equal(res.encoding, "base64");
|
|
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute GET /repos/:user/:repo/git/commits/:sha (getCommit)", function(next) {
|
|
client.gitdata.getCommit(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: "17e0734295ffd8174f91f04ba8e8f8e51954b793"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.author.date, "2012-10-05T08:05:31-07:00");
|
|
Assert.equal(res.author.name, "Mike de Boer");
|
|
Assert.equal(res.parents[0].sha, "221140b288a3c64949594c58420cb4ab289b0756");
|
|
Assert.equal(res.parents[1].sha, "d2836429f4ff7de033c8bc0d16d22d55f2ea39c3");
|
|
next();
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute POST /repos/:user/:repo/git/commits (createCommit)", function(next) {
|
|
// got valid tree reference by executing
|
|
// git cat-file -p HEAD
|
|
client.gitdata.createCommit(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
message: "test",
|
|
tree: "8ce4393a319b60bc6179509e0c46dee83c179f9f",
|
|
parents: [],
|
|
author: {
|
|
name: "test-chef",
|
|
email: "test-chef@pasta-nirvana.it",
|
|
date: "2008-07-09T16:13:30+12:00"
|
|
},
|
|
committer: {
|
|
name: "test-minion",
|
|
email: "test-minion@pasta-nirvana.it",
|
|
date: "2008-07-09T16:13:30+12:00"
|
|
}
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.author.name, "test-chef");
|
|
Assert.equal(res.author.email, "test-chef@pasta-nirvana.it");
|
|
Assert.equal(res.committer.name, "test-minion");
|
|
Assert.equal(res.committer.email, "test-minion@pasta-nirvana.it");
|
|
Assert.equal(res.message, "test");
|
|
next();
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute GET /repos/:user/:repo/git/refs/:ref (getReference)", function(next) {
|
|
client.gitdata.getReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/master"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.ref, "refs/heads/master");
|
|
Assert.equal(res.object.type, "commit");
|
|
Assert.equal(res.object.sha, "17e0734295ffd8174f91f04ba8e8f8e51954b793");
|
|
next();
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute GET /repos/:user/:repo/git/refs (getAllReferences)", function(next) {
|
|
client.gitdata.getAllReferences(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
var ref = res[0];
|
|
Assert.equal(ref.ref, "refs/heads/master");
|
|
Assert.equal(ref.object.type, "commit");
|
|
Assert.equal(ref.object.sha, "17e0734295ffd8174f91f04ba8e8f8e51954b793");
|
|
next();
|
|
}
|
|
);
|
|
});
|
|
/*
|
|
DISABLED temporarily due to Internal Server Error from Github!
|
|
|
|
it("should successfully execute POST /repos/:user/:repo/git/refs (createReference)", function(next) {
|
|
client.gitdata.createReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/tagliatelle",
|
|
sha: "17e0734295ffd8174f91f04ba8e8f8e51954b793"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
console.log(res);
|
|
|
|
// other assertions go here
|
|
client.gitdata.deleteReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/tagliatelle"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
// other assertions go here
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});*/
|
|
|
|
it("should successfully execute PATCH /repos/:user/:repo/git/refs/:ref (updateReference)", function(next) {
|
|
client.gitdata.getReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/master"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
var sha = res.object.sha;
|
|
|
|
// do `force=true` because we go backward in history, which yields a warning
|
|
// that it's not a reference that can be fast-forwarded to.
|
|
client.gitdata.updateReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/master",
|
|
sha: "221140b288a3c64949594c58420cb4ab289b0756",
|
|
force: true
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.ref, "refs/heads/master");
|
|
Assert.equal(res.object.type, "commit");
|
|
Assert.equal(res.object.sha, "221140b288a3c64949594c58420cb4ab289b0756");
|
|
|
|
client.gitdata.updateReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/master",
|
|
sha: sha,
|
|
force: false
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.ref, "refs/heads/master");
|
|
Assert.equal(res.object.type, "commit");
|
|
Assert.equal(res.object.sha, sha);
|
|
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
|
|
});
|
|
/*
|
|
DISABLED temporarily due to Internal Server Error from Github!
|
|
|
|
it("should successfully execute DELETE /repos/:user/:repo/git/refs/:ref (deleteReference)", function(next) {
|
|
client.gitdata.createReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/tagliatelle",
|
|
sha: "17e0734295ffd8174f91f04ba8e8f8e51954b793"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
console.log(res);
|
|
|
|
// other assertions go here
|
|
client.gitdata.deleteReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "heads/tagliatelle"
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
// other assertions go here
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});*/
|
|
|
|
it("should successfully execute GET /repos/:user/:repo/git/tags/:sha (getTag)", function(next) {
|
|
client.gitdata.createTag(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
tag: "test-pasta",
|
|
message: "Grandma's secret sauce",
|
|
object: "17e0734295ffd8174f91f04ba8e8f8e51954b793",
|
|
type: "commit",
|
|
tagger: {
|
|
name: "test-chef",
|
|
email: "test-chef@pasta-nirvana.it",
|
|
date: "2008-07-09T16:13:30+12:00"
|
|
}
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
var sha = res.sha;
|
|
|
|
client.gitdata.getTag(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: sha
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.tag, "test-pasta");
|
|
Assert.equal(res.message, "Grandma's secret sauce");
|
|
Assert.equal(res.sha, sha);
|
|
Assert.equal(res.tagger.name, "test-chef");
|
|
Assert.equal(res.tagger.email, "test-chef@pasta-nirvana.it");
|
|
|
|
// other assertions go here
|
|
client.gitdata.deleteReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "tags/" + sha
|
|
},
|
|
function(err, res) {
|
|
//Assert.equal(err, null);
|
|
// NOTE: Github return 'Validation Failed' error codes back, which makes no sense to me.
|
|
// ask the guys what's up here...
|
|
Assert.equal(err.code, 422);
|
|
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute POST /repos/:user/:repo/git/tags (createTag)", function(next) {
|
|
client.gitdata.createTag(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
tag: "test-pasta",
|
|
message: "Grandma's secret sauce",
|
|
object: "17e0734295ffd8174f91f04ba8e8f8e51954b793",
|
|
type: "commit",
|
|
tagger: {
|
|
name: "test-chef",
|
|
email: "test-chef@pasta-nirvana.it",
|
|
date: "2008-07-09T16:13:30+12:00"
|
|
}
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
var sha = res.sha;
|
|
|
|
client.gitdata.getTag(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: sha
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.tag, "test-pasta");
|
|
Assert.equal(res.message, "Grandma's secret sauce");
|
|
Assert.equal(res.sha, sha);
|
|
Assert.equal(res.tagger.name, "test-chef");
|
|
Assert.equal(res.tagger.email, "test-chef@pasta-nirvana.it");
|
|
|
|
// other assertions go here
|
|
client.gitdata.deleteReference(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
ref: "tags/" + sha
|
|
},
|
|
function(err, res) {
|
|
//Assert.equal(err, null);
|
|
// NOTE: Github return 'Validation Failed' error codes back, which makes no sense to me.
|
|
// ask the guys what's up here...
|
|
Assert.equal(err.code, 422);
|
|
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute GET /repos/:user/:repo/git/trees/:sha (getTree)", function(next) {
|
|
client.gitdata.getTree(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: "8ce4393a319b60bc6179509e0c46dee83c179f9f",
|
|
recursive: false
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.tree[0].type, "blob");
|
|
Assert.equal(res.tree[0].path, "LICENSE-MIT");
|
|
Assert.equal(res.tree[0].sha, "f30a31de94635399f42fd05f91f6ed3ff2f013d6");
|
|
Assert.equal(res.tree[0].mode, "100644");
|
|
Assert.equal(res.tree[0].size, 1075);
|
|
|
|
client.gitdata.getTree(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: "8ce4393a319b60bc6179509e0c46dee83c179f9f",
|
|
recursive: true
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.tree[0].type, "blob");
|
|
Assert.equal(res.tree[0].path, "LICENSE-MIT");
|
|
Assert.equal(res.tree[0].sha, "f30a31de94635399f42fd05f91f6ed3ff2f013d6");
|
|
Assert.equal(res.tree[0].mode, "100644");
|
|
Assert.equal(res.tree[0].size, 1075);
|
|
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});
|
|
|
|
it("should successfully execute POST /repos/:user/:repo/git/trees (createTree)", function(next) {
|
|
client.gitdata.getTree(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: "8ce4393a319b60bc6179509e0c46dee83c179f9f",
|
|
recursive: false
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
var file = res.tree[0];
|
|
|
|
client.gitdata.createTree(
|
|
{
|
|
base_tree: "8ce4393a319b60bc6179509e0c46dee83c179f9f",
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
tree: [
|
|
{
|
|
path: file.path,
|
|
mode: "100755",
|
|
type: file.type,
|
|
sha: file.sha
|
|
}
|
|
]
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
var sha = res.sha;
|
|
|
|
client.gitdata.getTree(
|
|
{
|
|
user: "mikedeboertest",
|
|
repo: "node_chat",
|
|
sha: sha,
|
|
recursive: true
|
|
},
|
|
function(err, res) {
|
|
Assert.equal(err, null);
|
|
Assert.equal(res.tree[0].type, "blob");
|
|
Assert.equal(res.tree[0].path, "LICENSE-MIT");
|
|
Assert.equal(res.tree[0].sha, "f30a31de94635399f42fd05f91f6ed3ff2f013d6");
|
|
Assert.equal(res.tree[0].mode, "100755");
|
|
Assert.equal(res.tree[0].size, 1075);
|
|
|
|
next();
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
});
|
|
});
|