2023-06-30 02:22:55 +03:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package integration
import (
"encoding/base64"
"net/http"
"os"
"testing"
auth_model "code.gitea.io/gitea/models/auth"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
)
func TestAPIUpdateUserAvatar ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
normalUsername := "user2"
session := loginUser ( t , normalUsername )
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeWriteUser )
// Test what happens if you use a valid image
avatar , err := os . ReadFile ( "tests/integration/avatar.png" )
assert . NoError ( t , err )
if err != nil {
assert . FailNow ( t , "Unable to open avatar.png" )
}
// Test what happens if you don't have a valid Base64 string
opts := api . UpdateUserAvatarOption {
Image : base64 . StdEncoding . EncodeToString ( avatar ) ,
}
2023-12-22 02:59:59 +03:00
req := NewRequestWithJSON ( t , "POST" , "/api/v1/user/avatar" , & opts ) .
AddTokenAuth ( token )
2023-06-30 02:22:55 +03:00
MakeRequest ( t , req , http . StatusNoContent )
opts = api . UpdateUserAvatarOption {
Image : "Invalid" ,
}
2023-12-22 02:59:59 +03:00
req = NewRequestWithJSON ( t , "POST" , "/api/v1/user/avatar" , & opts ) .
AddTokenAuth ( token )
2023-06-30 02:22:55 +03:00
MakeRequest ( t , req , http . StatusBadRequest )
// Test what happens if you use a file that is not an image
text , err := os . ReadFile ( "tests/integration/README.md" )
assert . NoError ( t , err )
if err != nil {
assert . FailNow ( t , "Unable to open README.md" )
}
opts = api . UpdateUserAvatarOption {
Image : base64 . StdEncoding . EncodeToString ( text ) ,
}
2023-12-22 02:59:59 +03:00
req = NewRequestWithJSON ( t , "POST" , "/api/v1/user/avatar" , & opts ) .
AddTokenAuth ( token )
2023-06-30 02:22:55 +03:00
MakeRequest ( t , req , http . StatusInternalServerError )
}
func TestAPIDeleteUserAvatar ( t * testing . T ) {
defer tests . PrepareTestEnv ( t ) ( )
normalUsername := "user2"
session := loginUser ( t , normalUsername )
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeWriteUser )
2023-12-22 02:59:59 +03:00
req := NewRequest ( t , "DELETE" , "/api/v1/user/avatar" ) .
AddTokenAuth ( token )
2023-06-30 02:22:55 +03:00
MakeRequest ( t , req , http . StatusNoContent )
}