diff --git a/channels/nickname.go b/channels/nickname.go index 7d3ef4c8df37b086275f80b1d27f5675c074acb7..5116b597f754c09ce1b6bae06ec878c5192debfe 100644 --- a/channels/nickname.go +++ b/channels/nickname.go @@ -77,8 +77,8 @@ func (nm *nicknameManager) DeleteNickname(ch *id.ID) error { // channelIDToNickname is a serialization structure. This is used by the save // and load functions to serialize the nicknameManager's byChannel map. type channelIDToNickname struct { - channelId id.ID - nickname string + ChannelId id.ID + Nickname string } // save stores the nickname manager to disk. The caller of this must @@ -87,8 +87,8 @@ func (nm *nicknameManager) save() error { list := make([]channelIDToNickname, 0) for chId, nickname := range nm.byChannel { list = append(list, channelIDToNickname{ - channelId: chId, - nickname: nickname, + ChannelId: chId, + Nickname: nickname, }) } @@ -120,7 +120,7 @@ func (nm *nicknameManager) load() error { for i := range list { current := list[i] - nm.byChannel[current.channelId] = current.nickname + nm.byChannel[current.ChannelId] = current.Nickname } return nil diff --git a/channels/nickname_test.go b/channels/nickname_test.go index dc0cad8f05fd5a24d2e033160f308a23bab68e08..d8c5786e3e7e14c5dd55c06a3f2c9c0079bf3819 100644 --- a/channels/nickname_test.go +++ b/channels/nickname_test.go @@ -29,7 +29,37 @@ func TestNicknameManager_SetGetNickname(t *testing.T) { "\nReceived: %s", nickname, received) } } +} + +// Unit test. Tests that once you set a nickname with SetNickname, you can +// retrieve the nickname using GetNickname after a reload. +func TestNicknameManager_SetGetNickname_Reload(t *testing.T) { + kv := versioned.NewKV(ekv.MakeMemstore()) + nm := loadOrNewNicknameManager(kv) + + for i := 0; i < numTests; i++ { + chId := id.NewIdFromUInt(uint64(i), id.User, t) + nickname := "nickname#" + strconv.Itoa(i) + err := nm.SetNickname(nickname, chId) + if err != nil { + t.Fatalf("SetNickname error when setting %s: %+v", nickname, err) + } + } + + nm2 := loadOrNewNicknameManager(kv) + for i := 0; i < numTests; i++ { + chId := id.NewIdFromUInt(uint64(i), id.User, t) + // nickname := "nickname#" + strconv.Itoa(i) + nick, exists := nm2.GetNickname(chId) + if !exists { + t.Fatalf("Nickname %d not found ", i) + } + expected := "nickname#" + strconv.Itoa(i) + if nick != expected { + t.Fatalf("Nickname %d not found, expected: %s, received: %s ", i, expected, nick) + } + } } // Error case: Tests that nicknameManager.GetNickname returns a false boolean