github.com/google/go-github/v69@v69.2.0/github/repos_actions_permissions_test.go (about) 1 // Copyright 2022 The go-github AUTHORS. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 package github 7 8 import ( 9 "context" 10 "encoding/json" 11 "fmt" 12 "net/http" 13 "testing" 14 15 "github.com/google/go-cmp/cmp" 16 ) 17 18 func TestRepositoriesService_GetActionsPermissions(t *testing.T) { 19 t.Parallel() 20 client, mux, _ := setup(t) 21 22 mux.HandleFunc("/repos/o/r/actions/permissions", func(w http.ResponseWriter, r *http.Request) { 23 testMethod(t, r, "GET") 24 fmt.Fprint(w, `{"enabled": true, "allowed_actions": "all"}`) 25 }) 26 27 ctx := context.Background() 28 org, _, err := client.Repositories.GetActionsPermissions(ctx, "o", "r") 29 if err != nil { 30 t.Errorf("Repositories.GetActionsPermissions returned error: %v", err) 31 } 32 want := &ActionsPermissionsRepository{Enabled: Ptr(true), AllowedActions: Ptr("all")} 33 if !cmp.Equal(org, want) { 34 t.Errorf("Repositories.GetActionsPermissions returned %+v, want %+v", org, want) 35 } 36 37 const methodName = "GetActionsPermissions" 38 testBadOptions(t, methodName, func() (err error) { 39 _, _, err = client.Repositories.GetActionsPermissions(ctx, "\n", "\n") 40 return err 41 }) 42 43 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 44 got, resp, err := client.Repositories.GetActionsPermissions(ctx, "o", "r") 45 if got != nil { 46 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 47 } 48 return resp, err 49 }) 50 } 51 52 func TestRepositoriesService_EditActionsPermissions(t *testing.T) { 53 t.Parallel() 54 client, mux, _ := setup(t) 55 56 input := &ActionsPermissionsRepository{Enabled: Ptr(true), AllowedActions: Ptr("selected")} 57 58 mux.HandleFunc("/repos/o/r/actions/permissions", func(w http.ResponseWriter, r *http.Request) { 59 v := new(ActionsPermissionsRepository) 60 assertNilError(t, json.NewDecoder(r.Body).Decode(v)) 61 62 testMethod(t, r, "PUT") 63 if !cmp.Equal(v, input) { 64 t.Errorf("Request body = %+v, want %+v", v, input) 65 } 66 67 fmt.Fprint(w, `{"enabled": true, "allowed_actions": "selected"}`) 68 }) 69 70 ctx := context.Background() 71 org, _, err := client.Repositories.EditActionsPermissions(ctx, "o", "r", *input) 72 if err != nil { 73 t.Errorf("Repositories.EditActionsPermissions returned error: %v", err) 74 } 75 76 want := &ActionsPermissionsRepository{Enabled: Ptr(true), AllowedActions: Ptr("selected")} 77 if !cmp.Equal(org, want) { 78 t.Errorf("Repositories.EditActionsPermissions returned %+v, want %+v", org, want) 79 } 80 81 const methodName = "EditActionsPermissions" 82 testBadOptions(t, methodName, func() (err error) { 83 _, _, err = client.Repositories.EditActionsPermissions(ctx, "\n", "\n", *input) 84 return err 85 }) 86 87 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 88 got, resp, err := client.Repositories.EditActionsPermissions(ctx, "o", "r", *input) 89 if got != nil { 90 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 91 } 92 return resp, err 93 }) 94 } 95 96 func TestActionsPermissionsRepository_Marshal(t *testing.T) { 97 t.Parallel() 98 testJSONMarshal(t, &ActionsPermissions{}, "{}") 99 100 u := &ActionsPermissionsRepository{ 101 Enabled: Ptr(true), 102 AllowedActions: Ptr("all"), 103 SelectedActionsURL: Ptr("someURL"), 104 } 105 106 want := `{ 107 "enabled": true, 108 "allowed_actions": "all", 109 "selected_actions_url": "someURL" 110 }` 111 112 testJSONMarshal(t, u, want) 113 } 114 115 func TestRepositoriesService_GetDefaultWorkflowPermissions(t *testing.T) { 116 t.Parallel() 117 client, mux, _ := setup(t) 118 119 mux.HandleFunc("/repos/o/r/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { 120 testMethod(t, r, "GET") 121 fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) 122 }) 123 124 ctx := context.Background() 125 org, _, err := client.Repositories.GetDefaultWorkflowPermissions(ctx, "o", "r") 126 if err != nil { 127 t.Errorf("Repositories.GetDefaultWorkflowPermissions returned error: %v", err) 128 } 129 want := &DefaultWorkflowPermissionRepository{DefaultWorkflowPermissions: Ptr("read"), CanApprovePullRequestReviews: Ptr(true)} 130 if !cmp.Equal(org, want) { 131 t.Errorf("Repositories.GetDefaultWorkflowPermissions returned %+v, want %+v", org, want) 132 } 133 134 const methodName = "GetDefaultWorkflowPermissions" 135 testBadOptions(t, methodName, func() (err error) { 136 _, _, err = client.Repositories.GetDefaultWorkflowPermissions(ctx, "\n", "\n") 137 return err 138 }) 139 140 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 141 got, resp, err := client.Repositories.GetDefaultWorkflowPermissions(ctx, "o", "r") 142 if got != nil { 143 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 144 } 145 return resp, err 146 }) 147 } 148 149 func TestRepositoriesService_EditDefaultWorkflowPermissions(t *testing.T) { 150 t.Parallel() 151 client, mux, _ := setup(t) 152 153 input := &DefaultWorkflowPermissionRepository{DefaultWorkflowPermissions: Ptr("read"), CanApprovePullRequestReviews: Ptr(true)} 154 155 mux.HandleFunc("/repos/o/r/actions/permissions/workflow", func(w http.ResponseWriter, r *http.Request) { 156 v := new(DefaultWorkflowPermissionRepository) 157 assertNilError(t, json.NewDecoder(r.Body).Decode(v)) 158 159 testMethod(t, r, "PUT") 160 if !cmp.Equal(v, input) { 161 t.Errorf("Request body = %+v, want %+v", v, input) 162 } 163 164 fmt.Fprint(w, `{ "default_workflow_permissions": "read", "can_approve_pull_request_reviews": true }`) 165 }) 166 167 ctx := context.Background() 168 org, _, err := client.Repositories.EditDefaultWorkflowPermissions(ctx, "o", "r", *input) 169 if err != nil { 170 t.Errorf("Repositories.EditDefaultWorkflowPermissions returned error: %v", err) 171 } 172 173 want := &DefaultWorkflowPermissionRepository{DefaultWorkflowPermissions: Ptr("read"), CanApprovePullRequestReviews: Ptr(true)} 174 if !cmp.Equal(org, want) { 175 t.Errorf("Repositories.EditDefaultWorkflowPermissions returned %+v, want %+v", org, want) 176 } 177 178 const methodName = "EditDefaultWorkflowPermissions" 179 testBadOptions(t, methodName, func() (err error) { 180 _, _, err = client.Repositories.EditDefaultWorkflowPermissions(ctx, "\n", "\n", *input) 181 return err 182 }) 183 184 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 185 got, resp, err := client.Repositories.EditDefaultWorkflowPermissions(ctx, "o", "r", *input) 186 if got != nil { 187 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 188 } 189 return resp, err 190 }) 191 }