Explicitly handle values in audit type conversion (#18768)

Этот коммит содержится в:
Claudio Costa
2021-10-20 14:52:48 +02:00
коммит произвёл GitHub
родитель dea8610f1e
Коммит 01f2b2089b
2 изменённых файлов: 42 добавлений и 1 удалений

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

@@ -15,44 +15,84 @@ func AuditModelTypeConv(val interface{}) (newVal interface{}, converted bool) {
switch v := val.(type) { switch v := val.(type) {
case *Channel: case *Channel:
return newAuditChannel(v), true return newAuditChannel(v), true
case Channel:
return newAuditChannel(&v), true
case *Team: case *Team:
return newAuditTeam(v), true return newAuditTeam(v), true
case Team:
return newAuditTeam(&v), true
case *User: case *User:
return newAuditUser(v), true return newAuditUser(v), true
case User:
return newAuditUser(&v), true
case *Command: case *Command:
return newAuditCommand(v), true return newAuditCommand(v), true
case Command:
return newAuditCommand(&v), true
case *CommandArgs: case *CommandArgs:
return newAuditCommandArgs(v), true return newAuditCommandArgs(v), true
case CommandArgs:
return newAuditCommandArgs(&v), true
case *Bot: case *Bot:
return newAuditBot(v), true return newAuditBot(v), true
case Bot:
return newAuditBot(&v), true
case *ChannelModerationPatch: case *ChannelModerationPatch:
return newAuditChannelModerationPatch(v), true return newAuditChannelModerationPatch(v), true
case ChannelModerationPatch:
return newAuditChannelModerationPatch(&v), true
case *Emoji: case *Emoji:
return newAuditEmoji(v), true return newAuditEmoji(v), true
case Emoji:
return newAuditEmoji(&v), true
case *FileInfo: case *FileInfo:
return newAuditFileInfo(v), true return newAuditFileInfo(v), true
case FileInfo:
return newAuditFileInfo(&v), true
case *Group: case *Group:
return newAuditGroup(v), true return newAuditGroup(v), true
case Group:
return newAuditGroup(&v), true
case *Job: case *Job:
return newAuditJob(v), true return newAuditJob(v), true
case Job:
return newAuditJob(&v), true
case *OAuthApp: case *OAuthApp:
return newAuditOAuthApp(v), true return newAuditOAuthApp(v), true
case OAuthApp:
return newAuditOAuthApp(&v), true
case *Post: case *Post:
return newAuditPost(v), true return newAuditPost(v), true
case Post:
return newAuditPost(&v), true
case *Role: case *Role:
return newAuditRole(v), true return newAuditRole(v), true
case Role:
return newAuditRole(&v), true
case *Scheme: case *Scheme:
return newAuditScheme(v), true return newAuditScheme(v), true
case Scheme:
return newAuditScheme(&v), true
case *SchemeRoles: case *SchemeRoles:
return newAuditSchemeRoles(v), true return newAuditSchemeRoles(v), true
case SchemeRoles:
return newAuditSchemeRoles(&v), true
case *Session: case *Session:
return newAuditSession(v), true return newAuditSession(v), true
case Session:
return newAuditSession(&v), true
case *IncomingWebhook: case *IncomingWebhook:
return newAuditIncomingWebhook(v), true return newAuditIncomingWebhook(v), true
case IncomingWebhook:
return newAuditIncomingWebhook(&v), true
case *OutgoingWebhook: case *OutgoingWebhook:
return newAuditOutgoingWebhook(v), true return newAuditOutgoingWebhook(v), true
case OutgoingWebhook:
return newAuditOutgoingWebhook(&v), true
case *RemoteCluster: case *RemoteCluster:
return newRemoteCluster(v), true return newRemoteCluster(v), true
case RemoteCluster:
return newRemoteCluster(&v), true
} }
return val, false return val, false
} }

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

@@ -37,7 +37,8 @@ func TestAuditModelTypeConv(t *testing.T) {
{name: "int array", args: args{val: []int{77, 68}}, wantConverted: false, wantNewVal: []int{77, 68}}, {name: "int array", args: args{val: []int{77, 68}}, wantConverted: false, wantNewVal: []int{77, 68}},
{name: "struct pointer value", args: args{val: sample}, wantConverted: false, wantNewVal: sample}, {name: "struct pointer value", args: args{val: sample}, wantConverted: false, wantNewVal: sample},
{name: "struct pointer array", args: args{val: sampleArr}, wantConverted: false, wantNewVal: sampleArr}, {name: "struct pointer array", args: args{val: sampleArr}, wantConverted: false, wantNewVal: sampleArr},
{name: "model user", args: args{val: user}, wantConverted: true, wantNewVal: "XXX"}, {name: "model user pointer", args: args{val: user}, wantConverted: true, wantNewVal: "XXX"},
{name: "model user value", args: args{val: *user}, wantConverted: true, wantNewVal: "XXX"},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {