196 lines
4.4 KiB
Go
196 lines
4.4 KiB
Go
package database
|
|
|
|
import (
|
|
"database/sql"
|
|
"testing"
|
|
|
|
"github.com/drone/drone/shared/model"
|
|
)
|
|
|
|
func TestRemoteFind(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
remotes := NewRemoteManager(db)
|
|
remote, err := remotes.Find(1)
|
|
if err != nil {
|
|
t.Errorf("Want Remote from ID, got %s", err)
|
|
}
|
|
|
|
testRemote(t, remote)
|
|
}
|
|
|
|
func TestRemoteFindHost(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
remotes := NewRemoteManager(db)
|
|
remote, err := remotes.FindHost("github.drone.io")
|
|
if err != nil {
|
|
t.Errorf("Want Remote from Host, got %s", err)
|
|
}
|
|
|
|
testRemote(t, remote)
|
|
}
|
|
|
|
func TestRemoteList(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
remotes := NewRemoteManager(db)
|
|
all, err := remotes.List()
|
|
if err != nil {
|
|
t.Errorf("Want Remotes, got %s", err)
|
|
}
|
|
|
|
var got, want = len(all), 2
|
|
if got != want {
|
|
t.Errorf("Want %v remotes, got %v", want, got)
|
|
}
|
|
|
|
testRemote(t, all[0])
|
|
}
|
|
|
|
func TestRemoteInsert(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
remote := &model.Remote{ID: 0, Type: "bitbucket.org", Host: "bitbucket.org", URL: "https://bitbucket.org", API: "https://bitbucket.org", Client: "abc", Secret: "123", Open: false}
|
|
remotes := NewRemoteManager(db)
|
|
if err := remotes.Insert(remote); err != nil {
|
|
t.Errorf("Want Remote created, got %s", err)
|
|
}
|
|
|
|
var got, want = remote.ID, int64(3)
|
|
if want != got {
|
|
t.Errorf("Want Remote ID %v, got %v", want, got)
|
|
}
|
|
|
|
// verify unique remote name constraint
|
|
var err = remotes.Insert(&model.Remote{Type: "bitbucket.org", Host: "butbucket.com"})
|
|
if err == nil {
|
|
t.Error("Want Type unique constraint violated")
|
|
}
|
|
|
|
}
|
|
|
|
func TestRemoteUpdate(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
remotes := NewRemoteManager(db)
|
|
remote, err := remotes.Find(1)
|
|
if err != nil {
|
|
t.Errorf("Want Remote from ID, got %s", err)
|
|
}
|
|
|
|
// update the remote's address
|
|
remote.Client = "abc"
|
|
remote.Secret = "123"
|
|
remote.Host = "git.drone.io"
|
|
remote.URL = "https://git.drone.io"
|
|
remote.API = "https://git.drone.io/v3/api"
|
|
if err := remotes.Update(remote); err != nil {
|
|
t.Errorf("Want Remote updated, got %s", err)
|
|
}
|
|
|
|
updated, _ := remotes.Find(1)
|
|
var got, want = remote.Host, remote.Host
|
|
if got != want {
|
|
t.Errorf("Want updated Host %s, got %s", want, got)
|
|
}
|
|
|
|
got, want = updated.Client, remote.Client
|
|
if got != want {
|
|
t.Errorf("Want updated Client %s, got %s", want, got)
|
|
}
|
|
|
|
got, want = updated.Secret, remote.Secret
|
|
if got != want {
|
|
t.Errorf("Want updated Secret %s, got %s", want, got)
|
|
}
|
|
|
|
got, want = updated.Host, remote.Host
|
|
if got != want {
|
|
t.Errorf("Want updated Host %s, got %s", want, got)
|
|
}
|
|
|
|
got, want = updated.Host, remote.Host
|
|
if got != want {
|
|
t.Errorf("Want updated Host %s, got %s", want, got)
|
|
}
|
|
|
|
got, want = updated.URL, remote.URL
|
|
if got != want {
|
|
t.Errorf("Want updated URL %s, got %s", want, got)
|
|
}
|
|
|
|
got, want = updated.API, remote.API
|
|
if got != want {
|
|
t.Errorf("Want updated API %s, got %s", want, got)
|
|
}
|
|
}
|
|
|
|
func TestRemoteDelete(t *testing.T) {
|
|
setup()
|
|
defer teardown()
|
|
|
|
remotes := NewRemoteManager(db)
|
|
remote, err := remotes.Find(1)
|
|
if err != nil {
|
|
t.Errorf("Want Remote from ID, got %s", err)
|
|
}
|
|
|
|
// delete the remote
|
|
if err := remotes.Delete(remote); err != nil {
|
|
t.Errorf("Want Remote deleted, got %s", err)
|
|
}
|
|
|
|
// check to see if the deleted remote is actually gone
|
|
if _, err := remotes.Find(1); err != sql.ErrNoRows {
|
|
t.Errorf("Want ErrNoRows, got %s", err)
|
|
}
|
|
}
|
|
|
|
func testRemote(t *testing.T, remote *model.Remote) {
|
|
|
|
var got, want = remote.Host, "github.drone.io"
|
|
if got != want {
|
|
t.Errorf("Want Host %v, got %v", want, got)
|
|
}
|
|
|
|
got, want = remote.Type, "enterprise.github.com"
|
|
if got != want {
|
|
t.Errorf("Want Type %v, got %v", want, got)
|
|
}
|
|
|
|
got, want = remote.URL, "https://github.drone.io"
|
|
if got != want {
|
|
t.Errorf("Want URL %v, got %v", want, got)
|
|
}
|
|
|
|
got, want = remote.API, "https://github.drone.io/v3/api"
|
|
if got != want {
|
|
t.Errorf("Want API %v, got %v", want, got)
|
|
}
|
|
|
|
got, want = remote.Client, "f0b461ca586c27872b43a0685cbc2847"
|
|
if got != want {
|
|
t.Errorf("Want Access Token %v, got %v", want, got)
|
|
}
|
|
|
|
got, want = remote.Secret, "976f22a5eef7caacb7e678d6c52f49b1"
|
|
if got != want {
|
|
t.Errorf("Want Token Secret %v, got %v", want, got)
|
|
}
|
|
|
|
var gotBool, wantBool = remote.Open, true
|
|
if gotBool != wantBool {
|
|
t.Errorf("Want Open %v, got %v", wantBool, gotBool)
|
|
}
|
|
|
|
var gotInt64, wantInt64 = remote.ID, int64(1)
|
|
if gotInt64 != wantInt64 {
|
|
t.Errorf("Want ID %v, got %v", wantInt64, gotInt64)
|
|
}
|
|
}
|