2021-04-10 14:12:38 +08:00
// Copyright 2021 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2021-04-10 14:12:38 +08:00
2022-09-02 15:18:23 -04:00
package integration
2021-04-10 14:12:38 +08:00
import (
"net/http"
"testing"
2023-01-17 16:46:03 -05:00
auth_model "code.gitea.io/gitea/models/auth"
2021-04-10 14:12:38 +08:00
api "code.gitea.io/gitea/modules/structs"
2022-09-02 15:18:23 -04:00
"code.gitea.io/gitea/tests"
2021-04-10 14:12:38 +08:00
"github.com/stretchr/testify/assert"
)
func TestAPIListEmails ( t * testing . T ) {
2022-09-02 15:18:23 -04:00
defer tests . PrepareTestEnv ( t ) ( )
2021-04-10 14:12:38 +08:00
normalUsername := "user2"
session := loginUser ( t , normalUsername )
2023-01-17 16:46:03 -05:00
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeReadUser )
2021-04-10 14:12:38 +08:00
req := NewRequest ( t , "GET" , "/api/v1/user/emails?token=" + token )
2022-12-02 11:39:42 +08:00
resp := MakeRequest ( t , req , http . StatusOK )
2021-04-10 14:12:38 +08:00
var emails [ ] * api . Email
DecodeJSON ( t , resp , & emails )
assert . EqualValues ( t , [ ] * api . Email {
{
Email : "user2@example.com" ,
Verified : true ,
Primary : true ,
} ,
{
2021-06-08 11:52:51 +08:00
Email : "user2-2@example.com" ,
2021-04-10 14:12:38 +08:00
Verified : false ,
Primary : false ,
} ,
} , emails )
}
func TestAPIAddEmail ( t * testing . T ) {
2022-09-02 15:18:23 -04:00
defer tests . PrepareTestEnv ( t ) ( )
2021-04-10 14:12:38 +08:00
normalUsername := "user2"
session := loginUser ( t , normalUsername )
2023-01-17 16:46:03 -05:00
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeUser )
2021-04-10 14:12:38 +08:00
opts := api . CreateEmailOption {
Emails : [ ] string { "user101@example.com" } ,
}
req := NewRequestWithJSON ( t , "POST" , "/api/v1/user/emails?token=" + token , & opts )
2022-12-02 11:39:42 +08:00
MakeRequest ( t , req , http . StatusUnprocessableEntity )
2021-04-10 14:12:38 +08:00
opts = api . CreateEmailOption {
2021-06-08 11:52:51 +08:00
Emails : [ ] string { "user2-3@example.com" } ,
2021-04-10 14:12:38 +08:00
}
req = NewRequestWithJSON ( t , "POST" , "/api/v1/user/emails?token=" + token , & opts )
2022-12-02 11:39:42 +08:00
resp := MakeRequest ( t , req , http . StatusCreated )
2021-04-10 14:12:38 +08:00
var emails [ ] * api . Email
DecodeJSON ( t , resp , & emails )
assert . EqualValues ( t , [ ] * api . Email {
{
2021-06-08 11:52:51 +08:00
Email : "user2-3@example.com" ,
2021-04-10 14:12:38 +08:00
Verified : true ,
Primary : false ,
} ,
} , emails )
2022-04-20 21:39:30 +00:00
opts = api . CreateEmailOption {
Emails : [ ] string { "notAEmail" } ,
}
req = NewRequestWithJSON ( t , "POST" , "/api/v1/user/emails?token=" + token , & opts )
2022-12-02 11:39:42 +08:00
MakeRequest ( t , req , http . StatusUnprocessableEntity )
2021-04-10 14:12:38 +08:00
}
func TestAPIDeleteEmail ( t * testing . T ) {
2022-09-02 15:18:23 -04:00
defer tests . PrepareTestEnv ( t ) ( )
2021-04-10 14:12:38 +08:00
normalUsername := "user2"
session := loginUser ( t , normalUsername )
2023-01-17 16:46:03 -05:00
token := getTokenForLoggedInUser ( t , session , auth_model . AccessTokenScopeUser )
2021-04-10 14:12:38 +08:00
opts := api . DeleteEmailOption {
2021-06-08 11:52:51 +08:00
Emails : [ ] string { "user2-3@example.com" } ,
2021-04-10 14:12:38 +08:00
}
req := NewRequestWithJSON ( t , "DELETE" , "/api/v1/user/emails?token=" + token , & opts )
2022-12-02 11:39:42 +08:00
MakeRequest ( t , req , http . StatusNotFound )
2021-04-10 14:12:38 +08:00
opts = api . DeleteEmailOption {
2021-06-08 11:52:51 +08:00
Emails : [ ] string { "user2-2@example.com" } ,
2021-04-10 14:12:38 +08:00
}
req = NewRequestWithJSON ( t , "DELETE" , "/api/v1/user/emails?token=" + token , & opts )
2022-12-02 11:39:42 +08:00
MakeRequest ( t , req , http . StatusNoContent )
2021-04-10 14:12:38 +08:00
req = NewRequest ( t , "GET" , "/api/v1/user/emails?token=" + token )
2022-12-02 11:39:42 +08:00
resp := MakeRequest ( t , req , http . StatusOK )
2021-04-10 14:12:38 +08:00
var emails [ ] * api . Email
DecodeJSON ( t , resp , & emails )
assert . EqualValues ( t , [ ] * api . Email {
{
Email : "user2@example.com" ,
Verified : true ,
Primary : true ,
} ,
} , emails )
}