1package systests
2
3import (
4	keybase1 "github.com/keybase/client/go/protocol/keybase1"
5	"github.com/keybase/client/go/teams"
6	"github.com/stretchr/testify/require"
7	"testing"
8	"time"
9)
10
11func TestTeamRoleMap(t *testing.T) {
12	tt := newTeamTester(t)
13	defer tt.cleanup()
14
15	tt.addUser("ann")
16	tt.addUser("bob")
17
18	teamID, teamName := tt.users[0].createTeam2()
19	tt.users[0].addTeamMember(teamName.String(), tt.users[1].username, keybase1.TeamRole_ADMIN)
20
21	expected := keybase1.TeamRoleMapAndVersion{
22		Teams:   make(map[keybase1.TeamID]keybase1.TeamRolePair),
23		Version: keybase1.UserTeamVersion(1),
24	}
25	expected.Teams[teamID] = keybase1.TeamRolePair{
26		Role:         keybase1.TeamRole_ADMIN,
27		ImplicitRole: keybase1.TeamRole_NONE,
28	}
29
30	select {
31	case vers := <-tt.users[1].notifications.teamRoleMapCh:
32		t.Logf("got notification")
33		require.Equal(t, expected.Version, vers)
34	case <-time.After(10 * time.Second):
35		t.Fatal("failed to get notification after 10s wait")
36	}
37
38	pollForTrue(t, tt.users[1].tc.G, func(i int) bool {
39		list := tt.users[1].tc.G.GetTeamRoleMapManager().(*teams.TeamRoleMapManager).Query()
40		if list != nil && list.Data.Version == expected.Version {
41			require.Equal(t, expected, list.Data)
42			return true
43		}
44		return false
45	})
46}
47