mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
SMQ-3108 - Add support for public and private metadata for users and clients (#3155)
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
This commit is contained in:
+93
-7
@@ -28,6 +28,8 @@ var (
|
||||
relation = "administrator"
|
||||
all = "all"
|
||||
conntype = `["publish","subscribe"]`
|
||||
|
||||
errEndJSONInput = errors.New("unexpected end of JSON input")
|
||||
)
|
||||
|
||||
var client = smqsdk.Client{
|
||||
@@ -295,6 +297,8 @@ func TestUpdateClientCmd(t *testing.T) {
|
||||
newTagsJson := "[\"tag1\", \"tag2\"]"
|
||||
newTagString := []string{"tag1", "tag2"}
|
||||
newNameandMeta := "{\"name\": \"clientName\", \"metadata\": {\"role\": \"general\"}}"
|
||||
newMetadata := "{\"metadata\": {\"role\": \"general\"}}"
|
||||
newPublicMeta := "{\"public_metadata\": {\"role\": \"general\"}}"
|
||||
newSecret := "secret"
|
||||
|
||||
cases := []struct {
|
||||
@@ -305,6 +309,26 @@ func TestUpdateClientCmd(t *testing.T) {
|
||||
client smqsdk.Client
|
||||
logType outputLog
|
||||
}{
|
||||
{
|
||||
desc: "update client name and public metadata successfully",
|
||||
args: []string{
|
||||
client.ID,
|
||||
updateCmd,
|
||||
newNameandMeta,
|
||||
domainID,
|
||||
token,
|
||||
},
|
||||
client: smqsdk.Client{
|
||||
Name: "clientName",
|
||||
PublicMetadata: map[string]any{
|
||||
"role": "general",
|
||||
},
|
||||
ID: client.ID,
|
||||
DomainID: client.DomainID,
|
||||
Status: client.Status,
|
||||
},
|
||||
logType: entityLog,
|
||||
},
|
||||
{
|
||||
desc: "update client name and metadata successfully",
|
||||
args: []string{
|
||||
@@ -317,9 +341,7 @@ func TestUpdateClientCmd(t *testing.T) {
|
||||
client: smqsdk.Client{
|
||||
Name: "clientName",
|
||||
Metadata: map[string]any{
|
||||
"metadata": map[string]any{
|
||||
"role": "general",
|
||||
},
|
||||
"role": "general",
|
||||
},
|
||||
ID: client.ID,
|
||||
DomainID: client.DomainID,
|
||||
@@ -327,6 +349,70 @@ func TestUpdateClientCmd(t *testing.T) {
|
||||
},
|
||||
logType: entityLog,
|
||||
},
|
||||
{
|
||||
desc: "update client public metadata successfully",
|
||||
args: []string{
|
||||
client.ID,
|
||||
updateCmd,
|
||||
newPublicMeta,
|
||||
domainID,
|
||||
token,
|
||||
},
|
||||
client: smqsdk.Client{
|
||||
PublicMetadata: map[string]any{
|
||||
"role": "general",
|
||||
},
|
||||
ID: client.ID,
|
||||
DomainID: client.DomainID,
|
||||
Status: client.Status,
|
||||
},
|
||||
logType: entityLog,
|
||||
},
|
||||
{
|
||||
desc: "update client metadata successfully",
|
||||
args: []string{
|
||||
client.ID,
|
||||
updateCmd,
|
||||
newMetadata,
|
||||
domainID,
|
||||
token,
|
||||
},
|
||||
client: smqsdk.Client{
|
||||
Metadata: map[string]any{
|
||||
"role": "general",
|
||||
},
|
||||
ID: client.ID,
|
||||
DomainID: client.DomainID,
|
||||
Status: client.Status,
|
||||
},
|
||||
logType: entityLog,
|
||||
},
|
||||
{
|
||||
desc: "update client public metadata with invalid json",
|
||||
args: []string{
|
||||
client.ID,
|
||||
updateCmd,
|
||||
"{\"public_metadata\": {\"role\": \"general\"}",
|
||||
domainID,
|
||||
token,
|
||||
},
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
logType: errLog,
|
||||
},
|
||||
{
|
||||
desc: "update client metadata with invalid json",
|
||||
args: []string{
|
||||
client.ID,
|
||||
updateCmd,
|
||||
"{\"metadata\": {\"role\": \"general\"}",
|
||||
domainID,
|
||||
token,
|
||||
},
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
logType: errLog,
|
||||
},
|
||||
{
|
||||
desc: "update client name and metadata with invalid json",
|
||||
args: []string{
|
||||
@@ -336,8 +422,8 @@ func TestUpdateClientCmd(t *testing.T) {
|
||||
domainID,
|
||||
token,
|
||||
},
|
||||
sdkErr: errors.NewSDKError(errors.New("unexpected end of JSON input")),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errors.New("unexpected end of JSON input")),
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
logType: errLog,
|
||||
},
|
||||
{
|
||||
@@ -383,8 +469,8 @@ func TestUpdateClientCmd(t *testing.T) {
|
||||
token,
|
||||
},
|
||||
logType: errLog,
|
||||
sdkErr: errors.NewSDKError(errors.New("unexpected end of JSON input")),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errors.New("unexpected end of JSON input")),
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
},
|
||||
{
|
||||
desc: "update client tags with invalid client id",
|
||||
|
||||
+53
-5
@@ -519,6 +519,8 @@ func TestUpdateUserCmd(t *testing.T) {
|
||||
newRole := "administrator"
|
||||
newTagsJSON := "[\"tag1\", \"tag2\"]"
|
||||
newNameMetadataJSON := "{\"name\":\"new name\", \"metadata\":{\"key\": \"value\"}}"
|
||||
newMetadataJSON := "{\"metadata\":{\"key\": \"value\"}}"
|
||||
newPublicMetadataJSON := "{\"public_metadata\":{\"key\": \"value\"}}"
|
||||
|
||||
cases := []struct {
|
||||
desc string
|
||||
@@ -550,8 +552,8 @@ func TestUpdateUserCmd(t *testing.T) {
|
||||
"[\"tag1\", \"tag2\"",
|
||||
validToken,
|
||||
},
|
||||
sdkErr: errors.NewSDKError(errors.New("unexpected end of JSON input")),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errors.New("unexpected end of JSON input")),
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
logType: errLog,
|
||||
},
|
||||
{
|
||||
@@ -567,6 +569,52 @@ func TestUpdateUserCmd(t *testing.T) {
|
||||
sdkErr: errors.NewSDKErrorWithStatus(svcerr.ErrAuthorization, http.StatusForbidden),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errors.NewSDKErrorWithStatus(svcerr.ErrAuthorization, http.StatusForbidden)),
|
||||
},
|
||||
{
|
||||
desc: "update user public metadata successfully",
|
||||
args: []string{
|
||||
userID,
|
||||
updateCmd,
|
||||
newPublicMetadataJSON,
|
||||
validToken,
|
||||
},
|
||||
logType: entityLog,
|
||||
user: user,
|
||||
},
|
||||
{
|
||||
desc: "update user public metadata with invalid json",
|
||||
args: []string{
|
||||
userID,
|
||||
updateCmd,
|
||||
"{\"public_metadata\":{\"key\": \"value\"",
|
||||
validToken,
|
||||
},
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
logType: errLog,
|
||||
},
|
||||
{
|
||||
desc: "update user metadata successfully",
|
||||
args: []string{
|
||||
userID,
|
||||
updateCmd,
|
||||
newMetadataJSON,
|
||||
validToken,
|
||||
},
|
||||
logType: entityLog,
|
||||
user: user,
|
||||
},
|
||||
{
|
||||
desc: "update user metadata with invalid json",
|
||||
args: []string{
|
||||
userID,
|
||||
updateCmd,
|
||||
"{\"metadata\":{\"key\": \"value\"",
|
||||
validToken,
|
||||
},
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
logType: errLog,
|
||||
},
|
||||
{
|
||||
desc: "update user email successfully",
|
||||
args: []string{
|
||||
@@ -623,8 +671,8 @@ func TestUpdateUserCmd(t *testing.T) {
|
||||
"{\"name\":\"new name\", \"metadata\":{\"key\": \"value\"}",
|
||||
validToken,
|
||||
},
|
||||
sdkErr: errors.NewSDKError(errors.New("unexpected end of JSON input")),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errors.New("unexpected end of JSON input")),
|
||||
sdkErr: errors.NewSDKError(errEndJSONInput),
|
||||
errLogMessage: fmt.Sprintf("\nerror: %s\n\n", errEndJSONInput),
|
||||
logType: errLog,
|
||||
},
|
||||
{
|
||||
@@ -708,7 +756,7 @@ Available update options:
|
||||
case len(tc.args) == 4: // Basic user update
|
||||
sdkCall = sdkMock.On("UpdateUser", mock.Anything, mgsdk.User{
|
||||
FirstName: "new name",
|
||||
Metadata: mgsdk.Metadata{
|
||||
PublicMetadata: mgsdk.Metadata{
|
||||
"key": "value",
|
||||
},
|
||||
}, tc.args[3]).Return(tc.user, tc.sdkErr)
|
||||
|
||||
Reference in New Issue
Block a user