feat(GODT-2442): add gRPC interface to send feedback.

This commit is contained in:
Jakub
2023-03-06 16:42:07 +01:00
parent 8c0bb22de3
commit f03688ba72
10 changed files with 1399 additions and 1122 deletions

View File

@ -298,6 +298,21 @@ func (bridge *Bridge) SetAddressMode(ctx context.Context, userID string, mode va
}, bridge.usersLock)
}
// SendBadEventUserFeedback sets the address mode for the given user.
func (bridge *Bridge) SendBadEventUserFeedback(ctx context.Context, userID string, doResync bool) error {
l := logrus.WithField("userID", userID).WithField("doResycn", doResync)
l.Info("Passing bad event feedback to user")
user, ok := bridge.users[userID]
if !ok {
return ErrNoSuchUser
}
user.SendBadEventFeedback(doResync)
return nil
}
func (bridge *Bridge) loginUser(ctx context.Context, client *proton.Client, authUID, authRef string, keyPass []byte) (string, error) {
apiUser, err := client.GetUser(ctx)
if err != nil {

View File

@ -85,6 +85,10 @@ func TestBridge_User_RefreshEvent(t *testing.T) {
}
func TestBridge_User_BadMessage_BadEvent(t *testing.T) {
t.Run("Logout-Login", badMessage_badEvent)
}
func badMessage_badEvent(t *testing.T) {
withEnv(t, func(ctx context.Context, s *server.Server, netCtl *proton.NetCtl, locator bridge.Locator, storeKey []byte) {
// Create a user.
userID, addrID, err := s.CreateUser("user", password)

View File

@ -153,7 +153,7 @@ func (bridge *Bridge) handleUserBadEvent(ctx context.Context, user *user.User, e
// blockEventsIMAPandSMTP()
if doResyc, err := bridge.getBadEventUserFeedback(); err != nil || !doResyc {
if doResyc, err := bridge.getBadEventUserFeedback(user.ID()); err != nil || !doResyc {
if rerr := bridge.reporter.ReportMessageWithContext("Failed to handle event: logout", reportContext); rerr != nil {
logrus.WithError(rerr).Error("Failed to report failed event handling")
}
@ -179,8 +179,13 @@ func (bridge *Bridge) handleUserBadEvent(ctx context.Context, user *user.User, e
}, bridge.usersLock)
}
func (bridge *Bridge) getBadEventUserFeedback() (doResyc bool, err error) {
return true, nil
func (bridge *Bridge) getBadEventUserFeedback(userID string) (doResyc bool, err error) {
user, ok := bridge.users[userID]
if !ok {
return false, ErrNoSuchUser
}
return user.GetBadEventFeedback(), nil
}
func (bridge *Bridge) handleUncategorizedErrorEvent(event events.UncategorizedEventError) {