mattermost/server/public/model/metadata_test.go
2024-06-27 15:27:57 +02:00

176 lines
3.9 KiB
Go

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package model
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestValidate(t *testing.T) {
tests := []struct {
name string
metadata Metadata
expectErr bool
}{
{
name: "Valid Metadata",
metadata: Metadata{
Version: 1,
Type: ServerMetadata,
GeneratedAt: 1622569200,
ServerVersion: "5.33.3",
ServerID: NewId(),
LicenseID: NewId(),
CustomerID: NewId(),
Extras: map[string]interface{}{"key": "value"},
},
expectErr: false,
},
{
name: "Valid Metadata without license",
metadata: Metadata{
Version: 1,
Type: ServerMetadata,
GeneratedAt: 1622569200,
ServerVersion: "5.33.3",
ServerID: NewId(),
Extras: map[string]interface{}{"key": "value"},
},
expectErr: false,
},
{
name: "Invalid Version",
metadata: Metadata{
Version: 0,
Type: ServerMetadata,
GeneratedAt: 1622569200,
ServerVersion: "5.33.3",
ServerID: NewId(),
LicenseID: NewId(),
CustomerID: NewId(),
},
expectErr: true,
},
{
name: "Invalid Type",
metadata: Metadata{
Version: 1,
Type: "invalid-type",
GeneratedAt: 1622569200,
ServerVersion: "5.33.3",
ServerID: NewId(),
LicenseID: NewId(),
CustomerID: NewId(),
},
expectErr: true,
},
{
name: "Invalid Server Version",
metadata: Metadata{
Version: 1,
Type: ServerMetadata,
GeneratedAt: 1622569200,
ServerVersion: "invalid-version",
ServerID: "valid-server-id",
LicenseID: "valid-license-id",
CustomerID: "valid-customer-id",
},
expectErr: true,
},
{
name: "Invalid Server ID",
metadata: Metadata{
Version: 1,
Type: ServerMetadata,
GeneratedAt: 1622569200,
ServerVersion: "5.33.3",
ServerID: "",
LicenseID: NewId(),
CustomerID: NewId(),
},
expectErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := tt.metadata.Validate()
if tt.expectErr {
require.Error(t, err)
} else {
require.NoError(t, err)
}
})
}
}
func TestParseMetadata(t *testing.T) {
validMetadataJSON := `{
"version": 1,
"type": "mattermost-support-package",
"generated_at": 1622569200,
"server_version": "5.33.3",
"server_id": "8fqk9rti13fmpxdd5934a3xsxh",
"license_id": "3g3pqn8in3brzjkozcn1kdidgr",
"customer_id": "74cmws7gf3ykpj31car7zahsny",
"extras": {"key": "value"}
}`
invalidVersionJSON := `{
"version": 0,
"type": "mattermost-support-package",
"generated_at": 1622569200,
"server_version": "5.33.3",
"server_id": "8fqk9rti13fmpxdd5934a3xsxh",
"license_id": "3g3pqn8in3brzjkozcn1kdidgr",
"customer_id": "74cmws7gf3ykpj31car7zahsny",
}`
unsupportedVersionJSON := `{
"version": 2,
"type": "mattermost-support-package",
"generated_at": 1622569200,
"server_version": "5.33.3",
"server_id": "8fqk9rti13fmpxdd5934a3xsxh",
"license_id": "3g3pqn8in3brzjkozcn1kdidgr",
"customer_id": "74cmws7gf3ykpj31car7zahsny",
}`
tests := []struct {
name string
jsonData string
expectErr bool
}{
{
name: "Valid Metadata JSON",
jsonData: validMetadataJSON,
expectErr: false,
},
{
name: "Invalid Version in JSON",
jsonData: invalidVersionJSON,
expectErr: true,
},
{
name: "Unsupported Version in JSON",
jsonData: unsupportedVersionJSON,
expectErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
md, err := ParseMetadata([]byte(tt.jsonData))
if tt.expectErr {
require.Error(t, err)
require.Nil(t, md)
} else {
require.NoError(t, err)
require.NotNil(t, md)
}
})
}
}