PLT-6971: Fix Slack Import of non-ascii channel names. (#6969)

Этот коммит содержится в:
George Goldberg
2017-07-19 21:57:28 +01:00
коммит произвёл Christopher Speller
родитель ecb82dbd12
Коммит 5f8a93fca6
2 изменённых файлов: 19 добавлений и 11 удалений

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

@@ -53,6 +53,8 @@ type SlackPost struct {
Attachments []*model.SlackAttachment `json:"attachments"` Attachments []*model.SlackAttachment `json:"attachments"`
} }
var isValidChannelNameCharacters = regexp.MustCompile(`^[a-zA-Z0-9\-_]+$`).MatchString
type SlackComment struct { type SlackComment struct {
User string `json:"user"` User string `json:"user"`
Comment string `json:"comment"` Comment string `json:"comment"`
@@ -77,13 +79,17 @@ func SlackConvertTimeStamp(ts string) int64 {
return timeStamp * 1000 // Convert to milliseconds return timeStamp * 1000 // Convert to milliseconds
} }
func SlackConvertChannelName(channelName string) string { func SlackConvertChannelName(channelName string, channelId string) string {
newName := strings.Trim(channelName, "_-") newName := strings.Trim(channelName, "_-")
if len(newName) == 1 { if len(newName) == 1 {
return "slack-channel-" + newName return "slack-channel-" + newName
} }
if isValidChannelNameCharacters(newName) {
return newName return newName
} else {
return strings.ToLower(channelId)
}
} }
func SlackParseChannels(data io.Reader) ([]SlackChannel, error) { func SlackParseChannels(data io.Reader) ([]SlackChannel, error) {
@@ -466,7 +472,7 @@ func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[str
TeamId: teamId, TeamId: teamId,
Type: model.CHANNEL_OPEN, Type: model.CHANNEL_OPEN,
DisplayName: sChannel.Name, DisplayName: sChannel.Name,
Name: SlackConvertChannelName(sChannel.Name), Name: SlackConvertChannelName(sChannel.Name, sChannel.Id),
Purpose: sChannel.Purpose["value"], Purpose: sChannel.Purpose["value"],
Header: sChannel.Topic["value"], Header: sChannel.Topic["value"],
} }

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

@@ -23,19 +23,21 @@ func TestSlackConvertTimeStamp(t *testing.T) {
func TestSlackConvertChannelName(t *testing.T) { func TestSlackConvertChannelName(t *testing.T) {
var testData = []struct { var testData = []struct {
input string nameInput string
idInput string
output string output string
}{ }{
{"test-channel", "test-channel"}, {"test-channel", "C0G08DLQH", "test-channel"},
{"_test_channel_", "test_channel"}, {"_test_channel_", "C0G04DLQH", "test_channel"},
{"__test", "test"}, {"__test", "C0G07DLQH", "test"},
{"-t", "slack-channel-t"}, {"-t", "C0G06DLQH", "slack-channel-t"},
{"a", "slack-channel-a"}, {"a", "C0G05DLQH", "slack-channel-a"},
{"случайный", "C0G05DLQD", "c0g05dlqd"},
} }
for _, td := range testData { for _, td := range testData {
if td.output != SlackConvertChannelName(td.input) { if td.output != SlackConvertChannelName(td.nameInput, td.idInput) {
t.Fatalf("Did not convert channel name correctly: %v", td.input) t.Fatalf("Did not convert channel name correctly: %v", td.nameInput)
} }
} }
} }