Этот коммит содержится в:
Ben Schumacher
2025-01-13 20:23:09 +01:00
коммит произвёл GitHub
родитель 091d1bba8b
Коммит 8d4bf4bae0
50 изменённых файлов: 2429 добавлений и 745 удалений

Просмотреть файл

@@ -153,7 +153,7 @@ type Client interface {
DownloadExport(ctx context.Context, name string, wr io.Writer, offset int64) (int64, *model.Response, error)
GeneratePresignedURL(ctx context.Context, name string) (*model.PresignURLResponse, *model.Response, error)
ResetSamlAuthDataToEmail(ctx context.Context, includeDeleted bool, dryRun bool, userIDs []string) (int64, *model.Response, error)
GenerateSupportPacket(ctx context.Context) ([]byte, *model.Response, error)
GenerateSupportPacket(ctx context.Context) (io.ReadCloser, string, *model.Response, error)
GetOAuthApps(ctx context.Context, page, perPage int) ([]*model.OAuthApp, *model.Response, error)
GetPreferences(ctx context.Context, userId string) (model.Preferences, *model.Response, error)
GetPreferencesByCategory(ctx context.Context, userId, category string) (model.Preferences, *model.Response, error)

Просмотреть файл

@@ -6,8 +6,8 @@ package commands
import (
"context"
"fmt"
"io"
"os"
"time"
"github.com/pkg/errors"
"github.com/spf13/cobra"
@@ -81,7 +81,7 @@ func init() {
SystemSetBusyCmd.Flags().UintP("seconds", "s", 3600, "Number of seconds until server is automatically marked as not busy.")
_ = SystemSetBusyCmd.MarkFlagRequired("seconds")
SystemSupportPacketCmd.Flags().StringP("output-file", "o", "", "Output file name (default \"mattermost_support_packet_YYYY-MM-DD-HH-MM.zip\")")
SystemSupportPacketCmd.Flags().StringP("output-file", "o", "", "Define the output file name")
SystemCmd.AddCommand(
SystemGetBusyCmd,
@@ -180,23 +180,23 @@ func systemSupportPacketCmdF(c client.Client, cmd *cobra.Command, _ []string) er
return err
}
if filename == "" {
filename = fmt.Sprintf("mattermost_support_packet_%s.zip", time.Now().Format("2006-01-02-03-04"))
}
printer.Print("Downloading Support Packet")
data, _, err := c.GenerateSupportPacket(context.TODO())
data, rFilename, _, err := c.GenerateSupportPacket(context.TODO())
if err != nil {
return fmt.Errorf("unable to fetch Support Packet: %w", err)
}
if filename == "" {
filename = rFilename
}
file, err := os.Create(filename)
if err != nil {
return fmt.Errorf("failed to create zip file: %w", err)
}
_, err = file.Write(data)
_, err = io.Copy(file, data)
if err != nil {
return fmt.Errorf("failed to write to zip file: %w", err)
}

Просмотреть файл

@@ -115,8 +115,6 @@ func (s *MmctlE2ETestSuite) TestSupportPacketCmdF() {
s.Run("Download Support Packet with default filename", func() {
printer.Clean()
s.T().Cleanup(cleanupSupportPacket(s.T()))
err := systemSupportPacketCmdF(s.th.SystemAdminClient, SystemSupportPacketCmd, []string{})
s.Require().NoError(err)
s.Require().Len(printer.GetLines(), 2)
@@ -129,12 +127,17 @@ func (s *MmctlE2ETestSuite) TestSupportPacketCmdF() {
entries, err := os.ReadDir(".")
s.Require().NoError(err)
for _, e := range entries {
if strings.HasPrefix(e.Name(), "mattermost_support_packet_") && strings.HasSuffix(e.Name(), ".zip") {
if strings.HasPrefix(e.Name(), "mm_support_packet_") && strings.HasSuffix(e.Name(), ".zip") {
b, err := os.ReadFile(e.Name())
s.NoError(err)
s.NotEmpty(b, b)
s.T().Cleanup(func() {
err = os.Remove(e.Name())
s.Require().NoError(err)
})
found = true
}
}
@@ -144,14 +147,16 @@ func (s *MmctlE2ETestSuite) TestSupportPacketCmdF() {
s.Run("Download Support Packet with custom filename", func() {
printer.Clean()
err := SystemSupportPacketCmd.ParseFlags([]string{"-o", "foo.zip"})
systemSupportPacketCmd := &cobra.Command{}
systemSupportPacketCmd.Flags().StringP("output-file", "o", "", "Define the output file name")
err := systemSupportPacketCmd.ParseFlags([]string{"-o", "foo.zip"})
s.Require().NoError(err)
s.T().Cleanup(func() {
defer func() {
s.Require().NoError(os.Remove("foo.zip"))
})
}()
err = systemSupportPacketCmdF(s.th.SystemAdminClient, SystemSupportPacketCmd, []string{})
err = systemSupportPacketCmdF(s.th.SystemAdminClient, systemSupportPacketCmd, []string{})
s.Require().NoError(err)
s.Require().Len(printer.GetErrorLines(), 0)
s.Require().Len(printer.GetLines(), 2)

Просмотреть файл

@@ -5,19 +5,17 @@ package commands
import (
"context"
"io"
"net/http"
"os"
"strconv"
"strings"
"testing"
"time"
"github.com/mattermost/mattermost/server/public/model"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/mattermost/mattermost/server/public/model"
"github.com/mattermost/mattermost/server/v8/cmd/mmctl/printer"
)
@@ -221,19 +219,6 @@ func (s *MmctlUnitTestSuite) TestServerStatusCmd() {
})
}
func cleanupSupportPacket(t *testing.T) func() {
return func() {
entries, err := os.ReadDir(".")
require.NoError(t, err)
for _, e := range entries {
if strings.HasPrefix(e.Name(), "mattermost_support_packet_") && strings.HasSuffix(e.Name(), ".zip") {
err = os.Remove(e.Name())
assert.NoError(t, err)
}
}
}
}
func (s *MmctlUnitTestSuite) TestSupportPacketCmdF() {
printer.SetFormat(printer.FormatPlain)
s.T().Cleanup(func() { printer.SetFormat(printer.FormatJSON) })
@@ -241,57 +226,51 @@ func (s *MmctlUnitTestSuite) TestSupportPacketCmdF() {
s.Run("Download Support Packet with default filename", func() {
printer.Clean()
s.T().Cleanup(cleanupSupportPacket(s.T()))
data := []byte("some bytes")
reader := io.NopCloser(strings.NewReader("some bytes"))
s.client.
EXPECT().
GenerateSupportPacket(context.TODO()).
Return(data, &model.Response{}, nil).
Return(reader, "mm_support_packet.zip", &model.Response{}, nil).
Times(1)
defer func() {
err := os.Remove("mm_support_packet.zip")
s.NoError(err)
}()
err := systemSupportPacketCmdF(s.client, SystemSupportPacketCmd, []string{})
s.Require().NoError(err)
s.Require().Len(printer.GetErrorLines(), 0)
s.Require().Len(printer.GetLines(), 2)
s.Require().Equal(printer.GetLines()[0], "Downloading Support Packet")
s.Require().Contains(printer.GetLines()[1], "Downloaded Support Packet to ")
s.Require().Equal(printer.GetLines()[1], "Downloaded Support Packet to mm_support_packet.zip")
var found bool
entries, err := os.ReadDir(".")
s.Require().NoError(err)
for _, e := range entries {
if strings.HasPrefix(e.Name(), "mattermost_support_packet_") && strings.HasSuffix(e.Name(), ".zip") {
b, err := os.ReadFile(e.Name())
s.NoError(err)
s.Equal(b, data)
found = true
}
}
s.True(found)
b, err := os.ReadFile("mm_support_packet.zip")
s.NoError(err)
s.Equal(b, []byte("some bytes"))
})
s.Run("Download Support Packet with custom filename", func() {
printer.Clean()
data := []byte("some bytes")
reader := io.NopCloser(strings.NewReader("some bytes"))
s.client.
EXPECT().
GenerateSupportPacket(context.TODO()).
Return(data, &model.Response{}, nil).
Return(reader, "mm_support_packet.zip", &model.Response{}, nil).
Times(1)
err := SystemSupportPacketCmd.ParseFlags([]string{"-o", "foo.zip"})
systemSupportPacketCmd := &cobra.Command{}
systemSupportPacketCmd.Flags().StringP("output-file", "o", "", "Define the output file name")
err := systemSupportPacketCmd.ParseFlags([]string{"-o", "foo.zip"})
s.Require().NoError(err)
s.T().Cleanup(func() {
s.Require().NoError(os.Remove("foo.zip"))
})
defer func() {
err = os.Remove("foo.zip")
s.Require().NoError(err)
}()
err = systemSupportPacketCmdF(s.client, SystemSupportPacketCmd, []string{})
err = systemSupportPacketCmdF(s.client, systemSupportPacketCmd, []string{})
s.Require().NoError(err)
s.Require().Len(printer.GetErrorLines(), 0)
s.Require().Len(printer.GetLines(), 2)
@@ -300,7 +279,7 @@ func (s *MmctlUnitTestSuite) TestSupportPacketCmdF() {
b, err := os.ReadFile("foo.zip")
s.Require().NoError(err)
s.Equal(b, data)
s.Equal(string(b), "some bytes")
})
s.Run("Request to the server fails", func() {
@@ -309,7 +288,7 @@ func (s *MmctlUnitTestSuite) TestSupportPacketCmdF() {
s.client.
EXPECT().
GenerateSupportPacket(context.TODO()).
Return(nil, &model.Response{}, errors.New("mock error")).
Return(nil, "", &model.Response{}, errors.New("mock error")).
Times(1)
err := systemSupportPacketCmdF(s.client, SystemSupportPacketCmd, []string{})

Просмотреть файл

@@ -28,7 +28,7 @@ Options
::
-h, --help help for supportpacket
-o, --output-file string Output file name (default "mattermost_support_packet_YYYY-MM-DD-HH-MM.zip")
-o, --output-file string Define the output file name
Options inherited from parent commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Просмотреть файл

@@ -572,13 +572,14 @@ func (mr *MockClientMockRecorder) GeneratePresignedURL(arg0, arg1 interface{}) *
}
// GenerateSupportPacket mocks base method.
func (m *MockClient) GenerateSupportPacket(arg0 context.Context) ([]byte, *model.Response, error) {
func (m *MockClient) GenerateSupportPacket(arg0 context.Context) (io.ReadCloser, string, *model.Response, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GenerateSupportPacket", arg0)
ret0, _ := ret[0].([]byte)
ret1, _ := ret[1].(*model.Response)
ret2, _ := ret[2].(error)
return ret0, ret1, ret2
ret0, _ := ret[0].(io.ReadCloser)
ret1, _ := ret[1].(string)
ret2, _ := ret[2].(*model.Response)
ret3, _ := ret[3].(error)
return ret0, ret1, ret2, ret3
}
// GenerateSupportPacket indicates an expected call of GenerateSupportPacket.