opentofu/builtin/providers/gitlab/util_test.go
Richard Clamp 631b0b865c provider/gitlab: add gitlab provider and gitlab_project resource
Here we add a basic provider with a single resource type.

It's copied heavily from the `github` provider and `github_repository`
resource, as there is some overlap in those types/apis.

~~~
resource "gitlab_project" "test1" {
  name = "test1"
  visibility_level = "public"
}
~~~

We implement in terms of the
[go-gitlab](https://github.com/xanzy/go-gitlab) library, which provides
a wrapping of the [gitlab api](https://docs.gitlab.com/ee/api/)

We have been a little selective in the properties we surface for the
project resource, as not all properties are very instructive.
Notable is the removal of the `public` bool as the `visibility_level`
will take precedent if both are supplied which leads to confusing
interactions if they disagree.
2017-04-24 11:38:20 +01:00

66 lines
1.1 KiB
Go

package gitlab
import (
"testing"
"github.com/xanzy/go-gitlab"
)
func TestGitlab_validation(t *testing.T) {
cases := []struct {
Value string
ErrCount int
}{
{
Value: "invalid",
ErrCount: 1,
},
{
Value: "valid_one",
ErrCount: 0,
},
{
Value: "valid_two",
ErrCount: 0,
},
}
validationFunc := validateValueFunc([]string{"valid_one", "valid_two"})
for _, tc := range cases {
_, errors := validationFunc(tc.Value, "test_arg")
if len(errors) != tc.ErrCount {
t.Fatalf("Expected 1 validation error")
}
}
}
func TestGitlab_visbilityHelpers(t *testing.T) {
cases := []struct {
String string
Level gitlab.VisibilityLevelValue
}{
{
String: "private",
Level: gitlab.PrivateVisibility,
},
{
String: "public",
Level: gitlab.PublicVisibility,
},
}
for _, tc := range cases {
level := stringToVisibilityLevel(tc.String)
if level == nil || *level != tc.Level {
t.Fatalf("got %v expected %v", level, tc.Level)
}
sv := visibilityLevelToString(tc.Level)
if sv == nil || *sv != tc.String {
t.Fatalf("got %v expected %v", sv, tc.String)
}
}
}