code.gitea.io/gitea@v1.22.3/tests/integration/api_user_info_test.go (about)

     1  // Copyright 2022 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package integration
     5  
     6  import (
     7  	"fmt"
     8  	"net/http"
     9  	"testing"
    10  
    11  	auth_model "code.gitea.io/gitea/models/auth"
    12  	"code.gitea.io/gitea/models/unittest"
    13  	user_model "code.gitea.io/gitea/models/user"
    14  	api "code.gitea.io/gitea/modules/structs"
    15  	"code.gitea.io/gitea/tests"
    16  
    17  	"github.com/stretchr/testify/assert"
    18  )
    19  
    20  func TestAPIUserInfo(t *testing.T) {
    21  	defer tests.PrepareTestEnv(t)()
    22  
    23  	user := "user1"
    24  	user2 := "user31"
    25  
    26  	org3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "org3"})
    27  
    28  	session := loginUser(t, user)
    29  	token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadUser)
    30  
    31  	t.Run("GetInfo", func(t *testing.T) {
    32  		defer tests.PrintCurrentTest(t)()
    33  
    34  		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s", user2)).
    35  			AddTokenAuth(token)
    36  		resp := MakeRequest(t, req, http.StatusOK)
    37  
    38  		var u api.User
    39  		DecodeJSON(t, resp, &u)
    40  		assert.Equal(t, user2, u.UserName)
    41  
    42  		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s", user2))
    43  		MakeRequest(t, req, http.StatusNotFound)
    44  
    45  		// test if the placaholder Mail is returned if a User is not logged in
    46  		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s", org3.Name))
    47  		resp = MakeRequest(t, req, http.StatusOK)
    48  		DecodeJSON(t, resp, &u)
    49  		assert.Equal(t, org3.GetPlaceholderEmail(), u.Email)
    50  
    51  		// Test if the correct Mail is returned if a User is logged in
    52  		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s", org3.Name)).
    53  			AddTokenAuth(token)
    54  		resp = MakeRequest(t, req, http.StatusOK)
    55  		DecodeJSON(t, resp, &u)
    56  		assert.Equal(t, org3.GetEmail(), u.Email)
    57  	})
    58  
    59  	t.Run("GetAuthenticatedUser", func(t *testing.T) {
    60  		defer tests.PrintCurrentTest(t)()
    61  
    62  		req := NewRequest(t, "GET", "/api/v1/user").
    63  			AddTokenAuth(token)
    64  		resp := MakeRequest(t, req, http.StatusOK)
    65  
    66  		var u api.User
    67  		DecodeJSON(t, resp, &u)
    68  		assert.Equal(t, user, u.UserName)
    69  	})
    70  }