mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-08 15:13:56 -06:00
631b0b865c
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.
66 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|