2021-04-10 09:12:38 +03:00
// Copyright 2021 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
2022-09-02 22:18:23 +03:00
package integration
2021-04-10 09:12:38 +03:00
import (
"net/http"
"testing"
api "code.gitea.io/gitea/modules/structs"
2022-09-02 22:18:23 +03:00
"code.gitea.io/gitea/tests"
2021-04-10 09:12:38 +03:00
"github.com/stretchr/testify/assert"
)
func TestAPIListEmails ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2021-04-10 09:12:38 +03:00
normalUsername := "user2"
session := loginUser ( t , normalUsername )
token := getTokenForLoggedInUser ( t , session )
req := NewRequest ( t , "GET" , "/api/v1/user/emails?token=" + token )
resp := session . MakeRequest ( t , req , http . StatusOK )
var emails [ ] * api . Email
DecodeJSON ( t , resp , & emails )
assert . EqualValues ( t , [ ] * api . Email {
{
Email : "user2@example.com" ,
Verified : true ,
Primary : true ,
} ,
{
2021-06-08 06:52:51 +03:00
Email : "user2-2@example.com" ,
2021-04-10 09:12:38 +03:00
Verified : false ,
Primary : false ,
} ,
} , emails )
}
func TestAPIAddEmail ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2021-04-10 09:12:38 +03:00
normalUsername := "user2"
session := loginUser ( t , normalUsername )
token := getTokenForLoggedInUser ( t , session )
opts := api . CreateEmailOption {
Emails : [ ] string { "user101@example.com" } ,
}
req := NewRequestWithJSON ( t , "POST" , "/api/v1/user/emails?token=" + token , & opts )
session . MakeRequest ( t , req , http . StatusUnprocessableEntity )
opts = api . CreateEmailOption {
2021-06-08 06:52:51 +03:00
Emails : [ ] string { "user2-3@example.com" } ,
2021-04-10 09:12:38 +03:00
}
req = NewRequestWithJSON ( t , "POST" , "/api/v1/user/emails?token=" + token , & opts )
resp := session . MakeRequest ( t , req , http . StatusCreated )
var emails [ ] * api . Email
DecodeJSON ( t , resp , & emails )
assert . EqualValues ( t , [ ] * api . Email {
{
2021-06-08 06:52:51 +03:00
Email : "user2-3@example.com" ,
2021-04-10 09:12:38 +03:00
Verified : true ,
Primary : false ,
} ,
} , emails )
2022-04-21 00:39:30 +03:00
opts = api . CreateEmailOption {
Emails : [ ] string { "notAEmail" } ,
}
req = NewRequestWithJSON ( t , "POST" , "/api/v1/user/emails?token=" + token , & opts )
session . MakeRequest ( t , req , http . StatusUnprocessableEntity )
2021-04-10 09:12:38 +03:00
}
func TestAPIDeleteEmail ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2021-04-10 09:12:38 +03:00
normalUsername := "user2"
session := loginUser ( t , normalUsername )
token := getTokenForLoggedInUser ( t , session )
opts := api . DeleteEmailOption {
2021-06-08 06:52:51 +03:00
Emails : [ ] string { "user2-3@example.com" } ,
2021-04-10 09:12:38 +03:00
}
req := NewRequestWithJSON ( t , "DELETE" , "/api/v1/user/emails?token=" + token , & opts )
session . MakeRequest ( t , req , http . StatusNotFound )
opts = api . DeleteEmailOption {
2021-06-08 06:52:51 +03:00
Emails : [ ] string { "user2-2@example.com" } ,
2021-04-10 09:12:38 +03:00
}
req = NewRequestWithJSON ( t , "DELETE" , "/api/v1/user/emails?token=" + token , & opts )
session . MakeRequest ( t , req , http . StatusNoContent )
req = NewRequest ( t , "GET" , "/api/v1/user/emails?token=" + token )
resp := session . MakeRequest ( t , req , http . StatusOK )
var emails [ ] * api . Email
DecodeJSON ( t , resp , & emails )
assert . EqualValues ( t , [ ] * api . Email {
{
Email : "user2@example.com" ,
Verified : true ,
Primary : true ,
} ,
} , emails )
}