woodpecker/pkg/database/testing/repos_test.go
2014-02-07 03:10:01 -07:00

403 lines
9.3 KiB
Go

package database
import (
"testing"
"github.com/drone/drone/pkg/database"
)
// TODO unit test to verify unique constraint on Member.UserID and Member.TeamID
// TestGetRepo tests the ability to retrieve a Repo
// from the database by Unique ID.
func TestGetRepo(t *testing.T) {
Setup()
defer Teardown()
repo, err := database.GetRepo(1)
if err != nil {
t.Error(err)
}
if repo.ID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.ID)
}
if repo.Slug != "github.com/drone/drone" {
t.Errorf("Exepected Slug %s, got %s", "github.com/drone/drone", repo.Slug)
}
if repo.Host != "github.com" {
t.Errorf("Exepected Host %s, got %s", "github.com", repo.Host)
}
if repo.Owner != "drone" {
t.Errorf("Exepected Owner %s, got %s", "drone", repo.Owner)
}
if repo.Name != "drone" {
t.Errorf("Exepected Name %s, got %s", "drone", repo.Name)
}
if repo.Private != true {
t.Errorf("Exepected Private %v, got %v", true, repo.Private)
}
if repo.Disabled != false {
t.Errorf("Exepected Private %v, got %v", false, repo.Disabled)
}
if repo.SCM != "git" {
t.Errorf("Exepected Type %s, got %s", "git", repo.SCM)
}
if repo.URL != "git@github.com:drone/drone.git" {
t.Errorf("Exepected URL %s, got %s", "git@github.com:drone/drone.git", repo.URL)
}
if repo.Username != "no username" {
t.Errorf("Exepected Username %s, got %s", "no username", repo.Username)
}
if repo.Password != "no password" {
t.Errorf("Exepected Password %s, got %s", "no password", repo.Password)
}
if repo.PublicKey != "public key" {
t.Errorf("Exepected PublicKey %s, got %s", "public key", repo.PublicKey)
}
if repo.PrivateKey != "private key" {
t.Errorf("Exepected PrivateKey %s, got %s", "private key", repo.PrivateKey)
}
if repo.UserID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.UserID)
}
if repo.TeamID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.TeamID)
}
}
// TestGetRepoSlug tests the ability to retrieve a Repo
// from the database by it's Canonical Name.
func TestGetRepoSlug(t *testing.T) {
Setup()
defer Teardown()
repo, err := database.GetRepoSlug("github.com/drone/drone")
if err != nil {
t.Error(err)
}
if repo.ID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.ID)
}
if repo.Slug != "github.com/drone/drone" {
t.Errorf("Exepected Slug %s, got %s", "github.com/drone/drone", repo.Slug)
}
if repo.Host != "github.com" {
t.Errorf("Exepected Host %s, got %s", "github.com", repo.Host)
}
if repo.Owner != "drone" {
t.Errorf("Exepected Owner %s, got %s", "drone", repo.Owner)
}
if repo.Name != "drone" {
t.Errorf("Exepected Name %s, got %s", "drone", repo.Name)
}
if repo.Private != true {
t.Errorf("Exepected Private %v, got %v", true, repo.Private)
}
if repo.Disabled != false {
t.Errorf("Exepected Private %v, got %v", false, repo.Disabled)
}
if repo.SCM != "git" {
t.Errorf("Exepected Type %s, got %s", "git", repo.SCM)
}
if repo.URL != "git@github.com:drone/drone.git" {
t.Errorf("Exepected URL %s, got %s", "git@github.com:drone/drone.git", repo.URL)
}
if repo.Username != "no username" {
t.Errorf("Exepected Username %s, got %s", "no username", repo.Username)
}
if repo.Password != "no password" {
t.Errorf("Exepected Password %s, got %s", "no password", repo.Password)
}
if repo.PublicKey != "public key" {
t.Errorf("Exepected PublicKey %s, got %s", "public key", repo.PublicKey)
}
if repo.PrivateKey != "private key" {
t.Errorf("Exepected PrivateKey %s, got %s", "private key", repo.PrivateKey)
}
if repo.UserID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.UserID)
}
if repo.TeamID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.TeamID)
}
}
func TestSaveRepo(t *testing.T) {
Setup()
defer Teardown()
// get the repo we plan to update
repo, err := database.GetRepo(1)
if err != nil {
t.Error(err)
}
// update fields
repo.Slug = "bitbucket.org/drone/drone"
repo.Host = "bitbucket.org"
repo.Private = false
repo.Disabled = true
repo.SCM = "hg"
repo.URL = "https://bitbucket.org/drone/drone"
repo.Username = "brad"
repo.Password = "password"
repo.TeamID = 0
// update the database
if err := database.SaveRepo(repo); err != nil {
t.Error(err)
}
// get the updated repo
updatedRepo, err := database.GetRepo(1)
if err != nil {
t.Error(err)
}
if updatedRepo.Slug != repo.Slug {
t.Errorf("Exepected Slug %s, got %s", updatedRepo.Slug, repo.Slug)
}
if updatedRepo.Host != repo.Host {
t.Errorf("Exepected Host %s, got %s", updatedRepo.Host, repo.Host)
}
if updatedRepo.Private != repo.Private {
t.Errorf("Exepected Private %v, got %v", updatedRepo.Private, repo.Private)
}
if updatedRepo.Disabled != repo.Disabled {
t.Errorf("Exepected Private %v, got %v", updatedRepo.Disabled, repo.Disabled)
}
if updatedRepo.SCM != repo.SCM {
t.Errorf("Exepected Type %s, got %s", true, repo.SCM)
}
if updatedRepo.URL != repo.URL {
t.Errorf("Exepected URL %s, got %s", updatedRepo.URL, repo.URL)
}
if updatedRepo.Username != repo.Username {
t.Errorf("Exepected Username %s, got %s", updatedRepo.Username, repo.Username)
}
if updatedRepo.Password != repo.Password {
t.Errorf("Exepected Password %s, got %s", updatedRepo.Password, repo.Password)
}
if updatedRepo.TeamID != repo.TeamID {
t.Errorf("Exepected TeamID %d, got %d", updatedRepo.TeamID, repo.TeamID)
}
}
func TestDeleteRepo(t *testing.T) {
Setup()
defer Teardown()
if err := database.DeleteRepo(1); err != nil {
t.Error(err)
}
// try to get the deleted row
_, err := database.GetRepo(1)
if err == nil {
t.Fail()
}
}
/*
func TestListRepos(t *testing.T) {
Setup()
defer Teardown()
// repos for user_id = 1
repos, err := database.ListRepos(1)
if err != nil {
t.Error(err)
}
// verify user count
if len(repos) != 2 {
t.Errorf("Exepected %d repos in database, got %d", 2, len(repos))
return
}
// get the second repo in the list and verify
// fields are being populated correctly
// NOTE: we get the 2nd repo due to sorting
repo := repos[1]
if repo.ID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.ID)
}
if repo.Name != "github.com/drone/drone" {
t.Errorf("Exepected Name %s, got %s", "github.com/drone/drone", repo.Name)
}
if repo.Host != "github.com" {
t.Errorf("Exepected Host %s, got %s", "github.com", repo.Host)
}
if repo.Owner != "drone" {
t.Errorf("Exepected Owner %s, got %s", "drone", repo.Owner)
}
if repo.Slug != "drone" {
t.Errorf("Exepected Slug %s, got %s", "drone", repo.Slug)
}
if repo.Private != true {
t.Errorf("Exepected Private %v, got %v", true, repo.Private)
}
if repo.Disabled != false {
t.Errorf("Exepected Private %v, got %v", false, repo.Disabled)
}
if repo.SCM != "git" {
t.Errorf("Exepected Type %s, got %s", "git", repo.SCM)
}
if repo.URL != "git@github.com:drone/drone.git" {
t.Errorf("Exepected URL %s, got %s", "git@github.com:drone/drone.git", repo.URL)
}
if repo.Username != "no username" {
t.Errorf("Exepected Username %s, got %s", "no username", repo.Username)
}
if repo.Password != "no password" {
t.Errorf("Exepected Password %s, got %s", "no password", repo.Password)
}
if repo.PublicKey != "public key" {
t.Errorf("Exepected PublicKey %s, got %s", "public key", repo.PublicKey)
}
if repo.PrivateKey != "private key" {
t.Errorf("Exepected PrivateKey %s, got %s", "private key", repo.PrivateKey)
}
if repo.UserID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.UserID)
}
if repo.TeamID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.TeamID)
}
}
*/
func TestListReposTeam(t *testing.T) {
Setup()
defer Teardown()
// repos for team_id = 1
repos, err := database.ListReposTeam(1)
if err != nil {
t.Error(err)
}
// verify user count
if len(repos) != 2 {
t.Errorf("Exepected %d repos in database, got %d", 2, len(repos))
return
}
// get the second repo in the list and verify
// fields are being populated correctly
// NOTE: we get the 2nd repo due to sorting
repo := repos[1]
if repo.ID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.ID)
}
if repo.Slug != "github.com/drone/drone" {
t.Errorf("Exepected Slug %s, got %s", "github.com/drone/drone", repo.Slug)
}
if repo.Host != "github.com" {
t.Errorf("Exepected Host %s, got %s", "github.com", repo.Host)
}
if repo.Owner != "drone" {
t.Errorf("Exepected Owner %s, got %s", "drone", repo.Owner)
}
if repo.Name != "drone" {
t.Errorf("Exepected Name %s, got %s", "drone", repo.Name)
}
if repo.Private != true {
t.Errorf("Exepected Private %v, got %v", true, repo.Private)
}
if repo.Disabled != false {
t.Errorf("Exepected Private %v, got %v", false, repo.Disabled)
}
if repo.SCM != "git" {
t.Errorf("Exepected Type %s, got %s", "git", repo.SCM)
}
if repo.URL != "git@github.com:drone/drone.git" {
t.Errorf("Exepected URL %s, got %s", "git@github.com:drone/drone.git", repo.URL)
}
if repo.Username != "no username" {
t.Errorf("Exepected Username %s, got %s", "no username", repo.Username)
}
if repo.Password != "no password" {
t.Errorf("Exepected Password %s, got %s", "no password", repo.Password)
}
if repo.PublicKey != "public key" {
t.Errorf("Exepected PublicKey %s, got %s", "public key", repo.PublicKey)
}
if repo.PrivateKey != "private key" {
t.Errorf("Exepected PrivateKey %s, got %s", "private key", repo.PrivateKey)
}
if repo.UserID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.UserID)
}
if repo.TeamID != 1 {
t.Errorf("Exepected ID %d, got %d", 1, repo.TeamID)
}
}