mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 07:10:19 +00:00
NOISSUE - Update SMQ and Certs dependencies (#342)
* NOISSUE - Update Certs dependencies Signed-off-by: dusan <borovcanindusan1@gmail.com> * NOISSUE - Update Certs dependencies Signed-off-by: dusan <borovcanindusan1@gmail.com> * Fix linter errors Signed-off-by: dusan <borovcanindusan1@gmail.com> * Fix testing errors Signed-off-by: dusan <borovcanindusan1@gmail.com> --------- Signed-off-by: dusan <borovcanindusan1@gmail.com>
This commit is contained in:
+2
-1
@@ -7,6 +7,7 @@ package main
|
||||
import (
|
||||
"log"
|
||||
|
||||
certscli "github.com/absmach/certs/cli"
|
||||
"github.com/absmach/magistrala/cli"
|
||||
mgcli "github.com/absmach/magistrala/cli"
|
||||
mgsdk "github.com/absmach/magistrala/pkg/sdk"
|
||||
@@ -57,7 +58,7 @@ func main() {
|
||||
groupsCmd := smqcli.NewGroupsCmd()
|
||||
channelsCmd := smqcli.NewChannelsCmd()
|
||||
messagesCmd := smqcli.NewMessagesCmd()
|
||||
certsCmd := smqcli.NewCertsCmd()
|
||||
certsCmd := certscli.NewCertsCmd()
|
||||
configCmd := smqcli.NewConfigCmd()
|
||||
invitationsCmd := smqcli.NewInvitationsCmd()
|
||||
journalCmd := smqcli.NewJournalCmd()
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"reflect"
|
||||
|
||||
chclient "github.com/absmach/callhome/pkg/client"
|
||||
csdk "github.com/absmach/certs/sdk"
|
||||
mgsdk "github.com/absmach/magistrala/pkg/sdk"
|
||||
"github.com/absmach/magistrala/provision"
|
||||
httpapi "github.com/absmach/magistrala/provision/api"
|
||||
@@ -81,9 +82,15 @@ func main() {
|
||||
MsgContentType: contentType,
|
||||
TLSVerification: cfg.Server.TLS,
|
||||
}
|
||||
SDK := mgsdk.NewSDK(SDKCfg)
|
||||
mgSdk := mgsdk.NewSDK(SDKCfg)
|
||||
|
||||
svc := provision.New(cfg, SDK, logger)
|
||||
csdkConf := csdk.Config{
|
||||
CertsURL: cfg.Server.CertsURL,
|
||||
}
|
||||
|
||||
cSdk := csdk.NewSDK(csdkConf)
|
||||
|
||||
svc := provision.New(cfg, mgSdk, cSdk, logger)
|
||||
svc = httpapi.NewLoggingMiddleware(svc, logger)
|
||||
|
||||
httpServerConfig := server.Config{Host: "", Port: cfg.Server.HTTPPort, KeyFile: cfg.Server.ServerKey, CertFile: cfg.Server.ServerCert}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
module github.com/absmach/magistrala
|
||||
|
||||
go 1.25.0
|
||||
go 1.25.3
|
||||
|
||||
require (
|
||||
github.com/0x6flab/namegenerator v1.4.0
|
||||
github.com/absmach/callhome v0.18.2
|
||||
github.com/absmach/supermq v0.18.1
|
||||
github.com/absmach/certs v0.18.2
|
||||
github.com/absmach/supermq v0.18.2
|
||||
github.com/authzed/authzed-go v1.6.0
|
||||
github.com/authzed/grpcutil v0.0.0-20250221190651-1985b19b35b8
|
||||
github.com/caarlos0/env/v11 v11.3.1
|
||||
@@ -52,7 +53,7 @@ require (
|
||||
|
||||
require (
|
||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20250912141014-52f32327d4b0.1 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.7.0 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.9.0 // indirect
|
||||
dario.cat/mergo v1.0.0 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
|
||||
@@ -122,7 +123,6 @@ require (
|
||||
github.com/sagikazarmark/locafero v0.12.0 // indirect
|
||||
github.com/samber/lo v1.52.0 // indirect
|
||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||
github.com/smartystreets/goconvey v1.8.1 // indirect
|
||||
github.com/spf13/afero v1.15.0 // indirect
|
||||
github.com/spf13/cast v1.10.0 // indirect
|
||||
github.com/spf13/pflag v1.0.10 // indirect
|
||||
|
||||
@@ -3,8 +3,8 @@ buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-202509121410
|
||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20250912141014-52f32327d4b0.1/go.mod h1:fUl8CEN/6ZAMk6bP8ahBJPUJw7rbp+j4x+wCcYi2IG4=
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU=
|
||||
cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo=
|
||||
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
|
||||
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
|
||||
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
|
||||
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
@@ -24,12 +24,14 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd
|
||||
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
|
||||
github.com/absmach/callhome v0.18.2 h1:dmopRHm2qTheHN1hdUKRRYpKwRrj7X9d8AWCFrb+K6s=
|
||||
github.com/absmach/callhome v0.18.2/go.mod h1:LEXKhES9JJtj3tBgTZv7VPNjOi5ukJQB0mFic0QP60Q=
|
||||
github.com/absmach/mgate v0.4.6-0.20250605150648-edf967fbb46a h1:1+772OQFHAS23JLAHrCZxO+DnGoiMllKcSwLQy74y+k=
|
||||
github.com/absmach/mgate v0.4.6-0.20250605150648-edf967fbb46a/go.mod h1:X2amjQg/2cnM+UKblMdpU2M4cZO74xtEHNIxtuUXCeA=
|
||||
github.com/absmach/certs v0.18.2 h1:s6KKL3/KfDZ6z0IxvNCksIOUwRnEgQyCpeAonuR15No=
|
||||
github.com/absmach/certs v0.18.2/go.mod h1:scqVZsmW2xPScnpMTtE70oN6cn0LLjFcJVPi4JKZ4+E=
|
||||
github.com/absmach/mgate v0.5.0 h1:RV2Aalra3xIm+XTs13TM7iE7v4WTL2SKhKcPbKr22Ac=
|
||||
github.com/absmach/mgate v0.5.0/go.mod h1:0KVq7mxM0wayosmyXPPxp1EL0c2d9kRp5V8NZCKdetA=
|
||||
github.com/absmach/senml v1.0.8 h1:+opem/r4g6c6eA/JLyCIuksyEhj7eBdysY3pEmy1mqo=
|
||||
github.com/absmach/senml v1.0.8/go.mod h1:DRhzHLgvQoIUHroBgpFrSWso+bJZO9E96RlHAHy+VRI=
|
||||
github.com/absmach/supermq v0.18.1 h1:JRLP6rfSzZoHgRGPfwNSmzJ7a4K4b4Dvz2nCmR32rxI=
|
||||
github.com/absmach/supermq v0.18.1/go.mod h1:dYnFOIcGQzZ1WpYt1qNv1g609WmOWYzWCBBRjPQV7Uk=
|
||||
github.com/absmach/supermq v0.18.2 h1:oGiuMyjiFJhAmysmApOsYKtN4Kf/WXpLWElEUqmcZec=
|
||||
github.com/absmach/supermq v0.18.2/go.mod h1:ehhfnpFhHZLF9EAdxqDSUCWLJxYhu0mqFd7a4CKMY0g=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
@@ -303,8 +305,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/lestrrat-go/blackmagic v1.0.3 h1:94HXkVLxkZO9vJI/w2u1T0DAoprShFd13xtnSINtDWs=
|
||||
github.com/lestrrat-go/blackmagic v1.0.3/go.mod h1:6AWFyKNNj0zEXQYfTMPfZrAXUWUfTIZ5ECEUEJaijtw=
|
||||
github.com/lestrrat-go/blackmagic v1.0.4 h1:IwQibdnf8l2KoO+qC3uT4OaTWsW7tuRQXy9TRN9QanA=
|
||||
github.com/lestrrat-go/blackmagic v1.0.4/go.mod h1:6AWFyKNNj0zEXQYfTMPfZrAXUWUfTIZ5ECEUEJaijtw=
|
||||
github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE=
|
||||
github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
|
||||
github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCGW8k=
|
||||
@@ -380,6 +382,12 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v
|
||||
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
||||
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/pion/dtls/v3 v3.0.7 h1:bItXtTYYhZwkPFk4t1n3Kkf5TDrfj6+4wG+CZR8uI9Q=
|
||||
github.com/pion/dtls/v3 v3.0.7/go.mod h1:uDlH5VPrgOQIw59irKYkMudSFprY9IEFCqz/eTz16f8=
|
||||
github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8=
|
||||
github.com/pion/logging v0.2.4/go.mod h1:DffhXTKYdNZU+KtJ5pyQDjvOAh/GsNSyv1lbkFbe3so=
|
||||
github.com/pion/transport/v3 v3.0.8 h1:oI3myyYnTKUSTthu/NZZ8eu2I5sHbxbUNNFW62olaYc=
|
||||
github.com/pion/transport/v3 v3.0.8/go.mod h1:+c2eewC5WJQHiAA46fkMMzoYZSuGzA/7E2FPrOYHctQ=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
@@ -433,8 +441,8 @@ github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9t
|
||||
github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw=
|
||||
github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
|
||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||
github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=
|
||||
github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
|
||||
github.com/segmentio/asm v1.2.1 h1:DTNbBqs57ioxAD4PrArqftgypG4/qNpXoJx8TVXxPR0=
|
||||
github.com/segmentio/asm v1.2.1/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
|
||||
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
||||
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
@@ -570,8 +578,8 @@ golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZP
|
||||
golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
|
||||
golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 h1:bsqhLWFR6G6xiQcb+JoGqdKdRU6WzPWmK8E0jxTjzo4=
|
||||
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
|
||||
golang.org/x/exp v0.0.0-20251017212417-90e834f514db h1:by6IehL4BH5k3e3SJmcoNbOobMey2SLpAF79iPOEBvw=
|
||||
golang.org/x/exp v0.0.0-20251017212417-90e834f514db/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
@@ -605,8 +613,8 @@ golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4=
|
||||
golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo=
|
||||
golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
|
||||
golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY=
|
||||
golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
||||
@@ -10,7 +10,6 @@ package mocks
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/pkg/sdk"
|
||||
"github.com/absmach/supermq/pkg/errors"
|
||||
@@ -6037,92 +6036,6 @@ func (_c *SDK_Invitations_Call) RunAndReturn(run func(ctx context.Context, pm sd
|
||||
return _c
|
||||
}
|
||||
|
||||
// IssueCert provides a mock function for the type SDK
|
||||
func (_mock *SDK) IssueCert(ctx context.Context, clientID string, validity string, domainID string, token string) (sdk0.Cert, errors.SDKError) {
|
||||
ret := _mock.Called(ctx, clientID, validity, domainID, token)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for IssueCert")
|
||||
}
|
||||
|
||||
var r0 sdk0.Cert
|
||||
var r1 errors.SDKError
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string, string) (sdk0.Cert, errors.SDKError)); ok {
|
||||
return returnFunc(ctx, clientID, validity, domainID, token)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string, string) sdk0.Cert); ok {
|
||||
r0 = returnFunc(ctx, clientID, validity, domainID, token)
|
||||
} else {
|
||||
r0 = ret.Get(0).(sdk0.Cert)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(1).(func(context.Context, string, string, string, string) errors.SDKError); ok {
|
||||
r1 = returnFunc(ctx, clientID, validity, domainID, token)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(errors.SDKError)
|
||||
}
|
||||
}
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SDK_IssueCert_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'IssueCert'
|
||||
type SDK_IssueCert_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// IssueCert is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - clientID string
|
||||
// - validity string
|
||||
// - domainID string
|
||||
// - token string
|
||||
func (_e *SDK_Expecter) IssueCert(ctx interface{}, clientID interface{}, validity interface{}, domainID interface{}, token interface{}) *SDK_IssueCert_Call {
|
||||
return &SDK_IssueCert_Call{Call: _e.mock.On("IssueCert", ctx, clientID, validity, domainID, token)}
|
||||
}
|
||||
|
||||
func (_c *SDK_IssueCert_Call) Run(run func(ctx context.Context, clientID string, validity string, domainID string, token string)) *SDK_IssueCert_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
var arg0 context.Context
|
||||
if args[0] != nil {
|
||||
arg0 = args[0].(context.Context)
|
||||
}
|
||||
var arg1 string
|
||||
if args[1] != nil {
|
||||
arg1 = args[1].(string)
|
||||
}
|
||||
var arg2 string
|
||||
if args[2] != nil {
|
||||
arg2 = args[2].(string)
|
||||
}
|
||||
var arg3 string
|
||||
if args[3] != nil {
|
||||
arg3 = args[3].(string)
|
||||
}
|
||||
var arg4 string
|
||||
if args[4] != nil {
|
||||
arg4 = args[4].(string)
|
||||
}
|
||||
run(
|
||||
arg0,
|
||||
arg1,
|
||||
arg2,
|
||||
arg3,
|
||||
arg4,
|
||||
)
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_IssueCert_Call) Return(cert sdk0.Cert, sDKError errors.SDKError) *SDK_IssueCert_Call {
|
||||
_c.Call.Return(cert, sDKError)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_IssueCert_Call) RunAndReturn(run func(ctx context.Context, clientID string, validity string, domainID string, token string) (sdk0.Cert, errors.SDKError)) *SDK_IssueCert_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// Journal provides a mock function for the type SDK
|
||||
func (_mock *SDK) Journal(ctx context.Context, entityType string, entityID string, domainID string, pm sdk0.PageMetadata, token string) (sdk0.JournalsPage, error) {
|
||||
ret := _mock.Called(ctx, entityType, entityID, domainID, pm, token)
|
||||
@@ -8358,166 +8271,6 @@ func (_c *SDK_ResetPasswordRequest_Call) RunAndReturn(run func(ctx context.Conte
|
||||
return _c
|
||||
}
|
||||
|
||||
// RevokeAllCerts provides a mock function for the type SDK
|
||||
func (_mock *SDK) RevokeAllCerts(ctx context.Context, clientID string, domainID string, token string) (time.Time, errors.SDKError) {
|
||||
ret := _mock.Called(ctx, clientID, domainID, token)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for RevokeAllCerts")
|
||||
}
|
||||
|
||||
var r0 time.Time
|
||||
var r1 errors.SDKError
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) (time.Time, errors.SDKError)); ok {
|
||||
return returnFunc(ctx, clientID, domainID, token)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) time.Time); ok {
|
||||
r0 = returnFunc(ctx, clientID, domainID, token)
|
||||
} else {
|
||||
r0 = ret.Get(0).(time.Time)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(1).(func(context.Context, string, string, string) errors.SDKError); ok {
|
||||
r1 = returnFunc(ctx, clientID, domainID, token)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(errors.SDKError)
|
||||
}
|
||||
}
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SDK_RevokeAllCerts_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RevokeAllCerts'
|
||||
type SDK_RevokeAllCerts_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// RevokeAllCerts is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - clientID string
|
||||
// - domainID string
|
||||
// - token string
|
||||
func (_e *SDK_Expecter) RevokeAllCerts(ctx interface{}, clientID interface{}, domainID interface{}, token interface{}) *SDK_RevokeAllCerts_Call {
|
||||
return &SDK_RevokeAllCerts_Call{Call: _e.mock.On("RevokeAllCerts", ctx, clientID, domainID, token)}
|
||||
}
|
||||
|
||||
func (_c *SDK_RevokeAllCerts_Call) Run(run func(ctx context.Context, clientID string, domainID string, token string)) *SDK_RevokeAllCerts_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
var arg0 context.Context
|
||||
if args[0] != nil {
|
||||
arg0 = args[0].(context.Context)
|
||||
}
|
||||
var arg1 string
|
||||
if args[1] != nil {
|
||||
arg1 = args[1].(string)
|
||||
}
|
||||
var arg2 string
|
||||
if args[2] != nil {
|
||||
arg2 = args[2].(string)
|
||||
}
|
||||
var arg3 string
|
||||
if args[3] != nil {
|
||||
arg3 = args[3].(string)
|
||||
}
|
||||
run(
|
||||
arg0,
|
||||
arg1,
|
||||
arg2,
|
||||
arg3,
|
||||
)
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_RevokeAllCerts_Call) Return(time1 time.Time, sDKError errors.SDKError) *SDK_RevokeAllCerts_Call {
|
||||
_c.Call.Return(time1, sDKError)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_RevokeAllCerts_Call) RunAndReturn(run func(ctx context.Context, clientID string, domainID string, token string) (time.Time, errors.SDKError)) *SDK_RevokeAllCerts_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// RevokeCert provides a mock function for the type SDK
|
||||
func (_mock *SDK) RevokeCert(ctx context.Context, certID string, domainID string, token string) (time.Time, errors.SDKError) {
|
||||
ret := _mock.Called(ctx, certID, domainID, token)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for RevokeCert")
|
||||
}
|
||||
|
||||
var r0 time.Time
|
||||
var r1 errors.SDKError
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) (time.Time, errors.SDKError)); ok {
|
||||
return returnFunc(ctx, certID, domainID, token)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) time.Time); ok {
|
||||
r0 = returnFunc(ctx, certID, domainID, token)
|
||||
} else {
|
||||
r0 = ret.Get(0).(time.Time)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(1).(func(context.Context, string, string, string) errors.SDKError); ok {
|
||||
r1 = returnFunc(ctx, certID, domainID, token)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(errors.SDKError)
|
||||
}
|
||||
}
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SDK_RevokeCert_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RevokeCert'
|
||||
type SDK_RevokeCert_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// RevokeCert is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - certID string
|
||||
// - domainID string
|
||||
// - token string
|
||||
func (_e *SDK_Expecter) RevokeCert(ctx interface{}, certID interface{}, domainID interface{}, token interface{}) *SDK_RevokeCert_Call {
|
||||
return &SDK_RevokeCert_Call{Call: _e.mock.On("RevokeCert", ctx, certID, domainID, token)}
|
||||
}
|
||||
|
||||
func (_c *SDK_RevokeCert_Call) Run(run func(ctx context.Context, certID string, domainID string, token string)) *SDK_RevokeCert_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
var arg0 context.Context
|
||||
if args[0] != nil {
|
||||
arg0 = args[0].(context.Context)
|
||||
}
|
||||
var arg1 string
|
||||
if args[1] != nil {
|
||||
arg1 = args[1].(string)
|
||||
}
|
||||
var arg2 string
|
||||
if args[2] != nil {
|
||||
arg2 = args[2].(string)
|
||||
}
|
||||
var arg3 string
|
||||
if args[3] != nil {
|
||||
arg3 = args[3].(string)
|
||||
}
|
||||
run(
|
||||
arg0,
|
||||
arg1,
|
||||
arg2,
|
||||
arg3,
|
||||
)
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_RevokeCert_Call) Return(time1 time.Time, sDKError errors.SDKError) *SDK_RevokeCert_Call {
|
||||
_c.Call.Return(time1, sDKError)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_RevokeCert_Call) RunAndReturn(run func(ctx context.Context, certID string, domainID string, token string) (time.Time, errors.SDKError)) *SDK_RevokeCert_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// SearchUsers provides a mock function for the type SDK
|
||||
func (_mock *SDK) SearchUsers(ctx context.Context, pm sdk0.PageMetadata, token string) (sdk0.UsersPage, errors.SDKError) {
|
||||
ret := _mock.Called(ctx, pm, token)
|
||||
@@ -11110,166 +10863,6 @@ func (_c *SDK_ViewBootstrap_Call) RunAndReturn(run func(ctx context.Context, id
|
||||
return _c
|
||||
}
|
||||
|
||||
// ViewCert provides a mock function for the type SDK
|
||||
func (_mock *SDK) ViewCert(ctx context.Context, certID string, domainID string, token string) (sdk0.Cert, errors.SDKError) {
|
||||
ret := _mock.Called(ctx, certID, domainID, token)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for ViewCert")
|
||||
}
|
||||
|
||||
var r0 sdk0.Cert
|
||||
var r1 errors.SDKError
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) (sdk0.Cert, errors.SDKError)); ok {
|
||||
return returnFunc(ctx, certID, domainID, token)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) sdk0.Cert); ok {
|
||||
r0 = returnFunc(ctx, certID, domainID, token)
|
||||
} else {
|
||||
r0 = ret.Get(0).(sdk0.Cert)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(1).(func(context.Context, string, string, string) errors.SDKError); ok {
|
||||
r1 = returnFunc(ctx, certID, domainID, token)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(errors.SDKError)
|
||||
}
|
||||
}
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SDK_ViewCert_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ViewCert'
|
||||
type SDK_ViewCert_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// ViewCert is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - certID string
|
||||
// - domainID string
|
||||
// - token string
|
||||
func (_e *SDK_Expecter) ViewCert(ctx interface{}, certID interface{}, domainID interface{}, token interface{}) *SDK_ViewCert_Call {
|
||||
return &SDK_ViewCert_Call{Call: _e.mock.On("ViewCert", ctx, certID, domainID, token)}
|
||||
}
|
||||
|
||||
func (_c *SDK_ViewCert_Call) Run(run func(ctx context.Context, certID string, domainID string, token string)) *SDK_ViewCert_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
var arg0 context.Context
|
||||
if args[0] != nil {
|
||||
arg0 = args[0].(context.Context)
|
||||
}
|
||||
var arg1 string
|
||||
if args[1] != nil {
|
||||
arg1 = args[1].(string)
|
||||
}
|
||||
var arg2 string
|
||||
if args[2] != nil {
|
||||
arg2 = args[2].(string)
|
||||
}
|
||||
var arg3 string
|
||||
if args[3] != nil {
|
||||
arg3 = args[3].(string)
|
||||
}
|
||||
run(
|
||||
arg0,
|
||||
arg1,
|
||||
arg2,
|
||||
arg3,
|
||||
)
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_ViewCert_Call) Return(cert sdk0.Cert, sDKError errors.SDKError) *SDK_ViewCert_Call {
|
||||
_c.Call.Return(cert, sDKError)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_ViewCert_Call) RunAndReturn(run func(ctx context.Context, certID string, domainID string, token string) (sdk0.Cert, errors.SDKError)) *SDK_ViewCert_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// ViewCertByClient provides a mock function for the type SDK
|
||||
func (_mock *SDK) ViewCertByClient(ctx context.Context, clientID string, domainID string, token string) (sdk0.CertSerials, errors.SDKError) {
|
||||
ret := _mock.Called(ctx, clientID, domainID, token)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for ViewCertByClient")
|
||||
}
|
||||
|
||||
var r0 sdk0.CertSerials
|
||||
var r1 errors.SDKError
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) (sdk0.CertSerials, errors.SDKError)); ok {
|
||||
return returnFunc(ctx, clientID, domainID, token)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(0).(func(context.Context, string, string, string) sdk0.CertSerials); ok {
|
||||
r0 = returnFunc(ctx, clientID, domainID, token)
|
||||
} else {
|
||||
r0 = ret.Get(0).(sdk0.CertSerials)
|
||||
}
|
||||
if returnFunc, ok := ret.Get(1).(func(context.Context, string, string, string) errors.SDKError); ok {
|
||||
r1 = returnFunc(ctx, clientID, domainID, token)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(errors.SDKError)
|
||||
}
|
||||
}
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SDK_ViewCertByClient_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ViewCertByClient'
|
||||
type SDK_ViewCertByClient_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// ViewCertByClient is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - clientID string
|
||||
// - domainID string
|
||||
// - token string
|
||||
func (_e *SDK_Expecter) ViewCertByClient(ctx interface{}, clientID interface{}, domainID interface{}, token interface{}) *SDK_ViewCertByClient_Call {
|
||||
return &SDK_ViewCertByClient_Call{Call: _e.mock.On("ViewCertByClient", ctx, clientID, domainID, token)}
|
||||
}
|
||||
|
||||
func (_c *SDK_ViewCertByClient_Call) Run(run func(ctx context.Context, clientID string, domainID string, token string)) *SDK_ViewCertByClient_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
var arg0 context.Context
|
||||
if args[0] != nil {
|
||||
arg0 = args[0].(context.Context)
|
||||
}
|
||||
var arg1 string
|
||||
if args[1] != nil {
|
||||
arg1 = args[1].(string)
|
||||
}
|
||||
var arg2 string
|
||||
if args[2] != nil {
|
||||
arg2 = args[2].(string)
|
||||
}
|
||||
var arg3 string
|
||||
if args[3] != nil {
|
||||
arg3 = args[3].(string)
|
||||
}
|
||||
run(
|
||||
arg0,
|
||||
arg1,
|
||||
arg2,
|
||||
arg3,
|
||||
)
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_ViewCertByClient_Call) Return(certSerials sdk0.CertSerials, sDKError errors.SDKError) *SDK_ViewCertByClient_Call {
|
||||
_c.Call.Return(certSerials, sDKError)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *SDK_ViewCertByClient_Call) RunAndReturn(run func(ctx context.Context, clientID string, domainID string, token string) (sdk0.CertSerials, errors.SDKError)) *SDK_ViewCertByClient_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// ViewSubscription provides a mock function for the type SDK
|
||||
func (_mock *SDK) ViewSubscription(ctx context.Context, id string, token string) (sdk.Subscription, errors.SDKError) {
|
||||
ret := _mock.Called(ctx, id, token)
|
||||
|
||||
+16
-15
@@ -17,21 +17,22 @@ var errFailedToReadConfig = errors.New("failed to read config file")
|
||||
|
||||
// ServiceConf represents service config.
|
||||
type ServiceConf struct {
|
||||
Port string `toml:"port" env:"SMQ_PROVISION_HTTP_PORT" envDefault:"9016"`
|
||||
LogLevel string `toml:"log_level" env:"SMQ_PROVISION_LOG_LEVEL" envDefault:"info"`
|
||||
TLS bool `toml:"tls" env:"SMQ_PROVISION_ENV_CLIENTS_TLS" envDefault:"false"`
|
||||
ServerCert string `toml:"server_cert" env:"SMQ_PROVISION_SERVER_CERT" envDefault:""`
|
||||
ServerKey string `toml:"server_key" env:"SMQ_PROVISION_SERVER_KEY" envDefault:""`
|
||||
ClientsURL string `toml:"clients_url" env:"SMQ_PROVISION_CLIENTS_LOCATION" envDefault:"http://localhost"`
|
||||
UsersURL string `toml:"users_url" env:"SMQ_PROVISION_USERS_LOCATION" envDefault:"http://localhost"`
|
||||
HTTPPort string `toml:"http_port" env:"SMQ_PROVISION_HTTP_PORT" envDefault:"9016"`
|
||||
MgEmail string `toml:"smq_email" env:"SMQ_PROVISION_EMAIL" envDefault:"test@example.com"`
|
||||
MgUsername string `toml:"smq_username" env:"SMQ_PROVISION_USERNAME" envDefault:"user"`
|
||||
MgPass string `toml:"smq_pass" env:"SMQ_PROVISION_PASS" envDefault:"test"`
|
||||
MgDomainID string `toml:"smq_domain_id" env:"SMQ_PROVISION_DOMAIN_ID" envDefault:""`
|
||||
MgAPIKey string `toml:"smq_api_key" env:"SMQ_PROVISION_API_KEY" envDefault:""`
|
||||
MgBSURL string `toml:"smq_bs_url" env:"SMQ_PROVISION_BS_SVC_URL" envDefault:"http://localhost:9000"`
|
||||
MgCertsURL string `toml:"smq_certs_url" env:"SMQ_PROVISION_CERTS_SVC_URL" envDefault:"http://localhost:9019"`
|
||||
Port string `toml:"port" env:"SMQ_PROVISION_HTTP_PORT" envDefault:"9016"`
|
||||
LogLevel string `toml:"log_level" env:"SMQ_PROVISION_LOG_LEVEL" envDefault:"info"`
|
||||
TLS bool `toml:"tls" env:"SMQ_PROVISION_ENV_CLIENTS_TLS" envDefault:"false"`
|
||||
ServerCert string `toml:"server_cert" env:"SMQ_PROVISION_SERVER_CERT" envDefault:""`
|
||||
ServerKey string `toml:"server_key" env:"SMQ_PROVISION_SERVER_KEY" envDefault:""`
|
||||
ClientsURL string `toml:"clients_url" env:"SMQ_PROVISION_CLIENTS_LOCATION" envDefault:"http://localhost"`
|
||||
UsersURL string `toml:"users_url" env:"SMQ_PROVISION_USERS_LOCATION" envDefault:"http://localhost"`
|
||||
CertsURL string `toml:"certs_url" env:"SMQ_PROVISION_CERTS_LOCATION" envDefault:"http://localhost"`
|
||||
HTTPPort string `toml:"http_port" env:"SMQ_PROVISION_HTTP_PORT" envDefault:"9016"`
|
||||
MgEmail string `toml:"smq_email" env:"SMQ_PROVISION_EMAIL" envDefault:"test@example.com"`
|
||||
MgUsername string `toml:"smq_username" env:"SMQ_PROVISION_USERNAME" envDefault:"user"`
|
||||
MgPass string `toml:"smq_pass" env:"SMQ_PROVISION_PASS" envDefault:"test"`
|
||||
MgDomainID string `toml:"smq_domain_id" env:"SMQ_PROVISION_DOMAIN_ID" envDefault:""`
|
||||
MgAPIKey string `toml:"smq_api_key" env:"SMQ_PROVISION_API_KEY" envDefault:""`
|
||||
MgBSURL string `toml:"smq_bs_url" env:"SMQ_PROVISION_BS_SVC_URL" envDefault:"http://localhost:9000"`
|
||||
MgCertsURL string `toml:"smq_certs_url" env:"SMQ_PROVISION_CERTS_SVC_URL" envDefault:"http://localhost:9019"`
|
||||
}
|
||||
|
||||
// Bootstrap represetns the Bootstrap config.
|
||||
|
||||
+28
-24
@@ -9,6 +9,8 @@ import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
certs "github.com/absmach/certs"
|
||||
csdk "github.com/absmach/certs/sdk"
|
||||
"github.com/absmach/magistrala/pkg/sdk"
|
||||
"github.com/absmach/supermq/pkg/errors"
|
||||
smqSDK "github.com/absmach/supermq/pkg/sdk"
|
||||
@@ -73,6 +75,7 @@ type Service interface {
|
||||
type provisionService struct {
|
||||
logger *slog.Logger
|
||||
sdk sdk.SDK
|
||||
csdk csdk.SDK
|
||||
conf Config
|
||||
}
|
||||
|
||||
@@ -88,9 +91,10 @@ type Result struct {
|
||||
}
|
||||
|
||||
// New returns new provision service.
|
||||
func New(cfg Config, mgsdk sdk.SDK, logger *slog.Logger) Service {
|
||||
func New(cfg Config, mgsdk sdk.SDK, certsSdk csdk.SDK, logger *slog.Logger) Service {
|
||||
return &provisionService{
|
||||
logger: logger,
|
||||
csdk: certsSdk,
|
||||
conf: cfg,
|
||||
sdk: mgsdk,
|
||||
}
|
||||
@@ -182,7 +186,7 @@ func (ps *provisionService) Provision(ctx context.Context, domainID, token, name
|
||||
ClientKey: map[string]string{},
|
||||
}
|
||||
|
||||
var cert smqSDK.Cert
|
||||
var cert certs.Certificate
|
||||
var bsConfig sdk.BootstrapConfig
|
||||
for _, c := range clients {
|
||||
var chanIDs []string
|
||||
@@ -202,8 +206,8 @@ func (ps *provisionService) Provision(ctx context.Context, domainID, token, name
|
||||
ExternalKey: externalKey,
|
||||
Channels: chanIDs,
|
||||
CACert: res.CACert,
|
||||
ClientCert: cert.Certificate,
|
||||
ClientKey: cert.Key,
|
||||
ClientCert: string(cert.Certificate),
|
||||
ClientKey: string(cert.Key),
|
||||
Content: string(content),
|
||||
}
|
||||
bsid, err := ps.sdk.AddBootstrap(ctx, bsReq, domainID, token)
|
||||
@@ -218,14 +222,14 @@ func (ps *provisionService) Provision(ctx context.Context, domainID, token, name
|
||||
}
|
||||
|
||||
if ps.conf.Bootstrap.X509Provision {
|
||||
var cert smqSDK.Cert
|
||||
var cert csdk.Certificate
|
||||
|
||||
cert, err = ps.sdk.IssueCert(ctx, c.ID, ps.conf.Cert.TTL, domainID, token)
|
||||
cert, err = ps.csdk.IssueCert(ctx, c.ID, ps.conf.Cert.TTL, nil, csdk.Options{}, domainID, token)
|
||||
if err != nil {
|
||||
e := errors.Wrap(err, fmt.Errorf("client id: %s", c.ID))
|
||||
return res, errors.Wrap(ErrFailedCertCreation, e)
|
||||
}
|
||||
cert, err := ps.sdk.ViewCert(ctx, cert.SerialNumber, domainID, token)
|
||||
cert, err := ps.csdk.ViewCert(ctx, cert.SerialNumber, domainID, token)
|
||||
if err != nil {
|
||||
return res, errors.Wrap(ErrFailedCertView, err)
|
||||
}
|
||||
@@ -262,15 +266,15 @@ func (ps *provisionService) Cert(ctx context.Context, domainID, token, clientID,
|
||||
return "", "", errors.Wrap(ErrFailedToCreateToken, err)
|
||||
}
|
||||
|
||||
th, err := ps.sdk.Client(ctx, clientID, domainID, token)
|
||||
c, err := ps.sdk.Client(ctx, clientID, domainID, token)
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(ErrUnauthorized, err)
|
||||
}
|
||||
cert, err := ps.sdk.IssueCert(ctx, th.ID, ps.conf.Cert.TTL, domainID, token)
|
||||
cert, err := ps.csdk.IssueCert(ctx, c.ID, ps.conf.Cert.TTL, []string{}, csdk.Options{}, domainID, token)
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(ErrFailedCertCreation, err)
|
||||
}
|
||||
cert, err = ps.sdk.ViewCert(ctx, cert.SerialNumber, domainID, token)
|
||||
cert, err = ps.csdk.ViewCert(ctx, cert.SerialNumber, domainID, token)
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(ErrFailedCertView, err)
|
||||
}
|
||||
@@ -377,9 +381,9 @@ func (ps *provisionService) recover(ctx context.Context, e *error, ths *[]smqSDK
|
||||
|
||||
if errors.Contains(err, ErrFailedBootstrapValidate) || errors.Contains(err, ErrFailedCertCreation) {
|
||||
clean(ctx, ps, clients, channels, domainID, token)
|
||||
for _, th := range clients {
|
||||
if needsBootstrap(th) {
|
||||
ps.errLog(ps.sdk.RemoveBootstrap(ctx, th.ID, domainID, token))
|
||||
for _, c := range clients {
|
||||
if needsBootstrap(c) {
|
||||
ps.errLog(ps.sdk.RemoveBootstrap(ctx, c.ID, domainID, token))
|
||||
}
|
||||
}
|
||||
return
|
||||
@@ -387,9 +391,9 @@ func (ps *provisionService) recover(ctx context.Context, e *error, ths *[]smqSDK
|
||||
|
||||
if errors.Contains(err, ErrFailedBootstrapValidate) || errors.Contains(err, ErrFailedCertCreation) {
|
||||
clean(ctx, ps, clients, channels, domainID, token)
|
||||
for _, th := range clients {
|
||||
if needsBootstrap(th) {
|
||||
bs, err := ps.sdk.ViewBootstrap(ctx, th.ID, domainID, token)
|
||||
for _, c := range clients {
|
||||
if needsBootstrap(c) {
|
||||
bs, err := ps.sdk.ViewBootstrap(ctx, c.ID, domainID, token)
|
||||
ps.errLog(errors.Wrap(ErrFailedBootstrapRetrieval, err))
|
||||
ps.errLog(ps.sdk.RemoveBootstrap(ctx, bs.ClientID, domainID, token))
|
||||
}
|
||||
@@ -398,13 +402,13 @@ func (ps *provisionService) recover(ctx context.Context, e *error, ths *[]smqSDK
|
||||
|
||||
if errors.Contains(err, ErrClientUpdate) || errors.Contains(err, ErrGatewayUpdate) {
|
||||
clean(ctx, ps, clients, channels, domainID, token)
|
||||
for _, th := range clients {
|
||||
if ps.conf.Bootstrap.X509Provision && needsBootstrap(th) {
|
||||
_, err := ps.sdk.RevokeCert(ctx, th.ID, domainID, token)
|
||||
for _, c := range clients {
|
||||
if ps.conf.Bootstrap.X509Provision && needsBootstrap(c) {
|
||||
err := ps.csdk.RevokeCert(ctx, c.ID, domainID, token)
|
||||
ps.errLog(err)
|
||||
}
|
||||
if needsBootstrap(th) {
|
||||
bs, err := ps.sdk.ViewBootstrap(ctx, th.ID, domainID, token)
|
||||
if needsBootstrap(c) {
|
||||
bs, err := ps.sdk.ViewBootstrap(ctx, c.ID, domainID, token)
|
||||
ps.errLog(errors.Wrap(ErrFailedBootstrapRetrieval, err))
|
||||
ps.errLog(ps.sdk.RemoveBootstrap(ctx, bs.ClientID, domainID, token))
|
||||
}
|
||||
@@ -413,12 +417,12 @@ func (ps *provisionService) recover(ctx context.Context, e *error, ths *[]smqSDK
|
||||
}
|
||||
}
|
||||
|
||||
func needsBootstrap(th smqSDK.Client) bool {
|
||||
if th.Metadata == nil {
|
||||
func needsBootstrap(c smqSDK.Client) bool {
|
||||
if c.Metadata == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if _, ok := th.Metadata[externalIDKey]; ok {
|
||||
if _, ok := c.Metadata[externalIDKey]; ok {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
+58
-41
@@ -8,6 +8,8 @@ import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
csdk "github.com/absmach/certs/sdk"
|
||||
csdkmocks "github.com/absmach/certs/sdk/mocks"
|
||||
"github.com/absmach/magistrala/internal/testsutil"
|
||||
sdkmocks "github.com/absmach/magistrala/pkg/sdk/mocks"
|
||||
"github.com/absmach/magistrala/provision"
|
||||
@@ -24,7 +26,8 @@ var validToken = "valid"
|
||||
|
||||
func TestMapping(t *testing.T) {
|
||||
mgsdk := new(sdkmocks.SDK)
|
||||
svc := provision.New(validConfig, mgsdk, smqlog.NewMock())
|
||||
certs := new(csdkmocks.SDK)
|
||||
svc := provision.New(validConfig, mgsdk, certs, smqlog.NewMock())
|
||||
|
||||
cases := []struct {
|
||||
desc string
|
||||
@@ -63,19 +66,20 @@ func TestMapping(t *testing.T) {
|
||||
|
||||
func TestCert(t *testing.T) {
|
||||
cases := []struct {
|
||||
desc string
|
||||
config provision.Config
|
||||
domainID string
|
||||
token string
|
||||
clientID string
|
||||
ttl string
|
||||
serial string
|
||||
cert string
|
||||
key string
|
||||
sdkClientErr error
|
||||
sdkCertErr error
|
||||
sdkTokenErr error
|
||||
err error
|
||||
desc string
|
||||
config provision.Config
|
||||
domainID string
|
||||
token string
|
||||
returnedToken string
|
||||
clientID string
|
||||
ttl string
|
||||
serial string
|
||||
cert string
|
||||
key string
|
||||
sdkClientErr error
|
||||
sdkCertErr error
|
||||
sdkTokenErr error
|
||||
err error
|
||||
}{
|
||||
{
|
||||
desc: "valid",
|
||||
@@ -97,16 +101,17 @@ func TestCert(t *testing.T) {
|
||||
Server: provision.ServiceConf{MgAPIKey: "key"},
|
||||
Cert: provision.Cert{TTL: "1h"},
|
||||
},
|
||||
domainID: testsutil.GenerateUUID(t),
|
||||
token: "",
|
||||
clientID: testsutil.GenerateUUID(t),
|
||||
ttl: "1h",
|
||||
cert: "cert",
|
||||
key: "key",
|
||||
sdkClientErr: nil,
|
||||
sdkCertErr: nil,
|
||||
sdkTokenErr: nil,
|
||||
err: nil,
|
||||
domainID: testsutil.GenerateUUID(t),
|
||||
token: "",
|
||||
returnedToken: "key",
|
||||
clientID: testsutil.GenerateUUID(t),
|
||||
ttl: "1h",
|
||||
cert: "cert",
|
||||
key: "key",
|
||||
sdkClientErr: nil,
|
||||
sdkCertErr: nil,
|
||||
sdkTokenErr: nil,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "empty token with username and password",
|
||||
@@ -118,16 +123,17 @@ func TestCert(t *testing.T) {
|
||||
},
|
||||
Cert: provision.Cert{TTL: "1h"},
|
||||
},
|
||||
domainID: testsutil.GenerateUUID(t),
|
||||
token: "",
|
||||
clientID: testsutil.GenerateUUID(t),
|
||||
ttl: "1h",
|
||||
cert: "cert",
|
||||
key: "key",
|
||||
sdkClientErr: nil,
|
||||
sdkCertErr: nil,
|
||||
sdkTokenErr: nil,
|
||||
err: nil,
|
||||
domainID: testsutil.GenerateUUID(t),
|
||||
token: "",
|
||||
returnedToken: validToken,
|
||||
clientID: testsutil.GenerateUUID(t),
|
||||
ttl: "1h",
|
||||
cert: "cert",
|
||||
key: "key",
|
||||
sdkClientErr: nil,
|
||||
sdkCertErr: nil,
|
||||
sdkTokenErr: nil,
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "empty token with username and invalid password",
|
||||
@@ -210,24 +216,35 @@ func TestCert(t *testing.T) {
|
||||
err: repoerr.ErrCreateEntity,
|
||||
},
|
||||
}
|
||||
|
||||
mgsdk := new(sdkmocks.SDK)
|
||||
certs := new(csdkmocks.SDK)
|
||||
for _, c := range cases {
|
||||
t.Run(c.desc, func(t *testing.T) {
|
||||
mgsdk := new(sdkmocks.SDK)
|
||||
svc := provision.New(c.config, mgsdk, smqlog.NewMock())
|
||||
svc := provision.New(c.config, mgsdk, certs, smqlog.NewMock())
|
||||
|
||||
call1 := mgsdk.On("Client", mock.Anything, c.clientID, c.domainID, mock.Anything).Return(smqSDK.Client{ID: c.clientID}, c.sdkClientErr)
|
||||
var call2 *mock.Call
|
||||
switch c.token {
|
||||
case "":
|
||||
call2 = certs.On("IssueCert", context.Background(), c.clientID, c.config.Cert.TTL, []string{}, csdk.Options{}, c.domainID, c.returnedToken).Return(csdk.Certificate{SerialNumber: c.serial}, c.sdkCertErr)
|
||||
default:
|
||||
call2 = certs.On("IssueCert", context.Background(), c.clientID, c.config.Cert.TTL, []string{}, csdk.Options{}, c.domainID, c.token).Return(csdk.Certificate{SerialNumber: c.serial}, c.sdkCertErr)
|
||||
}
|
||||
call3 := certs.On("ViewCert", mock.Anything, c.serial, mock.Anything, mock.Anything).Return(csdk.Certificate{Certificate: c.cert, Key: c.key}, c.sdkCertErr)
|
||||
|
||||
mgsdk.On("Client", mock.Anything, c.clientID, c.domainID, mock.Anything).Return(smqSDK.Client{ID: c.clientID}, c.sdkClientErr)
|
||||
mgsdk.On("IssueCert", mock.Anything, c.clientID, c.config.Cert.TTL, c.domainID, mock.Anything).Return(smqSDK.Cert{SerialNumber: c.serial}, c.sdkCertErr)
|
||||
mgsdk.On("ViewCert", mock.Anything, c.serial, mock.Anything, mock.Anything).Return(smqSDK.Cert{Certificate: c.cert, Key: c.key}, c.sdkCertErr)
|
||||
login := smqSDK.Login{
|
||||
Username: c.config.Server.MgUsername,
|
||||
Password: c.config.Server.MgPass,
|
||||
}
|
||||
mgsdk.On("CreateToken", mock.Anything, login).Return(smqSDK.Token{AccessToken: validToken}, c.sdkTokenErr)
|
||||
call4 := mgsdk.On("CreateToken", mock.Anything, login).Return(smqSDK.Token{AccessToken: validToken}, c.sdkTokenErr)
|
||||
cert, key, err := svc.Cert(context.Background(), c.domainID, c.token, c.clientID, c.ttl)
|
||||
assert.Equal(t, c.cert, cert)
|
||||
assert.Equal(t, c.key, key)
|
||||
assert.True(t, errors.Contains(err, c.err), fmt.Sprintf("expected error %v, got %v", c.err, err))
|
||||
call1.Unset()
|
||||
call2.Unset()
|
||||
call3.Unset()
|
||||
call4.Unset()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ package middleware
|
||||
|
||||
import (
|
||||
"context"
|
||||
"maps"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/re"
|
||||
@@ -278,17 +277,18 @@ func (am *authorizationMiddleware) authorize(ctx context.Context, pr smqauthz.Po
|
||||
}
|
||||
|
||||
func (am *authorizationMiddleware) callOut(ctx context.Context, session authn.Session, op string, params map[string]any) error {
|
||||
pl := map[string]any{
|
||||
"entity_type": entityType,
|
||||
"subject_type": policies.UserType,
|
||||
"subject_id": session.UserID,
|
||||
"domain": session.DomainID,
|
||||
"time": time.Now().UTC(),
|
||||
req := callout.Request{
|
||||
BaseRequest: callout.BaseRequest{
|
||||
EntityType: entityType,
|
||||
CallerID: session.UserID,
|
||||
CallerType: policies.UserType,
|
||||
DomainID: session.DomainID,
|
||||
Time: time.Now().UTC(),
|
||||
Operation: op,
|
||||
},
|
||||
}
|
||||
|
||||
maps.Copy(params, pl)
|
||||
|
||||
if err := am.callout.Callout(ctx, op, params); err != nil {
|
||||
if err := am.callout.Callout(ctx, req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user