mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-17 23:56:56 +00:00
test: add test with changing address order
This commit is contained in:
@ -18,6 +18,7 @@
|
||||
package fakeapi
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
@ -44,6 +45,15 @@ func (ctl *Controller) TurnInternetConnectionOn() {
|
||||
ctl.noInternetConnection = false
|
||||
}
|
||||
|
||||
func (ctl *Controller) ReorderAddresses(user *pmapi.User, addressIDs []string) error {
|
||||
api := ctl.getFakeAPIForUser(user.ID)
|
||||
if api == nil {
|
||||
return errors.New("no such user")
|
||||
}
|
||||
|
||||
return api.ReorderAddresses(addressIDs)
|
||||
}
|
||||
|
||||
func (ctl *Controller) AddUser(user *pmapi.User, addresses *pmapi.AddressList, password string, twoFAEnabled bool) error {
|
||||
ctl.usersByUsername[user.Name] = &fakeUser{
|
||||
user: user,
|
||||
@ -131,6 +141,15 @@ func (ctl *Controller) AddUserMessage(username string, message *pmapi.Message) e
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ctl *Controller) getFakeAPIForUser(userID string) *FakePMAPI {
|
||||
for _, fakeAPI := range ctl.fakeAPIs {
|
||||
if fakeAPI.userID == userID {
|
||||
return fakeAPI
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ctl *Controller) resetUsers() {
|
||||
for _, fakeAPI := range ctl.fakeAPIs {
|
||||
_ = fakeAPI.setUser(fakeAPI.username)
|
||||
|
||||
@ -40,20 +40,24 @@ func (api *FakePMAPI) GetEvent(eventID string) (*pmapi.Event, error) {
|
||||
foundEvent = event
|
||||
continue
|
||||
}
|
||||
|
||||
if foundEvent != nil {
|
||||
mergedEvent.EventID = event.EventID
|
||||
mergedEvent.Refresh |= event.Refresh
|
||||
mergedEvent.Messages = append(mergedEvent.Messages, event.Messages...)
|
||||
mergedEvent.MessageCounts = append(mergedEvent.MessageCounts, event.MessageCounts...)
|
||||
mergedEvent.Labels = append(mergedEvent.Labels, event.Labels...)
|
||||
mergedEvent.Addresses = append(mergedEvent.Addresses, event.Addresses...)
|
||||
mergedEvent.Notices = append(mergedEvent.Notices, event.Notices...)
|
||||
mergedEvent.User = event.User
|
||||
}
|
||||
}
|
||||
|
||||
// If there isn't next event, return the same one.
|
||||
if mergedEvent.EventID == "" {
|
||||
return foundEvent, nil
|
||||
}
|
||||
|
||||
return mergedEvent, nil
|
||||
}
|
||||
|
||||
@ -103,6 +107,19 @@ func (api *FakePMAPI) addEventMessage(action pmapi.EventAction, message *pmapi.M
|
||||
})
|
||||
}
|
||||
|
||||
func (api *FakePMAPI) addEventAddress(action pmapi.EventAction, address *pmapi.Address) {
|
||||
api.addEvent(&pmapi.Event{
|
||||
EventID: api.eventIDGenerator.next("event"),
|
||||
Addresses: []*pmapi.EventAddress{{
|
||||
EventItem: pmapi.EventItem{
|
||||
ID: address.ID,
|
||||
Action: pmapi.EventUpdate,
|
||||
},
|
||||
Address: address,
|
||||
}},
|
||||
})
|
||||
}
|
||||
|
||||
func (api *FakePMAPI) addEvent(event *pmapi.Event) {
|
||||
api.events = append(api.events, event)
|
||||
}
|
||||
|
||||
@ -57,6 +57,29 @@ func (api *FakePMAPI) GetAddresses() (pmapi.AddressList, error) {
|
||||
return *api.addresses, nil
|
||||
}
|
||||
|
||||
func (api *FakePMAPI) ReorderAddresses(addressIDs []string) error {
|
||||
if err := api.checkAndRecordCall(PUT, "/addresses/order", nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for wantedIndex, addressID := range addressIDs {
|
||||
var currentIndex int
|
||||
|
||||
for i, v := range *api.addresses {
|
||||
if v.ID == addressID {
|
||||
currentIndex = i
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
(*api.addresses)[wantedIndex], (*api.addresses)[currentIndex] = (*api.addresses)[currentIndex], (*api.addresses)[wantedIndex]
|
||||
(*api.addresses)[wantedIndex].Order = wantedIndex + 1 // Starts counting from 1.
|
||||
api.addEventAddress(pmapi.EventUpdate, (*api.addresses)[wantedIndex])
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (api *FakePMAPI) Addresses() pmapi.AddressList {
|
||||
return *api.addresses
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user