Skip to content
Snippets Groups Projects
Commit 1fd87211 authored by Benjamin Wenger's avatar Benjamin Wenger
Browse files

finished tested the event model

parent 78add3b2
No related branches found
No related tags found
5 merge requests!510Release,!419rewrote the health tracker to both consider if there are waiting rounds and...,!371[Channel RSAtoPrivate] Implement Reverse Asymmetric in Client/Broadcast,!354Channels impl,!340Project/channels
This commit is part of merge request !354. Comments created here will be created in the context of that merge request.
...@@ -116,7 +116,7 @@ func (e *events) RegisterReceiveHandler(messageType MessageType, ...@@ -116,7 +116,7 @@ func (e *events) RegisterReceiveHandler(messageType MessageType,
// triggerEvent is an internal function which is used to trigger message // triggerEvent is an internal function which is used to trigger message
// reception on a message received from a user (symmetric encryption) // reception on a message received from a user (symmetric encryption)
// It will call the appropriate MessageTypeHandler assuming one exists. // It will call the appropriate MessageTypeHandler assuming one exists.
func (e *events) triggerEvent(chID *id.ID, umi *UserMessageInternal, func (e *events) triggerEvent(chID *id.ID, umi *userMessageInternal,
receptionID receptionID.EphemeralIdentity, round rounds.Round) { receptionID receptionID.EphemeralIdentity, round rounds.Round) {
um := umi.GetUserMessage() um := umi.GetUserMessage()
cm := umi.GetChannelMessage() cm := umi.GetChannelMessage()
......
This diff is collapsed.
...@@ -12,14 +12,14 @@ import ( ...@@ -12,14 +12,14 @@ import (
"gitlab.com/elixxir/crypto/channel" "gitlab.com/elixxir/crypto/channel"
) )
// UserMessageInternal is the internal structure of a UserMessage protobuf. // userMessageInternal is the internal structure of a UserMessage protobuf.
type UserMessageInternal struct { type userMessageInternal struct {
userMessage *UserMessage userMessage *UserMessage
channelMessage *ChannelMessage channelMessage *ChannelMessage
messageID channel.MessageID messageID channel.MessageID
} }
func NewUserMessageInternal(ursMsg *UserMessage) (*UserMessageInternal, error) { func newUserMessageInternal(ursMsg *UserMessage) (*userMessageInternal, error) {
chanMessage := &ChannelMessage{} chanMessage := &ChannelMessage{}
err := proto.Unmarshal(ursMsg.Message, chanMessage) err := proto.Unmarshal(ursMsg.Message, chanMessage)
if err != nil { if err != nil {
...@@ -27,14 +27,14 @@ func NewUserMessageInternal(ursMsg *UserMessage) (*UserMessageInternal, error) { ...@@ -27,14 +27,14 @@ func NewUserMessageInternal(ursMsg *UserMessage) (*UserMessageInternal, error) {
} }
channelMessage := chanMessage channelMessage := chanMessage
return &UserMessageInternal{ return &userMessageInternal{
userMessage: ursMsg, userMessage: ursMsg,
channelMessage: channelMessage, channelMessage: channelMessage,
messageID: channel.MakeMessageID(ursMsg.Message), messageID: channel.MakeMessageID(ursMsg.Message),
}, nil }, nil
} }
func UnmarshalUserMessageInternal(usrMsg []byte) (*UserMessageInternal, error) { func unmarshalUserMessageInternal(usrMsg []byte) (*userMessageInternal, error) {
um := &UserMessage{} um := &UserMessage{}
if err := proto.Unmarshal(usrMsg, um); err != nil { if err := proto.Unmarshal(usrMsg, um); err != nil {
...@@ -49,25 +49,26 @@ func UnmarshalUserMessageInternal(usrMsg []byte) (*UserMessageInternal, error) { ...@@ -49,25 +49,26 @@ func UnmarshalUserMessageInternal(usrMsg []byte) (*UserMessageInternal, error) {
channelMessage := chanMessage channelMessage := chanMessage
return &UserMessageInternal{ return &userMessageInternal{
userMessage: um, userMessage: um,
channelMessage: channelMessage, channelMessage: channelMessage,
messageID: channel.MakeMessageID(um.Message),
}, nil }, nil
} }
// GetUserMessage retrieves the UserMessage within // GetUserMessage retrieves the UserMessage within
// UserMessageInternal. // userMessageInternal.
func (umi *UserMessageInternal) GetUserMessage() *UserMessage { func (umi *userMessageInternal) GetUserMessage() *UserMessage {
return umi.userMessage return umi.userMessage
} }
// GetChannelMessage retrieves the ChannelMessage within // GetChannelMessage retrieves the ChannelMessage within
// UserMessageInternal. // userMessageInternal.
func (umi *UserMessageInternal) GetChannelMessage() *ChannelMessage { func (umi *userMessageInternal) GetChannelMessage() *ChannelMessage {
return umi.channelMessage return umi.channelMessage
} }
// GetMessageID retrieves the messageID for the message. // GetMessageID retrieves the messageID for the message.
func (umi *UserMessageInternal) GetMessageID() channel.MessageID { func (umi *userMessageInternal) GetMessageID() channel.MessageID {
return umi.messageID return umi.messageID
} }
...@@ -14,27 +14,27 @@ import ( ...@@ -14,27 +14,27 @@ import (
"testing" "testing"
) )
func TestUserMessageInternal_GetChannelMessage(t *testing.T) { func TestUnmarshalUserMessageInternal(t *testing.T) {
channelMsg := &ChannelMessage{ internal, usrMsg, _ := builtTestUMI(t, 7)
Lease: 69,
RoundID: 42, usrMsgMarshaled, err := proto.Marshal(usrMsg)
PayloadType: 7, if err != nil {
Payload: []byte("ban_badUSer"), t.Fatalf("Failed to marshal user message: %+v", err)
} }
serialized, err := proto.Marshal(channelMsg) umi, err := unmarshalUserMessageInternal(usrMsgMarshaled)
if err != nil { if err != nil {
t.Fatalf("Marshal error: %v", err) t.Fatalf("Failed to unmarshal user message: %+v", err)
} }
usrMsg := &UserMessage{ if !umi.GetMessageID().Equals(internal.messageID) {
Message: serialized, t.Errorf("Message IDs were changed in the unmarshal "+
ValidationSignature: []byte("sig"), "process, %s vs %s", internal.messageID, umi.GetMessageID())
Signature: []byte("sig"),
Username: "hunter",
} }
}
internal, _ := NewUserMessageInternal(usrMsg) func TestUserMessageInternal_GetChannelMessage(t *testing.T) {
internal, _, channelMsg := builtTestUMI(t, 7)
received := internal.GetChannelMessage() received := internal.GetChannelMessage()
if !reflect.DeepEqual(received.Payload, channelMsg.Payload) || if !reflect.DeepEqual(received.Payload, channelMsg.Payload) ||
...@@ -48,28 +48,7 @@ func TestUserMessageInternal_GetChannelMessage(t *testing.T) { ...@@ -48,28 +48,7 @@ func TestUserMessageInternal_GetChannelMessage(t *testing.T) {
} }
func TestUserMessageInternal_GetUserMessage(t *testing.T) { func TestUserMessageInternal_GetUserMessage(t *testing.T) {
channelMsg := &ChannelMessage{ internal, usrMsg, _ := builtTestUMI(t, 7)
Lease: 69,
RoundID: 42,
PayloadType: 7,
Payload: []byte("ban_badUSer"),
}
serialized, err := proto.Marshal(channelMsg)
if err != nil {
t.Fatalf("Marshal error: %v", err)
}
usrMsg := &UserMessage{
Message: serialized,
ValidationSignature: []byte("sig"),
Signature: []byte("sig2"),
Username: "hunter2",
ECCPublicKey: []byte("key"),
UsernameLease: 666,
}
internal, _ := NewUserMessageInternal(usrMsg)
received := internal.GetUserMessage() received := internal.GetUserMessage()
if !reflect.DeepEqual(received.Message, usrMsg.Message) || if !reflect.DeepEqual(received.Message, usrMsg.Message) ||
...@@ -85,28 +64,7 @@ func TestUserMessageInternal_GetUserMessage(t *testing.T) { ...@@ -85,28 +64,7 @@ func TestUserMessageInternal_GetUserMessage(t *testing.T) {
} }
func TestUserMessageInternal_GetMessageID(t *testing.T) { func TestUserMessageInternal_GetMessageID(t *testing.T) {
channelMsg := &ChannelMessage{ internal, usrMsg, _ := builtTestUMI(t, 7)
Lease: 69,
RoundID: 42,
PayloadType: 7,
Payload: []byte("ban_badUSer"),
}
serialized, err := proto.Marshal(channelMsg)
if err != nil {
t.Fatalf("Marshal error: %v", err)
}
usrMsg := &UserMessage{
Message: serialized,
ValidationSignature: []byte("sig"),
Signature: []byte("sig2"),
Username: "hunter2",
ECCPublicKey: []byte("key"),
UsernameLease: 666,
}
internal, _ := NewUserMessageInternal(usrMsg)
received := internal.GetMessageID() received := internal.GetMessageID()
expected := channel.MakeMessageID(usrMsg.Message) expected := channel.MakeMessageID(usrMsg.Message)
...@@ -125,10 +83,22 @@ func TestUserMessageInternal_GetMessageID(t *testing.T) { ...@@ -125,10 +83,22 @@ func TestUserMessageInternal_GetMessageID(t *testing.T) {
func TestUserMessageInternal_GetMessageID_Consistency(t *testing.T) { func TestUserMessageInternal_GetMessageID_Consistency(t *testing.T) {
expected := "ChMsgID-cfw4O6M47N9pqdtTcQjm/SSVqehTPGQd7cAMrNP9bcc=" expected := "ChMsgID-cfw4O6M47N9pqdtTcQjm/SSVqehTPGQd7cAMrNP9bcc="
internal, _, _ := builtTestUMI(t, 7)
received := internal.GetMessageID()
if expected != received.String() {
t.Fatalf("GetMessageID did not return expected data."+
"\nExpected: %v"+
"\nReceived: %v", expected, received)
}
}
func builtTestUMI(t *testing.T, mt MessageType) (*userMessageInternal, *UserMessage, *ChannelMessage) {
channelMsg := &ChannelMessage{ channelMsg := &ChannelMessage{
Lease: 69, Lease: 69,
RoundID: 42, RoundID: 42,
PayloadType: 7, PayloadType: uint32(mt),
Payload: []byte("ban_badUSer"), Payload: []byte("ban_badUSer"),
} }
...@@ -146,12 +116,7 @@ func TestUserMessageInternal_GetMessageID_Consistency(t *testing.T) { ...@@ -146,12 +116,7 @@ func TestUserMessageInternal_GetMessageID_Consistency(t *testing.T) {
UsernameLease: 666, UsernameLease: 666,
} }
internal, _ := NewUserMessageInternal(usrMsg) internal, _ := newUserMessageInternal(usrMsg)
received := internal.GetMessageID()
if expected != received.String() { return internal, usrMsg, channelMsg
t.Fatalf("GetMessageID did not return expected data."+
"\nExpected: %v"+
"\nReceived: %v", expected, received)
}
} }
...@@ -31,7 +31,7 @@ func (gul *userListener) Listen(payload []byte, ...@@ -31,7 +31,7 @@ func (gul *userListener) Listen(payload []byte,
} }
//Decode the message as a user message //Decode the message as a user message
umi, err := UnmarshalUserMessageInternal(payloadUnpadded) umi, err := unmarshalUserMessageInternal(payloadUnpadded)
if err != nil { if err != nil {
jww.WARN.Printf("Failed to unmarshal User Message on "+ jww.WARN.Printf("Failed to unmarshal User Message on "+
"channel %s", gul.chID) "channel %s", gul.chID)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment