Merged in jmathison/v2-upload-batch (pull request #224)
Implement v2 upload batch cleanup * Implement v2 upload batch cleanup * Merge remote-tracking branch 'origin/main' into jmathison/v2-upload-batch * Address upload batch review feedback * Raise batch worker coverage * Fix batch cleanup review issues Approved-by: Jay Brown
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -32,7 +33,7 @@ func CreatePermitUser(client *http.Client, config *PermitConfig, cognitoUser *Co
|
||||
return fmt.Errorf("failed to get environment ID: %w", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/v2/facts/%s/%s/users", config.BaseURL, projectID, envID)
|
||||
endpoint := fmt.Sprintf("%s/v2/facts/%s/%s/users", config.BaseURL, projectID, envID)
|
||||
|
||||
attrs := map[string]interface{}{
|
||||
"cognito_username": cognitoUser.Username,
|
||||
@@ -55,7 +56,7 @@ func CreatePermitUser(client *http.Client, config *PermitConfig, cognitoUser *Co
|
||||
return fmt.Errorf("error marshaling user data: %w", err)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
|
||||
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(jsonData))
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -121,9 +122,9 @@ func GetPermitUser(client *http.Client, config *PermitConfig, userKey string) (*
|
||||
return nil, fmt.Errorf("failed to get environment ID: %w", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/v2/facts/%s/%s/users/%s", config.BaseURL, projectID, envID, userKey)
|
||||
endpoint := fmt.Sprintf("%s/v2/facts/%s/%s/users/%s", config.BaseURL, projectID, envID, userKey)
|
||||
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -172,9 +173,9 @@ func DeletePermitUser(client *http.Client, config *PermitConfig, userKey string)
|
||||
return fmt.Errorf("failed to get environment ID: %w", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/v2/facts/%s/%s/users/%s", config.BaseURL, projectID, envID, userKey)
|
||||
endpoint := fmt.Sprintf("%s/v2/facts/%s/%s/users/%s", config.BaseURL, projectID, envID, userKey)
|
||||
|
||||
req, err := http.NewRequest("DELETE", url, nil)
|
||||
req, err := http.NewRequest("DELETE", endpoint, nil)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -226,9 +227,9 @@ func FindPermitUserByEmail(client *http.Client, config *PermitConfig, email stri
|
||||
}
|
||||
|
||||
// Search for user by email
|
||||
url := fmt.Sprintf("%s/v2/facts/%s/%s/users?search=%s", config.BaseURL, projectID, envID, email)
|
||||
endpoint := fmt.Sprintf("%s/v2/facts/%s/%s/users?search=%s", config.BaseURL, projectID, envID, email)
|
||||
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -328,7 +329,7 @@ func AssignRole(client *http.Client, config *PermitConfig, userID, role string)
|
||||
return fmt.Errorf("failed to get environment ID: %w", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/v2/facts/%s/%s/role_assignments", config.BaseURL, projectID, envID)
|
||||
endpoint := fmt.Sprintf("%s/v2/facts/%s/%s/role_assignments", config.BaseURL, projectID, envID)
|
||||
|
||||
tenant := config.DefaultTenant
|
||||
if tenant == "" {
|
||||
@@ -346,7 +347,7 @@ func AssignRole(client *http.Client, config *PermitConfig, userID, role string)
|
||||
return fmt.Errorf("error marshaling role assignment: %w", err)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
|
||||
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(jsonData))
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -402,7 +403,7 @@ func UnassignRole(client *http.Client, config *PermitConfig, userID, role string
|
||||
return fmt.Errorf("failed to get environment ID: %w", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/v2/facts/%s/%s/role_assignments", config.BaseURL, projectID, envID)
|
||||
endpoint := fmt.Sprintf("%s/v2/facts/%s/%s/role_assignments", config.BaseURL, projectID, envID)
|
||||
|
||||
tenant := config.DefaultTenant
|
||||
if tenant == "" {
|
||||
@@ -420,7 +421,7 @@ func UnassignRole(client *http.Client, config *PermitConfig, userID, role string
|
||||
return fmt.Errorf("error marshaling role assignment: %w", err)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("DELETE", url, bytes.NewBuffer(jsonData))
|
||||
req, err := http.NewRequest("DELETE", endpoint, bytes.NewBuffer(jsonData))
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -476,10 +477,10 @@ func GetPermitUserRoles(client *http.Client, config *PermitConfig, userKey strin
|
||||
return nil, fmt.Errorf("failed to get environment ID: %w", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/v2/facts/%s/%s/role_assignments?user=%s",
|
||||
config.BaseURL, projectID, envID, userKey)
|
||||
endpoint := fmt.Sprintf("%s/v2/facts/%s/%s/role_assignments?user=%s",
|
||||
config.BaseURL, projectID, envID, url.QueryEscape(userKey))
|
||||
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -559,10 +560,10 @@ func GetExistingRoles(client *http.Client, config *PermitConfig) ([]string, erro
|
||||
}
|
||||
|
||||
// Construct API URL for roles endpoint
|
||||
url := fmt.Sprintf("%s/v2/schema/%s/%s/roles", config.BaseURL, projectID, envID)
|
||||
endpoint := fmt.Sprintf("%s/v2/schema/%s/%s/roles", config.BaseURL, projectID, envID)
|
||||
|
||||
// Create HTTP request
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -714,9 +715,9 @@ type RoleDetails struct {
|
||||
// - *APIKeyScope: The scope containing organization, project, and environment IDs
|
||||
// - error: Error if the API call fails or response cannot be parsed
|
||||
func GetAPIKeyScope(client *http.Client, apiKey, baseURL string) (*APIKeyScope, error) {
|
||||
url := fmt.Sprintf("%s/v2/api-key/scope", baseURL)
|
||||
endpoint := fmt.Sprintf("%s/v2/api-key/scope", baseURL)
|
||||
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
@@ -767,10 +768,10 @@ func GetRoleDetails(client *http.Client, config *PermitConfig, roleKey string) (
|
||||
return nil, fmt.Errorf("failed to get environment ID: %w", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/v2/schema/%s/%s/roles/%s",
|
||||
endpoint := fmt.Sprintf("%s/v2/schema/%s/%s/roles/%s",
|
||||
config.BaseURL, projectID, envID, roleKey)
|
||||
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating request: %w", err)
|
||||
}
|
||||
|
||||
@@ -71,6 +71,24 @@ func TestGetAPIKeyScope_Success(t *testing.T) {
|
||||
assert.Equal(t, "env-789", scope.EnvironmentID)
|
||||
}
|
||||
|
||||
func TestGetPermitUserRolesEscapesUserKey(t *testing.T) {
|
||||
server, config := createMockPermitServer(t, map[string]http.HandlerFunc{
|
||||
"/v2/facts/test-project/test-env/role_assignments": func(w http.ResponseWriter, r *http.Request) {
|
||||
assert.Equal(t, "jacob+2@mathisonprojects.com", r.URL.Query().Get("user"))
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
_, err := w.Write([]byte(`[{"role":"super_admin","user":"jacob+2@mathisonprojects.com","tenant":"default"}]`))
|
||||
require.NoError(t, err)
|
||||
},
|
||||
})
|
||||
defer server.Close()
|
||||
|
||||
roles, err := GetPermitUserRoles(server.Client(), config, "jacob+2@mathisonprojects.com")
|
||||
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []string{"super_admin"}, roles)
|
||||
}
|
||||
|
||||
// TestGetAPIKeyScope_OrgLevelKey tests API key with only organization scope
|
||||
func TestGetAPIKeyScope_OrgLevelKey(t *testing.T) {
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
Reference in New Issue
Block a user