mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
* Fix possible panics during license validation * Return error if non 2xx code is returned by trial request server
95 lines
3.7 KiB
Go
95 lines
3.7 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package utils
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/base64"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestValidateLicense(t *testing.T) {
|
|
t.Run("should fail with junk data", func(t *testing.T) {
|
|
b1 := []byte("junk")
|
|
ok, _ := LicenseValidator.ValidateLicense(b1)
|
|
require.False(t, ok, "should have failed - bad license")
|
|
|
|
b2 := []byte("junkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunkjunk")
|
|
ok, _ = LicenseValidator.ValidateLicense(b2)
|
|
require.False(t, ok, "should have failed - bad license")
|
|
})
|
|
|
|
t.Run("should not panic on shorted than expected input", func(t *testing.T) {
|
|
var licenseData bytes.Buffer
|
|
var inputData []byte
|
|
|
|
for i := 0; i < 255; i++ {
|
|
inputData = append(inputData, 'A')
|
|
}
|
|
inputData = append(inputData, 0x00)
|
|
|
|
encoder := base64.NewEncoder(base64.StdEncoding, &licenseData)
|
|
_, err := encoder.Write(inputData)
|
|
require.NoError(t, err)
|
|
err = encoder.Close()
|
|
require.NoError(t, err)
|
|
|
|
ok, str := LicenseValidator.ValidateLicense(licenseData.Bytes())
|
|
require.False(t, ok)
|
|
require.Empty(t, str)
|
|
})
|
|
|
|
t.Run("should not panic with input filled of null terminators", func(t *testing.T) {
|
|
var licenseData bytes.Buffer
|
|
var inputData []byte
|
|
|
|
for i := 0; i < 256; i++ {
|
|
inputData = append(inputData, 0x00)
|
|
}
|
|
|
|
encoder := base64.NewEncoder(base64.StdEncoding, &licenseData)
|
|
_, err := encoder.Write(inputData)
|
|
require.NoError(t, err)
|
|
err = encoder.Close()
|
|
require.NoError(t, err)
|
|
|
|
ok, str := LicenseValidator.ValidateLicense(licenseData.Bytes())
|
|
require.False(t, ok)
|
|
require.Empty(t, str)
|
|
})
|
|
}
|
|
|
|
func TestGetLicenseFileLocation(t *testing.T) {
|
|
fileName := GetLicenseFileLocation("")
|
|
require.NotEmpty(t, fileName, "invalid default file name")
|
|
|
|
fileName = GetLicenseFileLocation("mattermost.mattermost-license")
|
|
require.Equal(t, fileName, "mattermost.mattermost-license", "invalid file name")
|
|
}
|
|
|
|
func TestGetLicenseFileFromDisk(t *testing.T) {
|
|
t.Run("missing file", func(t *testing.T) {
|
|
fileBytes := GetLicenseFileFromDisk("thisfileshouldnotexist.mattermost-license")
|
|
assert.Empty(t, fileBytes, "invalid bytes")
|
|
})
|
|
|
|
t.Run("not a license file", func(t *testing.T) {
|
|
f, err := ioutil.TempFile("", "TestGetLicenseFileFromDisk")
|
|
require.NoError(t, err)
|
|
defer os.Remove(f.Name())
|
|
ioutil.WriteFile(f.Name(), []byte("not a license"), 0777)
|
|
|
|
fileBytes := GetLicenseFileFromDisk(f.Name())
|
|
require.NotEmpty(t, fileBytes, "should have read the file")
|
|
|
|
success, _ := LicenseValidator.ValidateLicense(fileBytes)
|
|
assert.False(t, success, "should have been an invalid file")
|
|
})
|
|
}
|