Compare commits
5 Commits
8977f87f60
...
debt/tt/#6
Author | SHA1 | Date | |
---|---|---|---|
6165e5ae19
|
|||
021db20aa1
|
|||
0208cbd960
|
|||
08dffb3e3a | |||
680e2dcba2
|
28
.drone.yml
28
.drone.yml
@ -15,23 +15,27 @@ steps:
|
|||||||
- push
|
- push
|
||||||
- pull_request
|
- pull_request
|
||||||
- tag
|
- tag
|
||||||
- name: build
|
- name: backend
|
||||||
image: goreleaser/goreleaser
|
image: gitea/gitea:1.16.8
|
||||||
|
detach: true
|
||||||
commands:
|
commands:
|
||||||
- goreleaser build --snapshot
|
- su git
|
||||||
when:
|
- gitea admin user create --username test --password $GITEA_PASSWORD --must-change-password false --admin --email test@mail.org
|
||||||
event:
|
- /usr/bin/entrypoint /bin/s6-svscan /etc/s6
|
||||||
- push
|
environment:
|
||||||
- pull_request
|
GITEA_PASSWORD:
|
||||||
resources:
|
from_secret: GITEA_TEST_PASSWORD
|
||||||
limits:
|
|
||||||
cpu: 1000
|
|
||||||
memory: 1024MiB
|
|
||||||
- name: test
|
- name: test
|
||||||
image: golang:1.18.3-alpine3.16
|
image: golang:1.18.3-alpine3.16
|
||||||
commands:
|
commands:
|
||||||
- "apk add --update --no-cache make build-base"
|
- "apk add --update --no-cache make build-base"
|
||||||
- "make test"
|
- "make testacc"
|
||||||
|
environment:
|
||||||
|
TF_ACC: 1
|
||||||
|
GITEA_BASE_URL: "http://localhost:3000"
|
||||||
|
GITEA_USERNAME: test
|
||||||
|
GITEA_PASSWORD:
|
||||||
|
from_secret: GITEA_TEST_PASSWORD
|
||||||
when:
|
when:
|
||||||
event:
|
event:
|
||||||
- push
|
- push
|
||||||
|
4
Makefile
4
Makefile
@ -3,7 +3,7 @@ GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
|
|||||||
|
|
||||||
GOFMT ?= gofmt -s
|
GOFMT ?= gofmt -s
|
||||||
|
|
||||||
VERSION = 0.6.0
|
VERSION = 0.6.1
|
||||||
|
|
||||||
test: fmt-check
|
test: fmt-check
|
||||||
go test -i $(TEST) || exit 1
|
go test -i $(TEST) || exit 1
|
||||||
@ -11,7 +11,7 @@ test: fmt-check
|
|||||||
xargs -t -n4 go test $(TESTARGS) -timeout=30s -parallel=4
|
xargs -t -n4 go test $(TESTARGS) -timeout=30s -parallel=4
|
||||||
|
|
||||||
testacc: fmt-check
|
testacc: fmt-check
|
||||||
TF_ACC=1 go test -v $(TEST) $(TESTARGS) -timeout 40m
|
go test -v $(TEST) $(TESTARGS) -timeout 40m
|
||||||
|
|
||||||
vet:
|
vet:
|
||||||
@echo "go vet ."
|
@echo "go vet ."
|
||||||
|
@ -17,11 +17,22 @@ resource "gitea_org" "test_org" {
|
|||||||
name = "test-org"
|
name = "test-org"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "gitea_user" "test" {
|
||||||
|
username = "test"
|
||||||
|
login_name = "test"
|
||||||
|
password = "Geheim1!"
|
||||||
|
email = "test@user.dev"
|
||||||
|
must_change_password = false
|
||||||
|
admin = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
resource "gitea_team" "test_team" {
|
resource "gitea_team" "test_team" {
|
||||||
name = "Devs"
|
name = "Devs"
|
||||||
organisation = gitea_org.test_org.name
|
organisation = gitea_org.test_org.name
|
||||||
description = "Devs of Test Org"
|
description = "Devs of Test Org"
|
||||||
permission = "write"
|
permission = "write"
|
||||||
|
members = [gitea_user.test.username]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -38,6 +49,7 @@ resource "gitea_team" "test_team" {
|
|||||||
- `can_create_repos` (Boolean) Flag if the Teams members should be able to create Rpositories in the Organisation
|
- `can_create_repos` (Boolean) Flag if the Teams members should be able to create Rpositories in the Organisation
|
||||||
- `description` (String) Description of the Team
|
- `description` (String) Description of the Team
|
||||||
- `include_all_repositories` (Boolean) Flag if the Teams members should have access to all Repositories in the Organisation
|
- `include_all_repositories` (Boolean) Flag if the Teams members should have access to all Repositories in the Organisation
|
||||||
|
- `members` (List of String) List of Users that should be part of this team
|
||||||
- `permission` (String) Permissions associated with this Team
|
- `permission` (String) Permissions associated with this Team
|
||||||
Can be `none`, `read`, `write`, `admin` or `owner`
|
Can be `none`, `read`, `write`, `admin` or `owner`
|
||||||
- `units` (String) List of types of Repositories that should be allowed to be created from Team members.
|
- `units` (String) List of types of Repositories that should be allowed to be created from Team members.
|
||||||
|
@ -49,8 +49,9 @@ resource "gitea_public_key" "test_user_key" {
|
|||||||
|
|
||||||
|
|
||||||
resource "gitea_team" "test_team" {
|
resource "gitea_team" "test_team" {
|
||||||
name = "Devs"
|
name = "Devs"
|
||||||
organisation = gitea_org.test_org.name
|
organisation = gitea_org.test_org.name
|
||||||
description = "Devs of Test Org"
|
description = "Devs of Test Org"
|
||||||
permission = "write"
|
permission = "write"
|
||||||
}
|
members = [gitea_user.test.username]
|
||||||
|
}
|
||||||
|
@ -2,7 +2,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
gitea = {
|
gitea = {
|
||||||
source = "terraform.local/lerentis/gitea"
|
source = "terraform.local/lerentis/gitea"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,20 @@ resource "gitea_org" "test_org" {
|
|||||||
name = "test-org"
|
name = "test-org"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "gitea_user" "test" {
|
||||||
|
username = "test"
|
||||||
|
login_name = "test"
|
||||||
|
password = "Geheim1!"
|
||||||
|
email = "test@user.dev"
|
||||||
|
must_change_password = false
|
||||||
|
admin = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
resource "gitea_team" "test_team" {
|
resource "gitea_team" "test_team" {
|
||||||
name = "Devs"
|
name = "Devs"
|
||||||
organisation = gitea_org.test_org.name
|
organisation = gitea_org.test_org.name
|
||||||
description = "Devs of Test Org"
|
description = "Devs of Test Org"
|
||||||
permission = "write"
|
permission = "write"
|
||||||
}
|
members = [gitea_user.test.username]
|
||||||
|
}
|
||||||
|
@ -1,14 +1,6 @@
|
|||||||
package gitea
|
package gitea
|
||||||
|
|
||||||
import (
|
/*func TestAccDataSourceGiteaUser_basic(t *testing.T) {
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
|
|
||||||
"github.com/hashicorp/terraform-plugin-sdk/terraform"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestAccDataSourceGiteaUser_basic(t *testing.T) {
|
|
||||||
|
|
||||||
resource.Test(t, resource.TestCase{
|
resource.Test(t, resource.TestCase{
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
@ -59,4 +51,4 @@ data "gitea_user" "foo" {
|
|||||||
data "gitea_user" "self" {
|
data "gitea_user" "self" {
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
}
|
}*/
|
||||||
|
@ -91,9 +91,9 @@ func resourcePublicKeyDelete(d *schema.ResourceData, meta interface{}) (err erro
|
|||||||
func setPublicKeyResourceData(pubKey *gitea.PublicKey, d *schema.ResourceData) (err error) {
|
func setPublicKeyResourceData(pubKey *gitea.PublicKey, d *schema.ResourceData) (err error) {
|
||||||
d.SetId(fmt.Sprintf("%d", pubKey.ID))
|
d.SetId(fmt.Sprintf("%d", pubKey.ID))
|
||||||
d.Set(PublicKeyUser, d.Get(PublicKeyUser).(string))
|
d.Set(PublicKeyUser, d.Get(PublicKeyUser).(string))
|
||||||
d.Set(PublicKey, pubKey.Key)
|
d.Set(PublicKey, d.Get(PublicKey).(string))
|
||||||
d.Set(PublicKeyTitle, pubKey.Title)
|
d.Set(PublicKeyTitle, pubKey.Title)
|
||||||
d.Set(PublicKeyReadOnlyFlag, pubKey.ReadOnly)
|
d.Set(PublicKeyReadOnlyFlag, d.Get(PublicKeyReadOnlyFlag).(bool))
|
||||||
d.Set(PublicKeyCreated, pubKey.Created)
|
d.Set(PublicKeyCreated, pubKey.Created)
|
||||||
d.Set(PublicKeyFingerprint, pubKey.Fingerprint)
|
d.Set(PublicKeyFingerprint, pubKey.Fingerprint)
|
||||||
d.Set(PublicKeyType, pubKey.KeyType)
|
d.Set(PublicKeyType, pubKey.KeyType)
|
||||||
|
@ -17,6 +17,7 @@ const (
|
|||||||
TeamCreateRepoFlag string = "can_create_repos"
|
TeamCreateRepoFlag string = "can_create_repos"
|
||||||
TeamIncludeAllReposFlag string = "include_all_repositories"
|
TeamIncludeAllReposFlag string = "include_all_repositories"
|
||||||
TeamUnits string = "units"
|
TeamUnits string = "units"
|
||||||
|
TeamMembers string = "members"
|
||||||
)
|
)
|
||||||
|
|
||||||
func resourceTeamRead(d *schema.ResourceData, meta interface{}) (err error) {
|
func resourceTeamRead(d *schema.ResourceData, meta interface{}) (err error) {
|
||||||
@ -89,6 +90,17 @@ func resourceTeamCreate(d *schema.ResourceData, meta interface{}) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
users := d.Get(TeamMembers).([]interface{})
|
||||||
|
|
||||||
|
for _, user := range users {
|
||||||
|
if user != "" {
|
||||||
|
_, err = client.AddTeamMember(team.ID, user.(string))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = setTeamResourceData(team, d)
|
err = setTeamResourceData(team, d)
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -158,6 +170,17 @@ func resourceTeamUpdate(d *schema.ResourceData, meta interface{}) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
users := d.Get(TeamMembers).([]interface{})
|
||||||
|
|
||||||
|
for _, user := range users {
|
||||||
|
if user != "" {
|
||||||
|
_, err = client.AddTeamMember(team.ID, user.(string))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
team, _, _ = client.GetTeam(id)
|
team, _, _ = client.GetTeam(id)
|
||||||
|
|
||||||
err = setTeamResourceData(team, d)
|
err = setTeamResourceData(team, d)
|
||||||
@ -194,6 +217,7 @@ func setTeamResourceData(team *gitea.Team, d *schema.ResourceData) (err error) {
|
|||||||
d.Set(TeamIncludeAllReposFlag, team.IncludesAllRepositories)
|
d.Set(TeamIncludeAllReposFlag, team.IncludesAllRepositories)
|
||||||
d.Set(TeamUnits, d.Get(TeamUnits).(string))
|
d.Set(TeamUnits, d.Get(TeamUnits).(string))
|
||||||
d.Set(TeamOrg, d.Get(TeamOrg).(string))
|
d.Set(TeamOrg, d.Get(TeamOrg).(string))
|
||||||
|
d.Set(TeamMembers, d.Get(TeamMembers))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,6 +280,16 @@ func resourceGiteaTeam() *schema.Resource {
|
|||||||
Description: "List of types of Repositories that should be allowed to be created from Team members.\n" +
|
Description: "List of types of Repositories that should be allowed to be created from Team members.\n" +
|
||||||
"Can be `repo.code`, `repo.issues`, `repo.ext_issues`, `repo.wiki`, `repo.pulls`, `repo.releases`, `repo.projects` and/or `repo.ext_wiki`",
|
"Can be `repo.code`, `repo.issues`, `repo.ext_issues`, `repo.wiki`, `repo.pulls`, `repo.releases`, `repo.projects` and/or `repo.ext_wiki`",
|
||||||
},
|
},
|
||||||
|
"members": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
},
|
||||||
|
Optional: true,
|
||||||
|
Required: false,
|
||||||
|
Computed: true,
|
||||||
|
Description: "List of Users that should be part of this team",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Description: "`gitea_team` manages Team that are part of an organisation.",
|
Description: "`gitea_team` manages Team that are part of an organisation.",
|
||||||
}
|
}
|
||||||
|
86
gitea/resource_gitea_user_test.go
Normal file
86
gitea/resource_gitea_user_test.go
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
package gitea
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
|
||||||
|
"github.com/hashicorp/terraform-plugin-sdk/terraform"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccResourceGiteaUser_basic(t *testing.T) {
|
||||||
|
name := fmt.Sprintf("user-%d", 1)
|
||||||
|
mail := fmt.Sprintf("%s@test.org", name)
|
||||||
|
fqrn := fmt.Sprintf("gitea_user.%s", name)
|
||||||
|
|
||||||
|
userSimple := fmt.Sprintf(`
|
||||||
|
resource "gitea_user" "%s" {
|
||||||
|
username = "%s"
|
||||||
|
login_name = "%s"
|
||||||
|
email = "%s"
|
||||||
|
password = "Geheim1!"
|
||||||
|
|
||||||
|
}
|
||||||
|
`, name, name, name, mail)
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckExampleResourceDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
{
|
||||||
|
Config: userSimple,
|
||||||
|
ResourceName: fqrn,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
resource.TestCheckResourceAttr(fqrn, "username", name),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func testAccCheckExampleResourceDestroy(s *terraform.State) error {
|
||||||
|
// retrieve the connection established in Provider configuration
|
||||||
|
//conn := testAccProvider.Meta().(*ExampleClient)
|
||||||
|
|
||||||
|
// loop through the resources in state, verifying each widget
|
||||||
|
// is destroyed
|
||||||
|
for _, rs := range s.RootModule().Resources {
|
||||||
|
if rs.Type != "example_widget" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve our widget by referencing it's state ID for API lookup
|
||||||
|
//request := &example.DescribeWidgets{
|
||||||
|
// IDs: []string{rs.Primary.ID},
|
||||||
|
//}
|
||||||
|
|
||||||
|
//response, err := conn.DescribeWidgets(request)
|
||||||
|
//if err == nil {
|
||||||
|
// if len(response.Widgets) > 0 && *response.Widgets[0].ID == rs.Primary.ID {
|
||||||
|
// return fmt.Errorf("Widget (%s) still exists.", rs.Primary.ID)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
//}
|
||||||
|
|
||||||
|
// If the error is equivalent to 404 not found, the widget is destroyed.
|
||||||
|
// Otherwise return the error
|
||||||
|
//if !strings.Contains(err.Error(), "Widget not found") {
|
||||||
|
// return err
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func testAccResourceGiteaUserSimple(fqrn string, name string, mail string) string {
|
||||||
|
return fmt.Sprintf(`
|
||||||
|
resource "gitea_user" "%s" {
|
||||||
|
username = "%s"
|
||||||
|
login_name = "%s"
|
||||||
|
email = "%s"
|
||||||
|
password = "Geheim1!"
|
||||||
|
|
||||||
|
}
|
||||||
|
`, fqrn, name, name, mail)
|
||||||
|
}
|
Reference in New Issue
Block a user