1package systests
2
3import (
4	"testing"
5
6	"fmt"
7
8	"github.com/keybase/client/go/teams"
9	"github.com/stretchr/testify/require"
10	"golang.org/x/net/context"
11
12	keybase1 "github.com/keybase/client/go/protocol/keybase1"
13)
14
15func TestSubteamAdminships(t *testing.T) {
16	// This is not a real test - we used it to debug and profile
17	// multiple level subteam loading where implicit adminships were
18	// involved.
19	t.Skip()
20
21	tt := newTeamTester(t)
22	defer tt.cleanup()
23
24	al := tt.addUser("al")
25	bob := tt.addUser("bob")
26	eve := tt.addUser("eve")
27
28	_, teamName := al.createTeam2()
29
30	const subteamBasename = "bb1"
31	subteamID1, err := teams.CreateSubteam(context.TODO(), al.tc.G, subteamBasename,
32		teamName, keybase1.TeamRole_NONE /* addSelfAs */)
33	require.NoError(t, err)
34
35	subTeamName1, _ := teamName.Append(subteamBasename)
36
37	t.Logf("Subteam created %s / %s", subteamID1.String(), subTeamName1.String())
38
39	const subSubTeamBasename = "cc2"
40	subteamID2, err := teams.CreateSubteam(context.TODO(), al.tc.G, subSubTeamBasename,
41		subTeamName1, keybase1.TeamRole_NONE /* addSelfAs */)
42	require.NoError(t, err)
43
44	subTeamName2, _ := subTeamName1.Append(subSubTeamBasename)
45
46	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID1)
47	require.NoError(t, err)
48	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID1)
49	require.NoError(t, err)
50	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID1)
51	require.NoError(t, err)
52
53	t.Logf("Sub-Subteam created %s / %s", subteamID2.String(), subTeamName2.String())
54
55	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID1)
56	require.NoError(t, err)
57	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID1)
58	require.NoError(t, err)
59	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID1)
60	require.NoError(t, err)
61
62	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID2)
63	require.NoError(t, err)
64	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID2)
65	require.NoError(t, err)
66	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID2)
67	require.NoError(t, err)
68
69	al.addTeamMember(subTeamName2.String(), bob.username, keybase1.TeamRole_WRITER)
70	al.addTeamMember(subTeamName2.String(), eve.username, keybase1.TeamRole_READER)
71
72	bob.leave(subTeamName2.String())
73
74	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID2)
75	require.NoError(t, err)
76	err = teams.RotateKeyVisible(context.TODO(), al.tc.G, *subteamID2)
77	require.NoError(t, err)
78
79	t.Logf("Eve loads team ...")
80	fmt.Printf(":: Eve loads team %s ...\n", subteamID2.String())
81
82	eve.loadTeam(subTeamName2.String(), false)
83}
84