From 571e4f2ae10d06addd0868f1ac474cc2055fbcb6 Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Fri, 28 Jul 2017 09:32:37 -0600 Subject: Fixing issue with compliance export encoding (#7042) --- model/compliance_post.go | 26 ++++++++++++++++++-------- model/compliance_post_test.go | 23 +++++++++++++++++++++++ 2 files changed, 41 insertions(+), 8 deletions(-) (limited to 'model') diff --git a/model/compliance_post.go b/model/compliance_post.go index f39fea2f5..3751c5862 100644 --- a/model/compliance_post.go +++ b/model/compliance_post.go @@ -4,6 +4,7 @@ package model import ( + "regexp" "time" ) @@ -64,6 +65,15 @@ func CompliancePostHeader() []string { } } +func cleanComplianceStrings(in string) string { + if matched, _ := regexp.MatchString("^\\s*(=|\\+|\\-)", in); matched { + return "'" + in + + } else { + return in + } +} + func (me *CompliancePost) Row() []string { postDeleteAt := "" @@ -77,15 +87,15 @@ func (me *CompliancePost) Row() []string { } return []string{ - me.TeamName, - me.TeamDisplayName, + cleanComplianceStrings(me.TeamName), + cleanComplianceStrings(me.TeamDisplayName), - me.ChannelName, - me.ChannelDisplayName, + cleanComplianceStrings(me.ChannelName), + cleanComplianceStrings(me.ChannelDisplayName), - me.UserUsername, - me.UserEmail, - me.UserNickname, + cleanComplianceStrings(me.UserUsername), + cleanComplianceStrings(me.UserEmail), + cleanComplianceStrings(me.UserNickname), me.PostId, time.Unix(0, me.PostCreateAt*int64(1000*1000)).Format(time.RFC3339), @@ -95,7 +105,7 @@ func (me *CompliancePost) Row() []string { me.PostRootId, me.PostParentId, me.PostOriginalId, - me.PostMessage, + cleanComplianceStrings(me.PostMessage), me.PostType, me.PostProps, me.PostHashtags, diff --git a/model/compliance_post_test.go b/model/compliance_post_test.go index 4866b2494..ff159ef1b 100644 --- a/model/compliance_post_test.go +++ b/model/compliance_post_test.go @@ -25,3 +25,26 @@ func TestCompliancePost(t *testing.T) { t.Fatal() } } + +var cleanTests = []struct { + in string + expected string +}{ + {"hello", "hello"}, + {"=hello", "'=hello"}, + {"+hello", "'+hello"}, + {"-hello", "'-hello"}, + {" =hello", "' =hello"}, + {" +hello", "' +hello"}, + {" -hello", "' -hello"}, + {"\t -hello", "'\t -hello"}, +} + +func TestCleanComplianceStrings(t *testing.T) { + for _, tt := range cleanTests { + actual := cleanComplianceStrings(tt.in) + if actual != tt.expected { + t.Errorf("cleanComplianceStrings(%v): expected %v, actual %v", tt.in, tt.expected, actual) + } + } +} -- cgit v1.2.3-1-g7c22