Skip to content

Commit b91e55e

Browse files
committed
update
1 parent 6b6f9ac commit b91e55e

File tree

13 files changed

+315
-283
lines changed

13 files changed

+315
-283
lines changed

server/e2e/proto_project_test.go

Lines changed: 123 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -18,150 +18,159 @@ import (
1818
"github.com/reearth/reearth/server/pkg/id"
1919
)
2020

21-
func SafeClose(c io.Closer) {
22-
if err := c.Close(); err != nil {
23-
log.Printf("warning: failed to close: %v", err)
24-
}
25-
}
26-
2721
// export REEARTH_DB=mongodb://localhost
2822
// go test -v -run TestInternalAPI ./e2e/...
2923

3024
func TestInternalAPI_private(t *testing.T) {
3125
_, r, _ := GRPCServer(t, baseSeeder)
3226

33-
runTestWithUser(t, uID.String(), func(client pb.ReEarthVisualizerClient, ctx context.Context) {
27+
// user1: workspaceId: wID userId: uID
28+
// user2: workspaceId: wID2 userId: uID2
3429

35-
// create default Project
36-
res, err := client.CreateProject(ctx, &pb.CreateProjectRequest{
37-
TeamId: wID.String(),
38-
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
39-
Name: lo.ToPtr("Test Project1"),
40-
Description: lo.ToPtr("Test Description1"),
41-
CoreSupport: lo.ToPtr(true),
42-
// Visibility: lo.ToPtr("private"),
43-
})
44-
assert.Nil(t, err)
45-
checProject(t, ctx, r, res)
30+
// user1 call api
31+
runTestWithUser(t, uID.String(), func(client pb.ReEarthVisualizerClient, ctx context.Context) {
4632

47-
// get -> private
48-
res2, err := client.GetProject(ctx, &pb.GetProjectRequest{
49-
ProjectId: res.Project.Id,
50-
})
51-
assert.Nil(t, err)
52-
assert.Equal(t, "private", res2.Project.Visibility)
33+
// create default Project -> private
34+
CreateProjectInternal(
35+
t, ctx, r, client, "private",
36+
&pb.CreateProjectRequest{
37+
TeamId: wID.String(),
38+
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
39+
Name: lo.ToPtr("Test Project1"),
40+
Description: lo.ToPtr("Test Description1"),
41+
CoreSupport: lo.ToPtr(true),
42+
// Visibility: nil,
43+
})
5344

5445
// create private Project
55-
_, err = client.CreateProject(ctx, &pb.CreateProjectRequest{
56-
TeamId: wID.String(),
57-
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
58-
Name: lo.ToPtr("Test Project2"),
59-
Description: lo.ToPtr("Test Description2"),
60-
CoreSupport: lo.ToPtr(true),
61-
Visibility: lo.ToPtr("private"),
62-
})
63-
assert.Nil(t, err)
64-
checProject(t, ctx, r, res)
65-
66-
// get -> private
67-
res2, err = client.GetProject(ctx, &pb.GetProjectRequest{
68-
ProjectId: res.Project.Id,
69-
})
70-
assert.Nil(t, err)
71-
assert.Equal(t, "private", res2.Project.Visibility)
72-
73-
// 0: creante seeder => null
46+
CreateProjectInternal(
47+
t, ctx, r, client, "private",
48+
&pb.CreateProjectRequest{
49+
TeamId: wID.String(),
50+
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
51+
Name: lo.ToPtr("Test Project1"),
52+
Description: lo.ToPtr("Test Description1"),
53+
CoreSupport: lo.ToPtr(true),
54+
Visibility: lo.ToPtr("private"),
55+
})
56+
57+
// 0: creante seeder => private
7458
// 1: creante default => private
7559
// 2: creante private => private
7660

77-
// Authenticated: true => get list size 3
61+
// get list size 3
7862
res3, err := client.GetProjectList(ctx, &pb.GetProjectListRequest{
79-
TeamId: wID.String(),
80-
Authenticated: true,
63+
TeamId: wID.String(),
8164
})
8265
assert.Nil(t, err)
8366
assert.Equal(t, 3, len(res3.Projects))
84-
assert.Equal(t, "", res3.Projects[0].Visibility)
67+
assert.Equal(t, "private", res3.Projects[0].Visibility)
8568
assert.Equal(t, "private", res3.Projects[1].Visibility)
8669
assert.Equal(t, "private", res3.Projects[2].Visibility)
8770

88-
// Authenticated: false => get list size 0
89-
res3, err = client.GetProjectList(ctx, &pb.GetProjectListRequest{
90-
TeamId: wID.String(),
91-
Authenticated: false,
71+
})
72+
73+
// user2 call api
74+
runTestWithUser(t, uID2.String(), func(client pb.ReEarthVisualizerClient, ctx context.Context) {
75+
// get list size 0
76+
res4, err := client.GetProjectList(ctx, &pb.GetProjectListRequest{
77+
TeamId: wID.String(), // not wID2
9278
})
9379
assert.Nil(t, err)
94-
assert.Equal(t, 0, len(res3.Projects))
95-
80+
assert.Equal(t, 0, len(res4.Projects))
9681
})
9782

9883
}
9984

10085
func TestInternalAPI_public(t *testing.T) {
10186
_, r, _ := GRPCServer(t, baseSeeder)
10287

88+
var publicProjectId string
89+
90+
// user1 call api
10391
runTestWithUser(t, uID.String(), func(client pb.ReEarthVisualizerClient, ctx context.Context) {
10492

10593
// create public Project
106-
res, err := client.CreateProject(ctx, &pb.CreateProjectRequest{
107-
TeamId: wID.String(),
108-
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
109-
Name: lo.ToPtr("Test Project1"),
110-
Description: lo.ToPtr("Test Description1"),
111-
CoreSupport: lo.ToPtr(true),
112-
Visibility: lo.ToPtr("public"),
113-
})
114-
assert.Nil(t, err)
115-
checProject(t, ctx, r, res)
94+
CreateProjectInternal(
95+
t, ctx, r, client, "public",
96+
&pb.CreateProjectRequest{
97+
TeamId: wID.String(),
98+
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
99+
Name: lo.ToPtr("Test Project1"),
100+
Description: lo.ToPtr("Test Description1"),
101+
CoreSupport: lo.ToPtr(true),
102+
Visibility: lo.ToPtr("public"),
103+
})
116104

117-
// get -> public
118-
res2, err := client.GetProject(ctx, &pb.GetProjectRequest{
119-
ProjectId: res.Project.Id,
105+
// create private Project
106+
CreateProjectInternal(
107+
t, ctx, r, client, "private",
108+
&pb.CreateProjectRequest{
109+
TeamId: wID.String(),
110+
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
111+
Name: lo.ToPtr("Test Project1"),
112+
Description: lo.ToPtr("Test Description1"),
113+
CoreSupport: lo.ToPtr(true),
114+
Visibility: lo.ToPtr("private"),
115+
})
116+
117+
// 0: creante seeder => private
118+
// 1: creante public => public
119+
// 2: creante private => private
120+
121+
// get list size 3
122+
res3, err := client.GetProjectList(ctx, &pb.GetProjectListRequest{
123+
TeamId: wID.String(),
120124
})
121125
assert.Nil(t, err)
122-
assert.Equal(t, "public", res2.Project.Visibility)
126+
assert.Equal(t, 3, len(res3.Projects))
127+
assert.Equal(t, "private", res3.Projects[0].Visibility)
128+
assert.Equal(t, "public", res3.Projects[1].Visibility)
129+
assert.Equal(t, "private", res3.Projects[2].Visibility)
123130

124-
// create private Project
125-
res, err = client.CreateProject(ctx, &pb.CreateProjectRequest{
126-
TeamId: wID.String(),
127-
Visualizer: pb.Visualizer_VISUALIZER_CESIUM,
128-
Name: lo.ToPtr("Test Project2"),
129-
Description: lo.ToPtr("Test Description2"),
130-
CoreSupport: lo.ToPtr(true),
131-
Visibility: lo.ToPtr("private"),
131+
publicProjectId = res3.Projects[1].Id
132+
133+
})
134+
135+
// user2 call api
136+
runTestWithUser(t, uID2.String(), func(client pb.ReEarthVisualizerClient, ctx context.Context) {
137+
// get list size 1
138+
res4, err := client.GetProjectList(ctx, &pb.GetProjectListRequest{
139+
TeamId: wID.String(), // not wID2
132140
})
133141
assert.Nil(t, err)
134-
checProject(t, ctx, r, res)
142+
assert.Equal(t, 1, len(res4.Projects))
135143

136-
// get -> private
137-
res2, err = client.GetProject(ctx, &pb.GetProjectRequest{
138-
ProjectId: res.Project.Id,
144+
// test DeleteProject
145+
res5, err := client.DeleteProject(ctx, &pb.DeleteProjectRequest{
146+
ProjectId: publicProjectId,
139147
})
140-
assert.Nil(t, err)
141-
assert.Equal(t, "private", res2.Project.Visibility)
148+
assert.Equal(t, "rpc error: code = Unknown desc = operation denied", err.Error())
149+
assert.Nil(t, res5)
142150

143-
// 0: creante seeder => null
144-
// 1: creante public => public
145-
// 2: creante private => private
151+
})
146152

147-
// Authenticated: true => get list size 3
148-
res3, err := client.GetProjectList(ctx, &pb.GetProjectListRequest{
149-
TeamId: wID.String(),
150-
Authenticated: true,
153+
// user1 call api
154+
runTestWithUser(t, uID.String(), func(client pb.ReEarthVisualizerClient, ctx context.Context) {
155+
156+
// test DeleteProject
157+
res6, err := client.DeleteProject(ctx, &pb.DeleteProjectRequest{
158+
ProjectId: publicProjectId,
151159
})
152160
assert.Nil(t, err)
153-
assert.Equal(t, 3, len(res3.Projects))
154-
assert.Equal(t, "", res3.Projects[0].Visibility)
155-
assert.Equal(t, "public", res3.Projects[1].Visibility)
156-
assert.Equal(t, "private", res3.Projects[2].Visibility)
161+
assert.NotNil(t, res6)
162+
163+
})
157164

158-
// Authenticated: true => get list size 1
159-
res3, err = client.GetProjectList(ctx, &pb.GetProjectListRequest{
160-
TeamId: wID.String(),
161-
Authenticated: false,
165+
// user2 call api
166+
runTestWithUser(t, uID2.String(), func(client pb.ReEarthVisualizerClient, ctx context.Context) {
167+
168+
// get list size 0
169+
res4, err := client.GetProjectList(ctx, &pb.GetProjectListRequest{
170+
TeamId: wID.String(), // not wID2
162171
})
163172
assert.Nil(t, err)
164-
assert.Equal(t, 1, len(res3.Projects))
173+
assert.Equal(t, 0, len(res4.Projects))
165174

166175
})
167176

@@ -172,8 +181,7 @@ func runTestWithUser(t *testing.T, userID string, testFunc func(client pb.ReEart
172181
defer cancel()
173182

174183
ctx = metadata.NewOutgoingContext(ctx, metadata.New(map[string]string{
175-
"authorization": "Bearer test",
176-
"user-id": userID,
184+
"user-id": userID,
177185
}))
178186

179187
conn, err := grpc.NewClient("localhost:8080", grpc.WithTransportCredentials(insecure.NewCredentials()))
@@ -186,7 +194,10 @@ func runTestWithUser(t *testing.T, userID string, testFunc func(client pb.ReEart
186194
testFunc(client, ctx)
187195
}
188196

189-
func checProject(t *testing.T, ctx context.Context, r *repo.Container, res *pb.CreateProjectResponse) {
197+
func CreateProjectInternal(t *testing.T, ctx context.Context, r *repo.Container, client pb.ReEarthVisualizerClient, visibility string, req *pb.CreateProjectRequest) {
198+
// test CreateProject
199+
res, err := client.CreateProject(ctx, req)
200+
assert.Nil(t, err)
190201
pid, err := id.ProjectIDFrom(res.GetProject().Id)
191202
assert.Nil(t, err)
192203
prj, err := r.Project.FindByID(ctx, pid)
@@ -197,4 +208,16 @@ func checProject(t *testing.T, ctx context.Context, r *repo.Container, res *pb.C
197208
s, err := r.Storytelling.FindByScene(ctx, c.ID())
198209
assert.Nil(t, err)
199210
assert.Equal(t, 1, len(*s))
211+
// test GetProject
212+
res2, err := client.GetProject(ctx, &pb.GetProjectRequest{
213+
ProjectId: res.Project.Id,
214+
})
215+
assert.Nil(t, err)
216+
assert.Equal(t, visibility, res2.Project.Visibility)
217+
}
218+
219+
func SafeClose(c io.Closer) {
220+
if err := c.Close(); err != nil {
221+
log.Printf("warning: failed to close: %v", err)
222+
}
200223
}

server/e2e/seeder.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ func baseSetup(ctx context.Context, r *repo.Container, u *user.User, f gateway.F
120120
Workspace(w.ID()).
121121
Alias(pAlias).
122122
Visualizer(visualizer.VisualizerCesiumBeta).
123+
Visibility("private").
123124
CoreSupport(true).
124125
Starred(false).
125126
Deleted(false).

server/internal/adapter/gql/loader_project.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,13 @@ func (c *ProjectLoader) FindDeletedByWorkspace(ctx context.Context, wsID gqlmode
125125
}, nil
126126
}
127127

128-
func (c *ProjectLoader) VisibilityByWorkspace(ctx context.Context, wsID gqlmodel.ID, authenticated bool) (*gqlmodel.ProjectConnection, error) {
128+
func (c *ProjectLoader) VisibilityByWorkspace(ctx context.Context, wsID gqlmodel.ID) (*gqlmodel.ProjectConnection, error) {
129129
tid, err := gqlmodel.ToID[accountdomain.Workspace](wsID)
130130
if err != nil {
131131
return nil, err
132132
}
133133

134-
res, err := c.usecase.FindVisibilityByWorkspace(ctx, tid, authenticated, getOperator(ctx))
134+
res, err := c.usecase.FindVisibilityByWorkspace(ctx, tid, getOperator(ctx))
135135
if err != nil {
136136
return nil, err
137137
}

server/internal/adapter/gql/resolver_query.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,6 @@ func (r *queryResolver) DeletedProjects(ctx context.Context, teamId gqlmodel.ID)
187187
return loaders(ctx).Project.FindDeletedByWorkspace(ctx, teamId)
188188
}
189189

190-
func (r *queryResolver) VisibilityProjects(ctx context.Context, teamId gqlmodel.ID, authenticated bool) (*gqlmodel.ProjectConnection, error) {
191-
return loaders(ctx).Project.VisibilityByWorkspace(ctx, teamId, authenticated)
190+
func (r *queryResolver) VisibilityProjects(ctx context.Context, teamId gqlmodel.ID) (*gqlmodel.ProjectConnection, error) {
191+
return loaders(ctx).Project.VisibilityByWorkspace(ctx, teamId)
192192
}

0 commit comments

Comments
 (0)