mongodb/mongodb_test.go

104 lines
11 KiB
Go
Raw Normal View History

2022-02-24 08:00:42 +00:00
package mongodb
import (
2022-06-16 07:21:34 +00:00
"fmt"
2022-02-24 08:00:42 +00:00
"testing"
"go.mongodb.org/mongo-driver/mongo"
)
func Test_connectWithTLS(t *testing.T) {
type args struct {
cfg Config
}
tests := []struct {
name string
args args
want *mongo.Database
wantErr bool
}{
{
name: "should connect success",
args: args{
cfg: Config{
Host: "mongodb://vps1:27017,vps2:27017,vps3:27017",
DBName: "unibag",
TLS: &ConnectTLSOpts{
ReplSet: "sellyrs",
CaFile: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQzRENDQXNTZ0F3SUJBZ0lVWllwWEJPK3JUTVFDOGJzc05UU1ljQU02cmxZd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1lqRUxNQWtHQTFVRUF3d0NRMEV4RGpBTUJnTlZCQXNNQlUxUFRrZFBNUk13RVFZRFZRUUtEQXBDVlZOVQpSVVJYUVZKRk1SUXdFZ1lEVlFRSERBdFFRVWxPUlZOV1NVeE1SVEVMTUFrR0ExVUVDQXdDVDBneEN6QUpCZ05WCkJBWVRBbFZUTUI0WERUSXlNREl5TWpBME5UVXhOMW9YRFRNeU1ESXlNREEwTlRVeE4xb3dZakVMTUFrR0ExVUUKQXd3Q1EwRXhEakFNQmdOVkJBc01CVTFQVGtkUE1STXdFUVlEVlFRS0RBcENWVk5VUlVSWFFWSkZNUlF3RWdZRApWUVFIREF0UVFVbE9SVk5XU1V4TVJURUxNQWtHQTFVRUNBd0NUMGd4Q3pBSkJnTlZCQVlUQWxWVE1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTNmZi9ialdlRVVIRXRScGdDbi91TjFOQ1I4MjUKNFQvYThXcGJBdGtjSENwUWsyeThnKzV6dGNHWmpGcVNvREV1OWkxbzZSZHNISGpOWTdzdlM1U1ZMdkNWKy92eQpLUmZFMTlubGRrOG5TN3VsNW9zNFdXUUFxTGhJZDVQVG13c2N1OG01OFFNUmUxV0JhVjBObnNtREU3VVVnbjQrClNYa0t3aFo2VU9yNFlyTTNCTEplOGd2aHZpTGVYVU1VQVgrQlA3YUFOUHpFbHlManVXMUxzdzdoWTBTbDVETUEKc21LWjYycEZFamJlckJGNFBpdnZxNEx3ODBsN21Cd1lRcGxvWUpLSkNqRW93QmJhVk1hdnRuRmFNZ241TG8ySgptWkVIcWpGdVBGQnpzamxrMlZ5czE4dTgvZWlJOFEzQzNSdjk4aEkyMVp4MHJKQmc4YnB3cTJ6T1RRSURBUUFCCm80R0pNSUdHTUIwR0ExVWREZ1FXQkJTZHVKYitaam5HY2lDTTFLNGVQQ3pRbG0rdm96QWZCZ05WSFNNRUdEQVcKZ0JTZHVKYitaam5HY2lDTTFLNGVQQ3pRbG0rdm96QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01ETUdBMVVkRVFRcwpNQ3FDQkhad2N6R0NCSFp3Y3pLQ0JIWndjek9IQk1Db0FVYUhCTUNvQVV1SEJNQ29BVWlIQk1Db0FZa3dEUVlKCktvWklodmNOQVFFTEJRQURnZ0VCQUlMaFVDM2k4NytFbk9NY1EvS3F2ZVpydGZ2dmZsVC9kUGNhcmIxYTg1ODgKUWVzVko2QmJnazhBZlBVQzlZZjNNL2dyS3l3ck9zVHZpVlRucXo5cWdvRUZwRVR6QldnYVNDTmFucXlEY3NrWAp4cW5JZzF1TTlvaTlOK3NxbGo3QU43NVFLRnhEQ0YwcHBJT056Y3BqbVFuWE5YMGt6L2hYS0pIQXZ3K25hMUtWCmpoT3hSMndlSDJ4SmFSSjFiNGV1U29Ca243c0QyT3MxN0VxbVArQW5RKzl3UzgyWkkwOW8zVDdPNFpVRVlsSDQKOThLbDBmT3k4djdvbGNiM05nTnM4NkxmVjd4cFVuOUY4b3lnaEo4bkNuMlFpMEZ0YzFpS1VTb2JoTS9wSTF4MApNRGJKSld6bUlOZjIyc2lWbkxWY01YTkQzVWo5bGtuelFoUFplTW93WG1jPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t",
CertKeyFile: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVWVENDQXowQ0ZDUDRpdGN5WmFpRko5SWF1WEh6QWE0cHFQZWxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1HSXgKQ3pBSkJnTlZCQU1NQWtOQk1RNHdEQVlEVlFRTERBVk5UMDVIVHpFVE1CRUdBMVVFQ2d3S1FsVlRWRVZFVjBGUwpSVEVVTUJJR0ExVUVCd3dMVUVGSlRrVlRWa2xNVEVVeEN6QUpCZ05WQkFnTUFrOUlNUXN3Q1FZRFZRUUdFd0pWClV6QWVGdzB5TWpBeU1qSXdORFUyTkRkYUZ3MHlNekF5TWpJd05EVTJORGRhTUd3eERUQUxCZ05WQkFNTUJIWncKY3pFeEZqQVVCZ05WQkFzTURVMVBUa2RQWDBOTVNVVk9WRk14RXpBUkJnTlZCQW9NQ2tKVlUxUkZSRmRCVWtVeApGREFTQmdOVkJBY01DMUJCU1U1RlUxWkpURXhGTVFzd0NRWURWUVFJREFKUFNERUxNQWtHQTFVRUJoTUNWVk13CmdnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUMzYkU2bEJwT20zamp5TWxsYUg4djEKZ2xDQW1GNzZjWE5yeTJtU1Iva3lwaHc2cmRDM1RoWUlYYlBCYUtyWWNQWURXV1k3NVpuMURSRHZNVUt1R0FIUwp3OXltOFBRK2tkbVViM1dQaGc2SkFuZ1BpMVg1SjRGSmVKUStnbVF5NkNxT1U2RTIyb0FmVW8wU3FpVGd6WXp5CjBUajJabHVLUXdtdlBFSmFZUXVncGVCam0wSE5LL3dOUUVjVVYzbDM1b1RkQkRUN1d3SCtyb3M2eU8wVlFkeUkKUDlRbit4dWFiNXhxcmVMTU1GSDJ3NnQ4aUlkZ1hpUzhrR3NReUdKSm5TTzdHa2JNYVo1RUNueFhUUlZhc0pEOApzV1NvOTRscmVOazlXYTlGKzhrUEtCUmlWWXpOYVdqekxJRlF5MThQLy9JU3p3NVBieU0zNTlUZW1rYVJ1bnRaCklPV3ljdjIvQlJNSGViSTVhV0N3bUhnbW5BVFlSSTRkL0laNUI3bHUxWXBOaUtTcE5UTkxNMGZJNXlJc2VRMzkKaFZkNzEvVGRvMHkvNS81MGFSZTV3S2FDR001Qzl6eXpTWHQrUDhRM3NVWkU4YUttLzVNVDg4Q3ZPdksyVXJVSAovOVdJcWMwNS9aVXJlUkhTUzFOUjFOME5uWXVpUnRUc2FnK21CMU1UTXJCQVdieCtFcWplY284WnloSzFCeVdnCllmcUpWWXV2cHh6M01ZZ2FrM21CbmJVaER6djdROVlwdWpWbk1vaTFDekVBVndGQXkzaGxUY1JObG9CdFhyaFgKMEJYTGFnRWgwd2ljZVpLNk9scEt5S2FYVFJUbVB2ZHM2cndJc3JQYk41QmxmajkwTTNnMXFsS01SdzM0YVBWWQpYOHFlWktaVEZMVW52QXppTlFYM2pRSURBUUFCTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCTFZ3UnNKZk1JCnppMzh2R2dBTytiV2loWWxmNFZJRkNJZk9SZ1UxYmpkR0hYZE5BeTFCRWtMNURXcEI2T0xDOUE3NzNLVkdzc3EKakVDUjNXS3BjVDZvV1pSTFIrbUNSKzJkbmlTMC8vL0VpMVZhMkN0TUdnbDB4UVBXaFV6T3JoRk80UFZkWE03egpZN3MvajhzeTdHVU9ldXRQcjg0SW95SVZjSXUzSmdsWWx4ZWZVdnZGYlpQMnZaNHJhalJxTHlHZ3VLN2JsZUFFCm1zbWczMk5iaFVIZnBhbG8ydUNNSDVKcDVEUEdGSnBFUkR2OTBicHFMVis0Zms0ajg0WmJBdkh3aFdBMGthNnEKRTU5U2RhMGtGVVg1Q3c0ZEEwZm5FL1ExdThJRkhCYnIzVDlWZlEwQis4dGVEaUdYeXhXSlg4SmF2ZVJVMVJBSwo3bnlwdTVjaFhjK2EKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KTUlJSlF3SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDUzB3Z2drcEFnRUFBb0lDQVFDM2JFNmxCcE9tM2pqeQpNbGxhSDh2MWdsQ0FtRjc2Y1hOcnkybVNSL2t5cGh3NnJkQzNUaFlJWGJQQmFLclljUFlEV1dZNzVabjFEUkR2Ck1VS3VHQUhTdzl5bThQUStrZG1VYjNXUGhnNkpBbmdQaTFYNUo0RkplSlErZ21ReTZDcU9VNkUyMm9BZlVvMFMKcWlUZ3pZenkwVGoyWmx1S1F3bXZQRUphWVF1Z3BlQmptMEhOSy93TlFFY1VWM2wzNW9UZEJEVDdXd0grcm9zNgp5TzBWUWR5SVA5UW4reHVhYjV4cXJlTE1NRkgydzZ0OGlJZGdYaVM4a0dzUXlHSkpuU083R2tiTWFaNUVDbnhYClRSVmFzSkQ4c1dTbzk0bHJlTms5V2E5Ris4a1BLQlJpVll6TmFXanpMSUZReTE4UC8vSVN6dzVQYnlNMzU5VGUKbWthUnVudFpJT1d5Y3YyL0JSTUhlYkk1YVdDd21IZ21uQVRZUkk0ZC9JWjVCN2x1MVlwTmlLU3BOVE5MTTBmSQo1eUlzZVEzOWhWZDcxL1RkbzB5LzUvNTBhUmU1d0thQ0dNNUM5enl6U1h0K1A4UTNzVVpFOGFLbS81TVQ4OEN2Ck92SzJVclVILzlXSXFjMDUvWlVyZVJIU1MxTlIxTjBObll1aVJ0VHNhZyttQjFNVE1yQkFXYngrRXFqZWNvOFoKeWhLMUJ5V2dZZnFKVll1dnB4ejNNWWdhazNtQm5iVWhEenY3UTlZcHVqVm5Nb2kxQ3pFQVZ3RkF5M2hsVGNSTgpsb0J0WHJoWDBCWExhZ0VoMHdpY2VaSzZPbHBLeUthWFRSVG1QdmRzNnJ3SXNyUGJONUJsZmo5ME0zZzFxbEtNClJ3MzRhUFZZWDhxZVpLWlRGTFVudkF6aU5RWDNqUUlEQVFBQkFvSUNBRHpQeThNcXl3a240L2xvZC9kSlUzV3kKSHI2RHhmbUNZNkg1YnFidzljMjFCT2J2ZWFOTVlFR2x6MUx3UUxSQnYwNmM5U2dtbDBTSGNIWGMveDU1RnlHcApqaDVMQks4NTY4a3FxdTlLb3NjSjZvUTh6ZVF0Rk5BbkNmOHZlOGprOERiL3d4Tk1uZTNFa01EL1ovcWdLM3JWCm91ME9Rb3MwYnFHS2VQVTk5M3pyZ2RtRVAreW1DSXJjSkxTNXk2dlU0WGZsVFN1SW9NQ3ZYYm0vbzlySVd6VlEKOUNYTk92bVl4Mk1YQTNwdkNyMmxZZFdIN2xvazNFa29HRmNZR0g0UGV5a3RMUXZZZUlCV2VhTDRDM3hsemF2NQpwRVhneTg2MTRsQlV5NmVJTXNDenFRNXhEcDJMdFIvcVFYVm45N3gyUHV1OWVpRWIxN0ZSUzJJQ0JDT01rQmdNCjdvV0ZkSmhzYkFQMlJwOUVUN01qQThYWUx2eUphaHUwZVFrMzdMTUR6QWxGeFJQTVVHMTFQb1FpOU11RXFJUW8KUHdXa0xZQ09YZWNyd1JVSDFGN21PK3UxVXV5OHhDZDRWVVdKaU51TEdRd2Z2TTgxTFNWMlNYL003TDl6emM5OQpWSEEvYXB0Ni80dWRaU2lJR0VVaUxpa1RYa0tsQzcySEc1bW56eWlNN2ZNMTBHYlBZWUo2aW1lNmhjYVQ1OTVQCmR3VHVDUWlydkZSNWZnWjFmbTZ2NFNJMnB4NW1hTGFUdVBRamhmSVhHeFZMQmN0R3JCb2xoc09PRVBPNE5LZ2MKQlRlVHVmdHBSb2VYWkJlOC96TXViZjB1NjBOeDErcGxJNmpuS2pWdjY0SVA5ZGMydHM2aXhSRS85RFhQYUdPMApVTm9oYnd6RHQyN3hXTXhFNkZTQkFvSUJBUURmaVB
CertKeyFilePassword: "MTIzNDQzMjE=",
},
Standalone: nil,
},
},
want: nil,
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
_, err := connectWithTLS(tt.args.cfg)
if (err != nil) != tt.wantErr {
t.Errorf("connectWithTLS() error = %v, wantErr %v", err, tt.wantErr)
return
}
})
}
}
2022-06-16 07:21:34 +00:00
func Test_getURIWithTLS(t *testing.T) {
type args struct {
cfg Config
caFilePath string
certFilePath string
pwd string
}
ca := "ca.pem"
cert := "cert.pem"
pwd := "1"
tests := []struct {
name string
args args
want string
}{
{
name: "uri no options",
args: args{
cfg: Config{Host: "mongodb://localhost:27017"},
caFilePath: ca,
certFilePath: cert,
pwd: pwd,
},
want: fmt.Sprintf("mongodb://localhost:27017/?tls=true&tlsCAFile=./%s&tlsCertificateKeyFile=./%s&tlsCertificateKeyFilePassword=%s&authMechanism=MONGODB-X509", ca, cert, pwd),
},
{
name: "uri no options, end with /",
args: args{
cfg: Config{Host: "mongodb://localhost:27017/"},
caFilePath: ca,
certFilePath: cert,
pwd: pwd,
},
want: fmt.Sprintf("mongodb://localhost:27017/?tls=true&tlsCAFile=./%s&tlsCertificateKeyFile=./%s&tlsCertificateKeyFilePassword=%s&authMechanism=MONGODB-X509", ca, cert, pwd),
},
{
name: "uri has options",
args: args{
cfg: Config{Host: "mongodb://localhost:27017/?a=1"},
caFilePath: ca,
certFilePath: cert,
pwd: pwd,
},
want: fmt.Sprintf("mongodb://localhost:27017/?a=1&tls=true&tlsCAFile=./%s&tlsCertificateKeyFile=./%s&tlsCertificateKeyFilePassword=%s&authMechanism=MONGODB-X509", ca, cert, pwd),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := getURIWithTLS(tt.args.cfg, tt.args.caFilePath, tt.args.certFilePath, tt.args.pwd); got != tt.want {
t.Errorf("getURIWithTLS() = %v, want %v", got, tt.want)
}
})
}
}