-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #107 from cloudsmith-io/ceng-286-terraform-provide…
…r-community-pr-review CENG-286: PR reviews
- Loading branch information
Showing
5 changed files
with
154 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
//nolint:testpackage | ||
package cloudsmith | ||
|
||
import ( | ||
"fmt" | ||
"os" | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" | ||
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform" | ||
) | ||
|
||
// create a baisc package deny policy function | ||
|
||
func TestAccPackageDenyPolicy_basic(t *testing.T) { | ||
t.Parallel() | ||
|
||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
CheckDestroy: testAccPackageDenyPolicyCheckDestroy("cloudsmith_package_deny_policy.test"), | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccPackageDenyPolicyConfigBasic, | ||
Check: resource.ComposeTestCheckFunc( | ||
testAccPackageDenyPolicyCheckExists("cloudsmith_package_deny_policy.test"), | ||
resource.TestCheckResourceAttr("cloudsmith_package_deny_policy.test", "namespace", os.Getenv("CLOUDSMITH_NAMESPACE")), | ||
resource.TestCheckResourceAttr("cloudsmith_package_deny_policy.test", "enabled", "true"), | ||
resource.TestCheckResourceAttr("cloudsmith_package_deny_policy.test", "name", "test-package-deny-policy-terraform-provider"), | ||
resource.TestCheckResourceAttr("cloudsmith_package_deny_policy.test", "package_query", "name:example"), | ||
), | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
// create a basic package deny policy config | ||
|
||
var testAccPackageDenyPolicyConfigBasic = fmt.Sprintf(` | ||
resource "cloudsmith_package_deny_policy" "test" { | ||
namespace = "%s" | ||
enabled = true | ||
name = "test-package-deny-policy-terraform-provider" | ||
package_query = "name:example" | ||
} | ||
`, os.Getenv("CLOUDSMITH_NAMESPACE")) | ||
|
||
// create a package deny policy check destroy function | ||
|
||
func testAccPackageDenyPolicyCheckDestroy(name string) resource.TestCheckFunc { | ||
return func(s *terraform.State) error { | ||
client := testAccProvider.Meta().(*providerConfig).APIClient | ||
for _, rs := range s.RootModule().Resources { | ||
if rs.Type != "cloudsmith_package_deny_policy" { | ||
continue | ||
} | ||
|
||
_, _, err := client.OrgsApi.OrgsDenyPolicyRead(testAccProvider.Meta().(*providerConfig).Auth, rs.Primary.Attributes["namespace"], rs.Primary.ID).Execute() | ||
if err == nil { | ||
return fmt.Errorf("Package deny policy still exists") | ||
} | ||
} | ||
return nil | ||
} | ||
} | ||
|
||
// create a package deny policy check exists function | ||
|
||
func testAccPackageDenyPolicyCheckExists(name string) resource.TestCheckFunc { | ||
return func(s *terraform.State) error { | ||
client := testAccProvider.Meta().(*providerConfig).APIClient | ||
for _, rs := range s.RootModule().Resources { | ||
if rs.Type != "cloudsmith_package_deny_policy" { | ||
continue | ||
} | ||
|
||
_, _, err := client.OrgsApi.OrgsDenyPolicyRead(testAccProvider.Meta().(*providerConfig).Auth, rs.Primary.Attributes["namespace"], rs.Primary.ID).Execute() | ||
if err != nil { | ||
return fmt.Errorf("Package deny policy does not exist") | ||
} | ||
} | ||
return nil | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# Package Deny Policy Resource | ||
|
||
Create a package deny policy resource. | ||
|
||
## Example Usage | ||
|
||
```hcl | ||
provider "cloudsmith" { | ||
api_key = "my-api-key" | ||
} | ||
data "cloudsmith_organization" "my_organization" { | ||
slug = "my-organization" | ||
} | ||
data "cloudsmith_package_deny_policy" "test" { | ||
namespace = my_organization.slug_perm | ||
enabled = true | ||
name = "test-package-deny-policy-terraform-provider" | ||
package_query = "name:example" | ||
} | ||
``` | ||
|
||
## Argument Reference | ||
|
||
The following arguments are supported: | ||
|
||
- `name` (Optional) - A descriptive name for the package deny policy. | ||
- `description` (Optional) - Description of the package deny policy. | ||
- `package_query` (Required) - The query to match the packages to be blocked. | ||
- `enabled` (Optional) - Is the package deny policy enabled? Defaults to `true` | ||
- `namespace` - The namespace where package deny policy is managed | ||
|
||
## Attribute Reference | ||
|
||
The following attributes are exported: | ||
|
||
- `id` - The ID of the package deny policy. | ||
- `name` - The name of the package deny policy. | ||
- `description` - The description of the package deny policy. | ||
- `package_query` - The query used to match the packages to be blocked. | ||
- `enabled` - Whether the package deny policy is enabled. | ||
- `namespace` - The namespace where package deny policy is managed |