mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 01:47:33 +00:00
fix: sms providers (#3801)
This commit is contained in:
@@ -82,6 +82,10 @@ func (p *SMSConfigProjection) reducers() []handler.AggregateReducer {
|
||||
Event: instance.SMSConfigTwilioChangedEventType,
|
||||
Reduce: p.reduceSMSConfigTwilioChanged,
|
||||
},
|
||||
{
|
||||
Event: instance.SMSConfigTwilioTokenChangedEventType,
|
||||
Reduce: p.reduceSMSConfigTwilioTokenChanged,
|
||||
},
|
||||
{
|
||||
Event: instance.SMSConfigActivatedEventType,
|
||||
Reduce: p.reduceSMSConfigActivated,
|
||||
@@ -111,7 +115,6 @@ func (p *SMSConfigProjection) reduceSMSConfigTwilioAdded(event eventstore.Event)
|
||||
[]handler.Column{
|
||||
handler.NewCol(SMSColumnID, e.ID),
|
||||
handler.NewCol(SMSColumnAggregateID, e.Aggregate().ID),
|
||||
handler.NewCol(SMSTwilioColumnInstanceID, e.Aggregate().InstanceID),
|
||||
handler.NewCol(SMSColumnCreationDate, e.CreationDate()),
|
||||
handler.NewCol(SMSColumnChangeDate, e.CreationDate()),
|
||||
handler.NewCol(SMSColumnResourceOwner, e.Aggregate().ResourceOwner),
|
||||
@@ -140,10 +143,43 @@ func (p *SMSConfigProjection) reduceSMSConfigTwilioChanged(event eventstore.Even
|
||||
}
|
||||
columns := make([]handler.Column, 0)
|
||||
if e.SID != nil {
|
||||
columns = append(columns, handler.NewCol(SMSTwilioConfigColumnSID, e.SID))
|
||||
columns = append(columns, handler.NewCol(SMSTwilioConfigColumnSID, *e.SID))
|
||||
}
|
||||
if e.SenderNumber != nil {
|
||||
columns = append(columns, handler.NewCol(SMSTwilioConfigColumnSenderNumber, e.SenderNumber))
|
||||
columns = append(columns, handler.NewCol(SMSTwilioConfigColumnSenderNumber, *e.SenderNumber))
|
||||
}
|
||||
|
||||
return crdb.NewMultiStatement(
|
||||
e,
|
||||
crdb.AddUpdateStatement(
|
||||
columns,
|
||||
[]handler.Condition{
|
||||
handler.NewCond(SMSTwilioConfigColumnSMSID, e.ID),
|
||||
handler.NewCond(SMSTwilioColumnInstanceID, e.Aggregate().InstanceID),
|
||||
},
|
||||
crdb.WithTableSuffix(smsTwilioTableSuffix),
|
||||
),
|
||||
crdb.AddUpdateStatement(
|
||||
[]handler.Column{
|
||||
handler.NewCol(SMSColumnChangeDate, e.CreationDate()),
|
||||
handler.NewCol(SMSColumnSequence, e.Sequence()),
|
||||
},
|
||||
[]handler.Condition{
|
||||
handler.NewCond(SMSColumnID, e.ID),
|
||||
handler.NewCond(SMSColumnInstanceID, e.Aggregate().InstanceID),
|
||||
},
|
||||
),
|
||||
), nil
|
||||
}
|
||||
|
||||
func (p *SMSConfigProjection) reduceSMSConfigTwilioTokenChanged(event eventstore.Event) (*handler.Statement, error) {
|
||||
e, ok := event.(*instance.SMSConfigTwilioTokenChangedEvent)
|
||||
if !ok {
|
||||
return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-fi99F", "reduce.wrong.event.type %s", instance.SMSConfigTwilioTokenChangedEventType)
|
||||
}
|
||||
columns := make([]handler.Column, 0)
|
||||
if e.Token != nil {
|
||||
columns = append(columns, handler.NewCol(SMSTwilioConfigColumnToken, e.Token))
|
||||
}
|
||||
|
||||
return crdb.NewMultiStatement(
|
||||
|
@@ -3,6 +3,7 @@ package projection
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/zitadel/zitadel/internal/crypto"
|
||||
"github.com/zitadel/zitadel/internal/domain"
|
||||
"github.com/zitadel/zitadel/internal/errors"
|
||||
"github.com/zitadel/zitadel/internal/eventstore"
|
||||
@@ -11,12 +12,6 @@ import (
|
||||
"github.com/zitadel/zitadel/internal/repository/instance"
|
||||
)
|
||||
|
||||
var (
|
||||
sid = "sid"
|
||||
token = "token"
|
||||
senderNumber = "sender-number"
|
||||
)
|
||||
|
||||
func TestSMSProjection_reduces(t *testing.T) {
|
||||
type args struct {
|
||||
event func(t *testing.T) eventstore.Event
|
||||
@@ -39,7 +34,8 @@ func TestSMSProjection_reduces(t *testing.T) {
|
||||
"token": {
|
||||
"cryptoType": 0,
|
||||
"algorithm": "RSA-265",
|
||||
"keyId": "key-id"
|
||||
"keyId": "key-id",
|
||||
"crypted": "Y3J5cHRlZA=="
|
||||
},
|
||||
"senderNumber": "sender-number"
|
||||
}`),
|
||||
@@ -54,11 +50,10 @@ func TestSMSProjection_reduces(t *testing.T) {
|
||||
executer: &testExecuter{
|
||||
executions: []execution{
|
||||
{
|
||||
expectedStmt: "INSERT INTO projections.sms_configs (id, aggregate_id, instance_id, creation_date, change_date, resource_owner, instance_id, state, sequence) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
|
||||
expectedStmt: "INSERT INTO projections.sms_configs (id, aggregate_id, creation_date, change_date, resource_owner, instance_id, state, sequence) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)",
|
||||
expectedArgs: []interface{}{
|
||||
"id",
|
||||
"agg-id",
|
||||
"instance-id",
|
||||
anyArg{},
|
||||
anyArg{},
|
||||
"ro-id",
|
||||
@@ -73,7 +68,12 @@ func TestSMSProjection_reduces(t *testing.T) {
|
||||
"id",
|
||||
"instance-id",
|
||||
"sid",
|
||||
anyArg{},
|
||||
&crypto.CryptoValue{
|
||||
CryptoType: crypto.TypeEncryption,
|
||||
Algorithm: "RSA-265",
|
||||
KeyID: "key-id",
|
||||
Crypted: []byte("crypted"),
|
||||
},
|
||||
"sender-number",
|
||||
},
|
||||
},
|
||||
@@ -105,8 +105,59 @@ func TestSMSProjection_reduces(t *testing.T) {
|
||||
{
|
||||
expectedStmt: "UPDATE projections.sms_configs_twilio SET (sid, sender_number) = ($1, $2) WHERE (sms_id = $3) AND (instance_id = $4)",
|
||||
expectedArgs: []interface{}{
|
||||
&sid,
|
||||
&senderNumber,
|
||||
"sid",
|
||||
"sender-number",
|
||||
"id",
|
||||
"instance-id",
|
||||
},
|
||||
},
|
||||
{
|
||||
expectedStmt: "UPDATE projections.sms_configs SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
|
||||
expectedArgs: []interface{}{
|
||||
anyArg{},
|
||||
uint64(15),
|
||||
"id",
|
||||
"instance-id",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "instance.reduceSMSConfigTwilioTokenChanged",
|
||||
args: args{
|
||||
event: getEvent(testEvent(
|
||||
repository.EventType(instance.SMSConfigTwilioTokenChangedEventType),
|
||||
instance.AggregateType,
|
||||
[]byte(`{
|
||||
"id": "id",
|
||||
"token": {
|
||||
"cryptoType": 0,
|
||||
"algorithm": "RSA-265",
|
||||
"keyId": "key-id",
|
||||
"crypted": "Y3J5cHRlZA=="
|
||||
}
|
||||
}`),
|
||||
), instance.SMSConfigTwilioTokenChangedEventMapper),
|
||||
},
|
||||
reduce: (&SMSConfigProjection{}).reduceSMSConfigTwilioTokenChanged,
|
||||
want: wantReduce{
|
||||
aggregateType: eventstore.AggregateType("instance"),
|
||||
sequence: 15,
|
||||
previousSequence: 10,
|
||||
projection: SMSConfigProjectionTable,
|
||||
executer: &testExecuter{
|
||||
executions: []execution{
|
||||
{
|
||||
expectedStmt: "UPDATE projections.sms_configs_twilio SET (token) = ($1) WHERE (sms_id = $2) AND (instance_id = $3)",
|
||||
expectedArgs: []interface{}{
|
||||
&crypto.CryptoValue{
|
||||
CryptoType: crypto.TypeEncryption,
|
||||
Algorithm: "RSA-265",
|
||||
KeyID: "key-id",
|
||||
Crypted: []byte("crypted"),
|
||||
},
|
||||
"id",
|
||||
"instance-id",
|
||||
},
|
||||
|
Reference in New Issue
Block a user