mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-24 23:59:25 +01:00
fec3132585
The management will validate the JWT as it does in the API and will register the Peer to the user's account. New fields were added to grpc messages in management and client daemon and its clients were updated Peer has one new field, UserID, that will hold the id of the user that registered it JWT middleware CheckJWT got a splitter and renamed to support validation for non HTTP requests Added test for adding new Peer with UserID Lots of tests update because of a new field
247 lines
9.5 KiB
Go
247 lines
9.5 KiB
Go
package mock_server
|
|
|
|
import (
|
|
"github.com/netbirdio/netbird/management/server"
|
|
"github.com/netbirdio/netbird/management/server/jwtclaims"
|
|
"github.com/netbirdio/netbird/util"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
|
|
type MockAccountManager struct {
|
|
GetOrCreateAccountByUserFunc func(userId, domain string) (*server.Account, error)
|
|
GetAccountByUserFunc func(userId string) (*server.Account, error)
|
|
AddSetupKeyFunc func(accountId string, keyName string, keyType server.SetupKeyType, expiresIn *util.Duration) (*server.SetupKey, error)
|
|
RevokeSetupKeyFunc func(accountId string, keyId string) (*server.SetupKey, error)
|
|
RenameSetupKeyFunc func(accountId string, keyId string, newName string) (*server.SetupKey, error)
|
|
GetAccountByIdFunc func(accountId string) (*server.Account, error)
|
|
GetAccountByUserOrAccountIdFunc func(userId, accountId, domain string) (*server.Account, error)
|
|
GetAccountWithAuthorizationClaimsFunc func(claims jwtclaims.AuthorizationClaims) (*server.Account, error)
|
|
AccountExistsFunc func(accountId string) (*bool, error)
|
|
AddAccountFunc func(accountId, userId, domain string) (*server.Account, error)
|
|
GetPeerFunc func(peerKey string) (*server.Peer, error)
|
|
MarkPeerConnectedFunc func(peerKey string, connected bool) error
|
|
RenamePeerFunc func(accountId string, peerKey string, newName string) (*server.Peer, error)
|
|
DeletePeerFunc func(accountId string, peerKey string) (*server.Peer, error)
|
|
GetPeerByIPFunc func(accountId string, peerIP string) (*server.Peer, error)
|
|
GetNetworkMapFunc func(peerKey string) (*server.NetworkMap, error)
|
|
AddPeerFunc func(setupKey string, userId string, peer *server.Peer) (*server.Peer, error)
|
|
GetGroupFunc func(accountID, groupID string) (*server.Group, error)
|
|
SaveGroupFunc func(accountID string, group *server.Group) error
|
|
DeleteGroupFunc func(accountID, groupID string) error
|
|
ListGroupsFunc func(accountID string) ([]*server.Group, error)
|
|
GroupAddPeerFunc func(accountID, groupID, peerKey string) error
|
|
GroupDeletePeerFunc func(accountID, groupID, peerKey string) error
|
|
GroupListPeersFunc func(accountID, groupID string) ([]*server.Peer, error)
|
|
GetUsersFromAccountFunc func(accountID string) ([]*server.UserInfo, error)
|
|
}
|
|
|
|
func (am *MockAccountManager) GetUsersFromAccount(accountID string) ([]*server.UserInfo, error) {
|
|
if am.GetUsersFromAccountFunc != nil {
|
|
return am.GetUsersFromAccountFunc(accountID)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetUsersFromAccount not implemented")
|
|
|
|
}
|
|
|
|
func (am *MockAccountManager) GetOrCreateAccountByUser(
|
|
userId, domain string,
|
|
) (*server.Account, error) {
|
|
if am.GetOrCreateAccountByUserFunc != nil {
|
|
return am.GetOrCreateAccountByUserFunc(userId, domain)
|
|
}
|
|
return nil, status.Errorf(
|
|
codes.Unimplemented,
|
|
"method GetOrCreateAccountByUser not implemented",
|
|
)
|
|
}
|
|
|
|
func (am *MockAccountManager) GetAccountByUser(userId string) (*server.Account, error) {
|
|
if am.GetAccountByUserFunc != nil {
|
|
return am.GetAccountByUserFunc(userId)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetAccountByUser not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) AddSetupKey(
|
|
accountId string,
|
|
keyName string,
|
|
keyType server.SetupKeyType,
|
|
expiresIn *util.Duration,
|
|
) (*server.SetupKey, error) {
|
|
if am.AddSetupKeyFunc != nil {
|
|
return am.AddSetupKeyFunc(accountId, keyName, keyType, expiresIn)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method AddSetupKey not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) RevokeSetupKey(
|
|
accountId string,
|
|
keyId string,
|
|
) (*server.SetupKey, error) {
|
|
if am.RevokeSetupKeyFunc != nil {
|
|
return am.RevokeSetupKeyFunc(accountId, keyId)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method RevokeSetupKey not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) RenameSetupKey(
|
|
accountId string,
|
|
keyId string,
|
|
newName string,
|
|
) (*server.SetupKey, error) {
|
|
if am.RenameSetupKeyFunc != nil {
|
|
return am.RenameSetupKeyFunc(accountId, keyId, newName)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method RenameSetupKey not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GetAccountById(accountId string) (*server.Account, error) {
|
|
if am.GetAccountByIdFunc != nil {
|
|
return am.GetAccountByIdFunc(accountId)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetAccountById not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GetAccountByUserOrAccountId(
|
|
userId, accountId, domain string,
|
|
) (*server.Account, error) {
|
|
if am.GetAccountByUserOrAccountIdFunc != nil {
|
|
return am.GetAccountByUserOrAccountIdFunc(userId, accountId, domain)
|
|
}
|
|
return nil, status.Errorf(
|
|
codes.Unimplemented,
|
|
"method GetAccountByUserOrAccountId not implemented",
|
|
)
|
|
}
|
|
|
|
func (am *MockAccountManager) GetAccountWithAuthorizationClaims(
|
|
claims jwtclaims.AuthorizationClaims,
|
|
) (*server.Account, error) {
|
|
if am.GetAccountWithAuthorizationClaimsFunc != nil {
|
|
return am.GetAccountWithAuthorizationClaimsFunc(claims)
|
|
}
|
|
return nil, status.Errorf(
|
|
codes.Unimplemented,
|
|
"method GetAccountWithAuthorizationClaims not implemented",
|
|
)
|
|
}
|
|
|
|
func (am *MockAccountManager) AccountExists(accountId string) (*bool, error) {
|
|
if am.AccountExistsFunc != nil {
|
|
return am.AccountExistsFunc(accountId)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method AccountExists not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) AddAccount(
|
|
accountId, userId, domain string,
|
|
) (*server.Account, error) {
|
|
if am.AddAccountFunc != nil {
|
|
return am.AddAccountFunc(accountId, userId, domain)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method AddAccount not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GetPeer(peerKey string) (*server.Peer, error) {
|
|
if am.GetPeerFunc != nil {
|
|
return am.GetPeerFunc(peerKey)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetPeer not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) MarkPeerConnected(peerKey string, connected bool) error {
|
|
if am.MarkPeerConnectedFunc != nil {
|
|
return am.MarkPeerConnectedFunc(peerKey, connected)
|
|
}
|
|
return status.Errorf(codes.Unimplemented, "method MarkPeerConnected not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) RenamePeer(
|
|
accountId string,
|
|
peerKey string,
|
|
newName string,
|
|
) (*server.Peer, error) {
|
|
if am.RenamePeerFunc != nil {
|
|
return am.RenamePeerFunc(accountId, peerKey, newName)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method RenamePeer not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) DeletePeer(accountId string, peerKey string) (*server.Peer, error) {
|
|
if am.DeletePeerFunc != nil {
|
|
return am.DeletePeerFunc(accountId, peerKey)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method DeletePeer not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GetPeerByIP(accountId string, peerIP string) (*server.Peer, error) {
|
|
if am.GetPeerByIPFunc != nil {
|
|
return am.GetPeerByIPFunc(accountId, peerIP)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetPeerByIP not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GetNetworkMap(peerKey string) (*server.NetworkMap, error) {
|
|
if am.GetNetworkMapFunc != nil {
|
|
return am.GetNetworkMapFunc(peerKey)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetNetworkMap not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) AddPeer(setupKey string, userId string, peer *server.Peer) (*server.Peer, error) {
|
|
if am.AddPeerFunc != nil {
|
|
return am.AddPeerFunc(setupKey, userId, peer)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method AddPeer not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GetGroup(accountID, groupID string) (*server.Group, error) {
|
|
if am.GetGroupFunc != nil {
|
|
return am.GetGroupFunc(accountID, groupID)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetGroup not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) SaveGroup(accountID string, group *server.Group) error {
|
|
if am.SaveGroupFunc != nil {
|
|
return am.SaveGroupFunc(accountID, group)
|
|
}
|
|
return status.Errorf(codes.Unimplemented, "method UpdateGroup not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) DeleteGroup(accountID, groupID string) error {
|
|
if am.DeleteGroupFunc != nil {
|
|
return am.DeleteGroupFunc(accountID, groupID)
|
|
}
|
|
return status.Errorf(codes.Unimplemented, "method DeleteGroup not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) ListGroups(accountID string) ([]*server.Group, error) {
|
|
if am.ListGroupsFunc != nil {
|
|
return am.ListGroupsFunc(accountID)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method ListGroups not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GroupAddPeer(accountID, groupID, peerKey string) error {
|
|
if am.GroupAddPeerFunc != nil {
|
|
return am.GroupAddPeerFunc(accountID, groupID, peerKey)
|
|
}
|
|
return status.Errorf(codes.Unimplemented, "method GroupAddPeer not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GroupDeletePeer(accountID, groupID, peerKey string) error {
|
|
if am.GroupDeletePeerFunc != nil {
|
|
return am.GroupDeletePeerFunc(accountID, groupID, peerKey)
|
|
}
|
|
return status.Errorf(codes.Unimplemented, "method GroupDeletePeer not implemented")
|
|
}
|
|
|
|
func (am *MockAccountManager) GroupListPeers(accountID, groupID string) ([]*server.Peer, error) {
|
|
if am.GroupListPeersFunc != nil {
|
|
return am.GroupListPeersFunc(accountID, groupID)
|
|
}
|
|
return nil, status.Errorf(codes.Unimplemented, "method GroupListPeers not implemented")
|
|
}
|