2023-10-31 04:46:09 +01:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package integration
import (
"fmt"
"net/http"
"testing"
auth_model "code.gitea.io/gitea/models/auth"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/tests"
)
func TestAPIUserSecrets ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
session := loginUser ( t , "user1" )
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeWriteUser )
t . Run ( "Create" , func ( t * testing . T ) {
cases := [ ] struct {
Name string
ExpectedStatus int
} {
{
Name : "" ,
ExpectedStatus : http . StatusNotFound ,
} ,
{
Name : "-" ,
ExpectedStatus : http . StatusBadRequest ,
} ,
{
Name : "_" ,
ExpectedStatus : http . StatusCreated ,
} ,
{
Name : "secret" ,
ExpectedStatus : http . StatusCreated ,
} ,
{
Name : "2secret" ,
ExpectedStatus : http . StatusBadRequest ,
} ,
{
Name : "GITEA_secret" ,
ExpectedStatus : http . StatusBadRequest ,
} ,
{
Name : "GITHUB_secret" ,
ExpectedStatus : http . StatusBadRequest ,
} ,
}
for _ , c := range cases {
2023-12-22 00:59:59 +01:00
req := NewRequestWithJSON ( t , "PUT" , fmt . Sprintf ( "/api/v1/user/actions/secrets/%s" , c . Name ) , api . CreateOrUpdateSecretOption {
2023-10-31 04:46:09 +01:00
Data : "data" ,
2023-12-22 00:59:59 +01:00
} ) . AddTokenAuth ( token )
2023-10-31 04:46:09 +01:00
MakeRequest ( t , req , c . ExpectedStatus )
}
} )
t . Run ( "Update" , func ( t * testing . T ) {
name := "update_secret"
2023-12-22 00:59:59 +01:00
url := fmt . Sprintf ( "/api/v1/user/actions/secrets/%s" , name )
2023-10-31 04:46:09 +01:00
req := NewRequestWithJSON ( t , "PUT" , url , api . CreateOrUpdateSecretOption {
Data : "initial" ,
2023-12-22 00:59:59 +01:00
} ) . AddTokenAuth ( token )
2023-10-31 04:46:09 +01:00
MakeRequest ( t , req , http . StatusCreated )
req = NewRequestWithJSON ( t , "PUT" , url , api . CreateOrUpdateSecretOption {
Data : "changed" ,
2023-12-22 00:59:59 +01:00
} ) . AddTokenAuth ( token )
2023-10-31 04:46:09 +01:00
MakeRequest ( t , req , http . StatusNoContent )
} )
t . Run ( "Delete" , func ( t * testing . T ) {
name := "delete_secret"
2023-12-22 00:59:59 +01:00
url := fmt . Sprintf ( "/api/v1/user/actions/secrets/%s" , name )
2023-10-31 04:46:09 +01:00
req := NewRequestWithJSON ( t , "PUT" , url , api . CreateOrUpdateSecretOption {
Data : "initial" ,
2023-12-22 00:59:59 +01:00
} ) . AddTokenAuth ( token )
2023-10-31 04:46:09 +01:00
MakeRequest ( t , req , http . StatusCreated )
2023-12-22 00:59:59 +01:00
req = NewRequest ( t , "DELETE" , url ) .
AddTokenAuth ( token )
2023-10-31 04:46:09 +01:00
MakeRequest ( t , req , http . StatusNoContent )
2023-12-22 00:59:59 +01:00
req = NewRequest ( t , "DELETE" , url ) .
AddTokenAuth ( token )
2023-10-31 04:46:09 +01:00
MakeRequest ( t , req , http . StatusNotFound )
2023-12-22 00:59:59 +01:00
req = NewRequest ( t , "DELETE" , "/api/v1/user/actions/secrets/000" ) .
AddTokenAuth ( token )
2023-10-31 04:46:09 +01:00
MakeRequest ( t , req , http . StatusBadRequest )
} )
}