woodpecker/server/forge/bitbucketserver/convert_test.go
qwerty287 3372d1a87c
Rename remote to forge (#1357)
As of #745

Co-authored-by: Anbraten <anton@ju60.de>
2022-11-05 00:35:06 +01:00

155 lines
5.1 KiB
Go

// Copyright 2022 Woodpecker Authors
// Copyright 2018 Drone.IO Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package bitbucketserver
import (
"testing"
"github.com/franela/goblin"
"github.com/mrjones/oauth"
"github.com/woodpecker-ci/woodpecker/server/forge/bitbucketserver/internal"
"github.com/woodpecker-ci/woodpecker/server/model"
)
func Test_helper(t *testing.T) {
g := goblin.Goblin(t)
g.Describe("Bitbucket Server converter", func() {
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.SCMKind).Equal(model.RepoGit)
g.Assert(to.IsSCMPrivate).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("branch should be empty", func() {
change := internal.PostHook{}
change.RefChanges = append(change.RefChanges, internal.RefChange{
RefID: "refs/heads/",
ToHash: "73f9c44d",
})
value := internal.Value{}
value.ToCommit.Author.Name = "John Doe, Appleboy, Mary, Janet E. Dawson and Ann S. Palmer"
value.ToCommit.Author.EmailAddress = "huh@huh.com"
value.ToCommit.Message = "message"
change.Changesets.Values = append(change.Changesets.Values, value)
change.Repository.Project = internal.Project{
Key: "octocat",
}
change.Repository.Slug = "hello-world"
pipeline := convertPushHook(&change, "http://base.com")
g.Assert(pipeline.Branch).Equal("")
})
g.It("should convert push hook to pipeline", func() {
change := internal.PostHook{}
change.RefChanges = append(change.RefChanges, internal.RefChange{
RefID: "refs/heads/release/some-feature",
ToHash: "73f9c44d",
})
value := internal.Value{}
value.ToCommit.Author.Name = "John Doe, Appleboy, Mary, Janet E. Dawson and Ann S. Palmer"
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"
pipeline := convertPushHook(&change, "http://base.com")
g.Assert(pipeline.Event).Equal(model.EventPush)
// Ensuring the author label is not longer then 40
g.Assert(pipeline.Author).Equal("John Doe, Appleboy, Mary, Janet E. Da...")
g.Assert(pipeline.Avatar).Equal(avatarLink("huh@huh.com"))
g.Assert(pipeline.Commit).Equal("73f9c44d")
g.Assert(pipeline.Branch).Equal("release/some-feature")
g.Assert(pipeline.Link).Equal("http://base.com/projects/octocat/repos/hello-world/commits/73f9c44d")
g.Assert(pipeline.Ref).Equal("refs/heads/release/some-feature")
g.Assert(pipeline.Message).Equal("message")
})
g.It("should convert tag hook to pipeline", 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"
pipeline := convertPushHook(&change, "http://base.com")
g.Assert(pipeline.Event).Equal(model.EventTag)
g.Assert(pipeline.Author).Equal("John Doe")
g.Assert(pipeline.Avatar).Equal(avatarLink("huh@huh.com"))
g.Assert(pipeline.Commit).Equal("73f9c44d")
g.Assert(pipeline.Branch).Equal("v1")
g.Assert(pipeline.Link).Equal("http://base.com/projects/octocat/repos/hello-world/commits/73f9c44d")
g.Assert(pipeline.Ref).Equal("refs/tags/v1")
g.Assert(pipeline.Message).Equal("message")
})
})
}