summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
authorJonathan Fritz <jonathan.fritz@mattermost.com>2018-02-13 08:39:56 -0500
committerJonathan Fritz <jonathan.fritz@mattermost.com>2018-02-13 08:39:56 -0500
commit18fa32567b56584c6e24da2ae68814d5bf8ece6f (patch)
tree311ab6a3918ba64ac665286f15950b32dc1b1dba /model
parent7b2861de3a09cf00d00b0872cc537d54302c4bfa (diff)
parent8b79f5d49cb8d4877e136a76e515edef41ef6f28 (diff)
downloadchat-18fa32567b56584c6e24da2ae68814d5bf8ece6f.tar.gz
chat-18fa32567b56584c6e24da2ae68814d5bf8ece6f.tar.bz2
chat-18fa32567b56584c6e24da2ae68814d5bf8ece6f.zip
Merge branch 'release-4.7' into XYZ-110
Diffstat (limited to 'model')
-rw-r--r--model/channel_member_history.go1
-rw-r--r--model/client4.go4
-rw-r--r--model/client4_test.go58
-rw-r--r--model/config.go23
-rw-r--r--model/config_test.go52
-rw-r--r--model/license.go19
-rw-r--r--model/message_export.go1
-rw-r--r--model/post.go15
-rw-r--r--model/system.go23
9 files changed, 16 insertions, 180 deletions
diff --git a/model/channel_member_history.go b/model/channel_member_history.go
index 55435c320..bc71b580a 100644
--- a/model/channel_member_history.go
+++ b/model/channel_member_history.go
@@ -6,6 +6,7 @@ package model
type ChannelMemberHistory struct {
ChannelId string
UserId string
+ UserEmail string `db:"Email"`
JoinTime int64
LeaveTime *int64
}
diff --git a/model/client4.go b/model/client4.go
index 962b816bb..0694ecbdf 100644
--- a/model/client4.go
+++ b/model/client4.go
@@ -1729,7 +1729,7 @@ func (c *Client4) RemoveUserFromChannel(channelId, userId string) (bool, *Respon
// CreatePost creates a post based on the provided post struct.
func (c *Client4) CreatePost(post *Post) (*Post, *Response) {
- if r, err := c.DoApiPost(c.GetPostsRoute(), post.ToUnsanitizedJson()); err != nil {
+ if r, err := c.DoApiPost(c.GetPostsRoute(), post.ToJson()); err != nil {
return nil, BuildErrorResponse(r, err)
} else {
defer closeBody(r)
@@ -1739,7 +1739,7 @@ func (c *Client4) CreatePost(post *Post) (*Post, *Response) {
// UpdatePost updates a post based on the provided post struct.
func (c *Client4) UpdatePost(postId string, post *Post) (*Post, *Response) {
- if r, err := c.DoApiPut(c.GetPostRoute(postId), post.ToUnsanitizedJson()); err != nil {
+ if r, err := c.DoApiPut(c.GetPostRoute(postId), post.ToJson()); err != nil {
return nil, BuildErrorResponse(r, err)
} else {
defer closeBody(r)
diff --git a/model/client4_test.go b/model/client4_test.go
deleted file mode 100644
index f7923fa8f..000000000
--- a/model/client4_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-package model
-
-import (
- "net/http"
- "net/http/httptest"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-// https://github.com/mattermost/mattermost-server/issues/8205
-func TestClient4CreatePost(t *testing.T) {
- post := &Post{
- Props: map[string]interface{}{
- "attachments": []*SlackAttachment{
- &SlackAttachment{
- Actions: []*PostAction{
- &PostAction{
- Integration: &PostActionIntegration{
- Context: map[string]interface{}{
- "foo": "bar",
- },
- URL: "http://foo.com",
- },
- Name: "Foo",
- },
- },
- },
- },
- },
- }
-
- server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- attachments := PostFromJson(r.Body).Attachments()
- assert.Equal(t, []*SlackAttachment{
- &SlackAttachment{
- Actions: []*PostAction{
- &PostAction{
- Integration: &PostActionIntegration{
- Context: map[string]interface{}{
- "foo": "bar",
- },
- URL: "http://foo.com",
- },
- Name: "Foo",
- },
- },
- },
- }, attachments)
- }))
-
- client := NewAPIv4Client(server.URL)
- _, resp := client.CreatePost(post)
- assert.Equal(t, http.StatusOK, resp.StatusCode)
-}
diff --git a/model/config.go b/model/config.go
index 9010eaeae..7390b4fd9 100644
--- a/model/config.go
+++ b/model/config.go
@@ -158,9 +158,6 @@ const (
PLUGIN_SETTINGS_DEFAULT_DIRECTORY = "./plugins"
PLUGIN_SETTINGS_DEFAULT_CLIENT_DIRECTORY = "./client/plugins"
-
- COMPLIANCE_EXPORT_TYPE_ACTIANCE = "actiance"
- COMPLIANCE_EXPORT_TYPE_GLOBALRELAY = "globalrelay"
)
type ServiceSettings struct {
@@ -1626,13 +1623,9 @@ func (s *PluginSettings) SetDefaults() {
type MessageExportSettings struct {
EnableExport *bool
- ExportFormat *string
DailyRunTime *string
ExportFromTimestamp *int64
BatchSize *int
-
- // formatter-specific settings - these are only expected to be non-nil if ExportFormat is set to the associated format
- GlobalRelayEmailAddress *string
}
func (s *MessageExportSettings) SetDefaults() {
@@ -1640,10 +1633,6 @@ func (s *MessageExportSettings) SetDefaults() {
s.EnableExport = NewBool(false)
}
- if s.ExportFormat == nil {
- s.ExportFormat = NewString(COMPLIANCE_EXPORT_TYPE_ACTIANCE)
- }
-
if s.DailyRunTime == nil {
s.DailyRunTime = NewString("01:00")
}
@@ -2096,7 +2085,7 @@ func (ss *ServiceSettings) isValid() *AppError {
}
switch *ss.ImageProxyType {
- case "", "willnorris/imageproxy":
+ case "":
case "atmos/camo":
if *ss.ImageProxyOptions == "" {
return NewAppError("Config.IsValid", "model.config.is_valid.atmos_camo_image_proxy_options.app_error", nil, "", http.StatusBadRequest)
@@ -2181,16 +2170,6 @@ func (mes *MessageExportSettings) isValid(fs FileSettings) *AppError {
return NewAppError("Config.IsValid", "model.config.is_valid.message_export.daily_runtime.app_error", nil, err.Error(), http.StatusBadRequest)
} else if mes.BatchSize == nil || *mes.BatchSize < 0 {
return NewAppError("Config.IsValid", "model.config.is_valid.message_export.batch_size.app_error", nil, "", http.StatusBadRequest)
- } else if mes.ExportFormat == nil || (*mes.ExportFormat != COMPLIANCE_EXPORT_TYPE_ACTIANCE && *mes.ExportFormat != COMPLIANCE_EXPORT_TYPE_GLOBALRELAY) {
- return NewAppError("Config.IsValid", "model.config.is_valid.message_export.export_type.app_error", nil, "", http.StatusBadRequest)
- }
-
- if *mes.ExportFormat == COMPLIANCE_EXPORT_TYPE_GLOBALRELAY {
- // validating email addresses is hard - just make sure it contains an '@' sign
- // see https://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address
- if mes.GlobalRelayEmailAddress == nil || !strings.Contains(*mes.GlobalRelayEmailAddress, "@") {
- return NewAppError("Config.IsValid", "model.config.is_valid.message_export.global_relay_email_address.app_error", nil, "", http.StatusBadRequest)
- }
}
}
return nil
diff --git a/model/config_test.go b/model/config_test.go
index 919f73fd7..5510c40d0 100644
--- a/model/config_test.go
+++ b/model/config_test.go
@@ -136,7 +136,7 @@ func TestMessageExportSettingsIsValidBatchSizeInvalid(t *testing.T) {
require.Error(t, mes.isValid(*fs))
}
-func TestMessageExportSettingsIsValidExportFormatInvalid(t *testing.T) {
+func TestMessageExportSettingsIsValid(t *testing.T) {
fs := &FileSettings{
DriverName: NewString("foo"), // bypass file location check
}
@@ -147,55 +147,6 @@ func TestMessageExportSettingsIsValidExportFormatInvalid(t *testing.T) {
BatchSize: NewInt(100),
}
- // should fail fast because export format isn't set
- require.Error(t, mes.isValid(*fs))
-}
-
-func TestMessageExportSettingsIsValidGlobalRelayEmailAddressInvalid(t *testing.T) {
- fs := &FileSettings{
- DriverName: NewString("foo"), // bypass file location check
- }
- mes := &MessageExportSettings{
- EnableExport: NewBool(true),
- ExportFormat: NewString(COMPLIANCE_EXPORT_TYPE_GLOBALRELAY),
- ExportFromTimestamp: NewInt64(0),
- DailyRunTime: NewString("15:04"),
- BatchSize: NewInt(100),
- }
-
- // should fail fast because global relay email address isn't set
- require.Error(t, mes.isValid(*fs))
-}
-
-func TestMessageExportSettingsIsValidActiance(t *testing.T) {
- fs := &FileSettings{
- DriverName: NewString("foo"), // bypass file location check
- }
- mes := &MessageExportSettings{
- EnableExport: NewBool(true),
- ExportFormat: NewString(COMPLIANCE_EXPORT_TYPE_ACTIANCE),
- ExportFromTimestamp: NewInt64(0),
- DailyRunTime: NewString("15:04"),
- BatchSize: NewInt(100),
- }
-
- // should pass because everything is valid
- require.Nil(t, mes.isValid(*fs))
-}
-
-func TestMessageExportSettingsIsValidGlobalRelay(t *testing.T) {
- fs := &FileSettings{
- DriverName: NewString("foo"), // bypass file location check
- }
- mes := &MessageExportSettings{
- EnableExport: NewBool(true),
- ExportFormat: NewString(COMPLIANCE_EXPORT_TYPE_GLOBALRELAY),
- ExportFromTimestamp: NewInt64(0),
- DailyRunTime: NewString("15:04"),
- BatchSize: NewInt(100),
- GlobalRelayEmailAddress: NewString("test@mattermost.com"),
- }
-
// should pass because everything is valid
require.Nil(t, mes.isValid(*fs))
}
@@ -208,7 +159,6 @@ func TestMessageExportSetDefaults(t *testing.T) {
require.Equal(t, "01:00", *mes.DailyRunTime)
require.Equal(t, int64(0), *mes.ExportFromTimestamp)
require.Equal(t, 10000, *mes.BatchSize)
- require.Equal(t, COMPLIANCE_EXPORT_TYPE_ACTIANCE, *mes.ExportFormat)
}
func TestMessageExportSetDefaultsExportEnabledExportFromTimestampNil(t *testing.T) {
diff --git a/model/license.go b/model/license.go
index 942a18d55..f96cba06c 100644
--- a/model/license.go
+++ b/model/license.go
@@ -173,25 +173,6 @@ func (l *License) ToJson() string {
return string(b)
}
-// NewTestLicense returns a license that expires in the future and has the given features.
-func NewTestLicense(features ...string) *License {
- ret := &License{
- ExpiresAt: GetMillis() + 90*24*60*60*1000,
- Customer: &Customer{},
- Features: &Features{},
- }
- ret.Features.SetDefaults()
-
- featureMap := map[string]bool{}
- for _, feature := range features {
- featureMap[feature] = true
- }
- featureJson, _ := json.Marshal(featureMap)
- json.Unmarshal(featureJson, &ret.Features)
-
- return ret
-}
-
func LicenseFromJson(data io.Reader) *License {
var o *License
json.NewDecoder(data).Decode(&o)
diff --git a/model/message_export.go b/model/message_export.go
index 22641deee..b59b114d4 100644
--- a/model/message_export.go
+++ b/model/message_export.go
@@ -9,7 +9,6 @@ type MessageExport struct {
UserId *string
UserEmail *string
- Username *string
PostId *string
PostCreateAt *int64
diff --git a/model/post.go b/model/post.go
index 4a774b5d4..391b948f4 100644
--- a/model/post.go
+++ b/model/post.go
@@ -28,7 +28,6 @@ const (
POST_ADD_REMOVE = "system_add_remove" // Deprecated, use POST_ADD_TO_CHANNEL or POST_REMOVE_FROM_CHANNEL instead
POST_ADD_TO_CHANNEL = "system_add_to_channel"
POST_REMOVE_FROM_CHANNEL = "system_remove_from_channel"
- POST_MOVE_CHANNEL = "system_move_channel"
POST_ADD_TO_TEAM = "system_add_to_team"
POST_REMOVE_FROM_TEAM = "system_remove_from_team"
POST_HEADER_CHANGE = "system_header_change"
@@ -122,13 +121,12 @@ type PostActionIntegrationResponse struct {
func (o *Post) ToJson() string {
copy := *o
copy.StripActionIntegrations()
- b, _ := json.Marshal(&copy)
- return string(b)
-}
-
-func (o *Post) ToUnsanitizedJson() string {
- b, _ := json.Marshal(o)
- return string(b)
+ b, err := json.Marshal(&copy)
+ if err != nil {
+ return ""
+ } else {
+ return string(b)
+ }
}
func PostFromJson(data io.Reader) *Post {
@@ -198,7 +196,6 @@ func (o *Post) IsValid() *AppError {
POST_LEAVE_TEAM,
POST_ADD_TO_CHANNEL,
POST_REMOVE_FROM_CHANNEL,
- POST_MOVE_CHANNEL,
POST_ADD_TO_TEAM,
POST_REMOVE_FROM_TEAM,
POST_SLACK_ATTACHMENT,
diff --git a/model/system.go b/model/system.go
index 2a636b14f..020c50858 100644
--- a/model/system.go
+++ b/model/system.go
@@ -6,16 +6,14 @@ package model
import (
"encoding/json"
"io"
- "math/big"
)
const (
- SYSTEM_DIAGNOSTIC_ID = "DiagnosticId"
- SYSTEM_RAN_UNIT_TESTS = "RanUnitTests"
- SYSTEM_LAST_SECURITY_TIME = "LastSecurityTime"
- SYSTEM_ACTIVE_LICENSE_ID = "ActiveLicenseId"
- SYSTEM_LAST_COMPLIANCE_TIME = "LastComplianceTime"
- SYSTEM_ASYMMETRIC_SIGNING_KEY = "AsymmetricSigningKey"
+ SYSTEM_DIAGNOSTIC_ID = "DiagnosticId"
+ SYSTEM_RAN_UNIT_TESTS = "RanUnitTests"
+ SYSTEM_LAST_SECURITY_TIME = "LastSecurityTime"
+ SYSTEM_ACTIVE_LICENSE_ID = "ActiveLicenseId"
+ SYSTEM_LAST_COMPLIANCE_TIME = "LastComplianceTime"
)
type System struct {
@@ -33,14 +31,3 @@ func SystemFromJson(data io.Reader) *System {
json.NewDecoder(data).Decode(&o)
return o
}
-
-type SystemAsymmetricSigningKey struct {
- ECDSAKey *SystemECDSAKey `json:"ecdsa_key,omitempty"`
-}
-
-type SystemECDSAKey struct {
- Curve string `json:"curve"`
- X *big.Int `json:"x"`
- Y *big.Int `json:"y"`
- D *big.Int `json:"d,omitempty"`
-}