Starting to add tests for bitbucket server

Removed a duplicate assert for bitbucket
This commit is contained in:
Joachim Hill-Grannec 2016-08-12 15:54:36 -07:00
parent e0b7b31a5d
commit 0c0a7a897b
3 changed files with 205 additions and 64 deletions

View file

@ -111,7 +111,6 @@ func Test_helper(t *testing.T) {
g.Assert(result.Avatar).Equal(user.Links.Avatar.Href)
g.Assert(result.Login).Equal(user.Login)
g.Assert(result.Token).Equal(token.AccessToken)
g.Assert(result.Token).Equal(token.AccessToken)
g.Assert(result.Secret).Equal(token.RefreshToken)
g.Assert(result.Expiry).Equal(token.Expiry.UTC().Unix())
})

View file

@ -0,0 +1,133 @@
package bitbucketserver
import (
"testing"
"github.com/drone/drone/model"
"github.com/drone/drone/remote/bitbucketserver/internal"
"github.com/franela/goblin"
"github.com/mrjones/oauth"
)
func Test_helper(t *testing.T) {
g := goblin.Goblin(t)
g.Describe("Bitbucket Server converter", func() {
g.It("should convert repository lite", func() {
from := &internal.Repo{}
from.Project.Key = "octocat"
from.Slug = "hello-world"
to := convertRepoLite(from)
g.Assert(to.FullName).Equal("octocat/hello-world")
g.Assert(to.Owner).Equal("octocat")
g.Assert(to.Name).Equal("hello-world")
})
g.It("should convert repository", func() {
from := &internal.Repo{
Slug: "hello-world",
}
from.Project.Key = "octocat"
//var links [1]internal.LinkType
link := internal.CloneLink{
Name: "http",
Href: "https://x7hw@server.org/foo/bar.git",
}
from.Links.Clone = append(from.Links.Clone, link)
selfRef := internal.SelfRefLink{
Href: "https://server.org/foo/bar",
}
from.Links.Self = append(from.Links.Self, selfRef)
to := convertRepo(from)
g.Assert(to.FullName).Equal("octocat/hello-world")
g.Assert(to.Owner).Equal("octocat")
g.Assert(to.Name).Equal("hello-world")
g.Assert(to.Branch).Equal("master")
g.Assert(to.Kind).Equal(model.RepoGit)
g.Assert(to.IsPrivate).Equal(true)
g.Assert(to.Clone).Equal("https://server.org/foo/bar.git")
g.Assert(to.Link).Equal("https://server.org/foo/bar")
})
g.It("should convert user", func() {
token := &oauth.AccessToken{
Token: "foo",
}
user := &internal.User{
Slug: "x12f",
EmailAddress: "huh@huh.com",
}
result := convertUser(user, token)
g.Assert(result.Avatar).Equal(avatarLink("huh@huh.com"))
g.Assert(result.Login).Equal("x12f")
g.Assert(result.Token).Equal("foo")
})
g.It("should convert push hook to build", func() {
change := internal.PostHook{}
change.RefChanges = append(change.RefChanges, internal.RefChange{
RefID: "refs/heads/master",
ToHash: "73f9c44d",
})
value := internal.Value{}
value.ToCommit.Author.Name = "John Doe"
value.ToCommit.Author.EmailAddress = "huh@huh.com"
value.ToCommit.Message = "message"
change.Changesets.Values = append(change.Changesets.Values, value)
change.Repository.Project.Key = "octocat"
change.Repository.Slug = "hello-world"
build := convertPushHook(&change, "http://base.com")
g.Assert(build.Event).Equal(model.EventPush)
g.Assert(build.Author).Equal("John Doe")
g.Assert(build.Avatar).Equal(avatarLink("huh@huh.com"))
g.Assert(build.Commit).Equal("73f9c44d")
g.Assert(build.Branch).Equal("master")
g.Assert(build.Link).Equal("http://base.com/projects/octocat/repos/hello-world/commits/73f9c44d")
g.Assert(build.Ref).Equal("refs/heads/master")
g.Assert(build.Message).Equal("message")
})
g.It("should convert tag hook to build", func() {
change := internal.PostHook{}
change.RefChanges = append(change.RefChanges, internal.RefChange{
RefID: "refs/tags/v1",
ToHash: "73f9c44d",
})
value := internal.Value{}
value.ToCommit.Author.Name = "John Doe"
value.ToCommit.Author.EmailAddress = "huh@huh.com"
value.ToCommit.Message = "message"
change.Changesets.Values = append(change.Changesets.Values, value)
change.Repository.Project.Key = "octocat"
change.Repository.Slug = "hello-world"
build := convertPushHook(&change, "http://base.com")
g.Assert(build.Event).Equal(model.EventTag)
g.Assert(build.Author).Equal("John Doe")
g.Assert(build.Avatar).Equal(avatarLink("huh@huh.com"))
g.Assert(build.Commit).Equal("73f9c44d")
g.Assert(build.Branch).Equal("v1")
g.Assert(build.Link).Equal("http://base.com/projects/octocat/repos/hello-world/commits/73f9c44d")
g.Assert(build.Ref).Equal("refs/tags/v1")
g.Assert(build.Message).Equal("message")
})
})
}

View file

@ -15,14 +15,20 @@ type User struct {
Type string `json:"type"`
}
type CloneLink struct {
Href string `json:"href"`
Name string `json:"name"`
}
type SelfRefLink struct {
Href string `json:"href"`
}
type Repo struct {
Forkable bool `json:"forkable"`
ID int `json:"id"`
Links struct {
Clone []struct {
Href string `json:"href"`
Name string `json:"name"`
} `json:"clone"`
Clone []CloneLink`json:"clone"`
Self []struct {
Href string `json:"href"`
} `json:"self"`
@ -33,9 +39,7 @@ type Repo struct {
ID int `json:"id"`
Key string `json:"key"`
Links struct {
Self []struct {
Href string `json:"href"`
} `json:"self"`
Self []SelfRefLink `json:"self"`
} `json:"links"`
Name string `json:"name"`
Public bool `json:"public"`
@ -70,6 +74,58 @@ type HookDetail struct {
ConfigFormKey string `json:"configFormKey"`
}
type Value struct {
Changes struct {
Filter interface{} `json:"filter"`
IsLastPage bool `json:"isLastPage"`
Limit int `json:"limit"`
Size int `json:"size"`
Start int `json:"start"`
Values []struct {
ContentID string `json:"contentId"`
Executable bool `json:"executable"`
Link struct {
Rel string `json:"rel"`
URL string `json:"url"`
} `json:"link"`
NodeType string `json:"nodeType"`
Path struct {
Components []string `json:"components"`
Extension string `json:"extension"`
Name string `json:"name"`
Parent string `json:"parent"`
ToString string `json:"toString"`
} `json:"path"`
PercentUnchanged int `json:"percentUnchanged"`
SrcExecutable bool `json:"srcExecutable"`
Type string `json:"type"`
} `json:"values"`
} `json:"changes"`
FromCommit struct {
DisplayID string `json:"displayId"`
ID string `json:"id"`
} `json:"fromCommit"`
Link struct {
Rel string `json:"rel"`
URL string `json:"url"`
} `json:"link"`
ToCommit struct {
Author struct {
EmailAddress string `json:"emailAddress"`
Name string `json:"name"`
} `json:"author"`
AuthorTimestamp int `json:"authorTimestamp"`
DisplayID string `json:"displayId"`
ID string `json:"id"`
Message string `json:"message"`
Parents []struct {
DisplayID string `json:"displayId"`
ID string `json:"id"`
} `json:"parents"`
} `json:"toCommit"`
}
type PostHook struct {
Changesets struct {
Filter interface{} `json:"filter"`
@ -77,63 +133,9 @@ type PostHook struct {
Limit int `json:"limit"`
Size int `json:"size"`
Start int `json:"start"`
Values []struct {
Changes struct {
Filter interface{} `json:"filter"`
IsLastPage bool `json:"isLastPage"`
Limit int `json:"limit"`
Size int `json:"size"`
Start int `json:"start"`
Values []struct {
ContentID string `json:"contentId"`
Executable bool `json:"executable"`
Link struct {
Rel string `json:"rel"`
URL string `json:"url"`
} `json:"link"`
NodeType string `json:"nodeType"`
Path struct {
Components []string `json:"components"`
Extension string `json:"extension"`
Name string `json:"name"`
Parent string `json:"parent"`
ToString string `json:"toString"`
} `json:"path"`
PercentUnchanged int `json:"percentUnchanged"`
SrcExecutable bool `json:"srcExecutable"`
Type string `json:"type"`
} `json:"values"`
} `json:"changes"`
FromCommit struct {
DisplayID string `json:"displayId"`
ID string `json:"id"`
} `json:"fromCommit"`
Link struct {
Rel string `json:"rel"`
URL string `json:"url"`
} `json:"link"`
ToCommit struct {
Author struct {
EmailAddress string `json:"emailAddress"`
Name string `json:"name"`
} `json:"author"`
AuthorTimestamp int `json:"authorTimestamp"`
DisplayID string `json:"displayId"`
ID string `json:"id"`
Message string `json:"message"`
Parents []struct {
DisplayID string `json:"displayId"`
ID string `json:"id"`
} `json:"parents"`
} `json:"toCommit"`
} `json:"values"`
Values []Value `json:"values"`
} `json:"changesets"`
RefChanges []struct {
FromHash string `json:"fromHash"`
RefID string `json:"refId"`
ToHash string `json:"toHash"`
Type string `json:"type"`
} `json:"refChanges"`
RefChanges []RefChange `json:"refChanges"`
Repository struct {
Forkable bool `json:"forkable"`
ID int `json:"id"`
@ -153,3 +155,10 @@ type PostHook struct {
StatusMessage string `json:"statusMessage"`
} `json:"repository"`
}
type RefChange struct {
FromHash string `json:"fromHash"`
RefID string `json:"refId"`
ToHash string `json:"toHash"`
Type string `json:"type"`
}