Verified Commit 894a9271 authored by BoxBoxJason's avatar BoxBoxJason Committed by GitLab
Browse files

feat: support project api 'cicd_catalog_enabled' field

Changelog: Improvements
parent dc485506
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -497,6 +497,7 @@ type Project struct {
	ProtectMergeRequestPipelines              bool                                        `json:"protect_merge_request_pipelines"`
	MergeRequestTitleRegex                    string                                      `json:"merge_request_title_regex"`
	MergeRequestTitleRegexDescription         string                                      `json:"merge_request_title_regex_description"`
	CICDCatalogEnabled                        bool                                        `json:"cicd_catalog_enabled"`
	// Deprecated: Use PackageRegistryAccessLevel instead.
	PackagesEnabled bool `json:"packages_enabled"`
	// Deprecated: use Topics instead
@@ -871,6 +872,7 @@ type CreateProjectOptions struct {
	BuildTimeout                              *int64                               `url:"build_timeout,omitempty" json:"build_timeout,omitempty"`
	BuildsAccessLevel                         *AccessControlValue                  `url:"builds_access_level,omitempty" json:"builds_access_level,omitempty"`
	CIConfigPath                              *string                              `url:"ci_config_path,omitempty" json:"ci_config_path,omitempty"`
	CICDCatalogEnabled                        *bool                                `url:"cicd_catalog_enabled,omitempty" json:"cicd_catalog_enabled,omitempty"`
	ContainerExpirationPolicyAttributes       *ContainerExpirationPolicyAttributes `url:"container_expiration_policy_attributes,omitempty" json:"container_expiration_policy_attributes,omitempty"`
	ContainerRegistryAccessLevel              *AccessControlValue                  `url:"container_registry_access_level,omitempty" json:"container_registry_access_level,omitempty"`
	PackageRegistryAccessLevel                *AccessControlValue                  `url:"package_registry_access_level,omitempty" json:"package_registry_access_level,omitempty"`
@@ -1075,6 +1077,7 @@ type EditProjectOptions struct {
	CISeparatedCaches                         *bool                                        `url:"ci_separated_caches,omitempty" json:"ci_separated_caches,omitempty"`
	CIRestrictPipelineCancellationRole        *AccessControlValue                          `url:"ci_restrict_pipeline_cancellation_role,omitempty" json:"ci_restrict_pipeline_cancellation_role,omitempty"`
	CIPipelineVariablesMinimumOverrideRole    *CIPipelineVariablesMinimumOverrideRoleValue `url:"ci_pipeline_variables_minimum_override_role,omitempty" json:"ci_pipeline_variables_minimum_override_role,omitempty"`
	CICDCatalogEnabled                        *bool                                        `url:"cicd_catalog_enabled,omitempty" json:"cicd_catalog_enabled,omitempty"`
	ContainerExpirationPolicyAttributes       *ContainerExpirationPolicyAttributes         `url:"container_expiration_policy_attributes,omitempty" json:"container_expiration_policy_attributes,omitempty"`
	ContainerRegistryAccessLevel              *AccessControlValue                          `url:"container_registry_access_level,omitempty" json:"container_registry_access_level,omitempty"`
	PackageRegistryAccessLevel                *AccessControlValue                          `url:"package_registry_access_level,omitempty" json:"package_registry_access_level,omitempty"`
+12 −4
Original line number Diff line number Diff line
@@ -348,6 +348,7 @@ func TestEditProject(t *testing.T) {
		CIRestrictPipelineCancellationRole:     Ptr(developerRole),
		CIPipelineVariablesMinimumOverrideRole: Ptr(developerPipelineVariablesRole),
		MRDefaultTitleTemplate:                 Ptr("Default MR title"),
		CICDCatalogEnabled:                     Ptr(true),
	}

	mux.HandleFunc("/api/v4/projects/1", func(w http.ResponseWriter, r *http.Request) {
@@ -357,6 +358,7 @@ func TestEditProject(t *testing.T) {
			"ci_restrict_pipeline_cancellation_role":      "developer",
			"ci_pipeline_variables_minimum_override_role": "developer",
			"mr_default_title_template":                   "Default MR title",
			"cicd_catalog_enabled":                        true,
		})

		// Print the start of the mock example from https://docs.gitlab.com/api/projects/#edit-a-project
@@ -375,7 +377,8 @@ func TestEditProject(t *testing.T) {
			"ci_restrict_pipeline_cancellation_role": "developer",
			"ci_pipeline_variables_minimum_override_role": "developer",
			"ci_delete_pipelines_in_seconds": 14,
			"mr_default_title_template": "Default MR title"
			"mr_default_title_template": "Default MR title",
			"cicd_catalog_enabled": true
		}`)
	})

@@ -386,6 +389,7 @@ func TestEditProject(t *testing.T) {
	assert.Equal(t, developerPipelineVariablesRole, project.CIPipelineVariablesMinimumOverrideRole)
	assert.Equal(t, int64(14), project.CIDeletePipelinesInSeconds)
	assert.Equal(t, "Default MR title", project.MRDefaultTitleTemplate)
	assert.True(t, project.CICDCatalogEnabled)
}

func TestEditProjectWithReviewerAssignmentStrategy(t *testing.T) {
@@ -469,7 +473,8 @@ func TestGetProjectByID(t *testing.T) {
			"package_registry_access_level": "public",
			"build_coverage_regex": "Total.*([0-9]{1,3})%",
			"ci_delete_pipelines_in_seconds": 14,
			"resource_group_default_process_mode": "oldest_first"
			"resource_group_default_process_mode": "oldest_first",
			"cicd_catalog_enabled": true
		  }`)
	})

@@ -491,6 +496,7 @@ func TestGetProjectByID(t *testing.T) {
		CIPipelineVariablesMinimumOverrideRole: "no_one_allowed",
		CIDeletePipelinesInSeconds:             14,
		ResourceGroupDefaultProcessMode:        OldestFirst,
		CICDCatalogEnabled:                     true,
	}

	project, resp, err := client.Projects.GetProject(1, nil)
@@ -568,21 +574,23 @@ func TestCreateProject(t *testing.T) {
			"name":                      "n",
			"merge_method":              "rebase_merge",
			"mr_default_title_template": "Default MR title",
			"cicd_catalog_enabled":      true,
		})
		fmt.Fprint(w, `{"id":1,"mr_default_title_template":"Default MR title"}`)
		fmt.Fprint(w, `{"id":1,"mr_default_title_template":"Default MR title","cicd_catalog_enabled":true}`)
	})

	opt := &CreateProjectOptions{
		Name:                   Ptr("n"),
		MergeMethod:            Ptr(RebaseMerge),
		MRDefaultTitleTemplate: Ptr("Default MR title"),
		CICDCatalogEnabled:     Ptr(true),
	}

	project, resp, err := client.Projects.CreateProject(opt)
	assert.NoError(t, err)
	assert.NotNil(t, resp)

	want := &Project{ID: 1, MRDefaultTitleTemplate: "Default MR title"}
	want := &Project{ID: 1, MRDefaultTitleTemplate: "Default MR title", CICDCatalogEnabled: true}
	assert.Equal(t, want, project)
}