@@ -18,150 +18,159 @@ import (
18
18
"github.com/reearth/reearth/server/pkg/id"
19
19
)
20
20
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
-
27
21
// export REEARTH_DB=mongodb://localhost
28
22
// go test -v -run TestInternalAPI ./e2e/...
29
23
30
24
func TestInternalAPI_private (t * testing.T ) {
31
25
_ , r , _ := GRPCServer (t , baseSeeder )
32
26
33
- runTestWithUser (t , uID .String (), func (client pb.ReEarthVisualizerClient , ctx context.Context ) {
27
+ // user1: workspaceId: wID userId: uID
28
+ // user2: workspaceId: wID2 userId: uID2
34
29
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 ) {
46
32
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
+ })
53
44
54
45
// 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
74
58
// 1: creante default => private
75
59
// 2: creante private => private
76
60
77
- // Authenticated: true => get list size 3
61
+ // get list size 3
78
62
res3 , err := client .GetProjectList (ctx , & pb.GetProjectListRequest {
79
- TeamId : wID .String (),
80
- Authenticated : true ,
63
+ TeamId : wID .String (),
81
64
})
82
65
assert .Nil (t , err )
83
66
assert .Equal (t , 3 , len (res3 .Projects ))
84
- assert .Equal (t , "" , res3 .Projects [0 ].Visibility )
67
+ assert .Equal (t , "private " , res3 .Projects [0 ].Visibility )
85
68
assert .Equal (t , "private" , res3 .Projects [1 ].Visibility )
86
69
assert .Equal (t , "private" , res3 .Projects [2 ].Visibility )
87
70
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
92
78
})
93
79
assert .Nil (t , err )
94
- assert .Equal (t , 0 , len (res3 .Projects ))
95
-
80
+ assert .Equal (t , 0 , len (res4 .Projects ))
96
81
})
97
82
98
83
}
99
84
100
85
func TestInternalAPI_public (t * testing.T ) {
101
86
_ , r , _ := GRPCServer (t , baseSeeder )
102
87
88
+ var publicProjectId string
89
+
90
+ // user1 call api
103
91
runTestWithUser (t , uID .String (), func (client pb.ReEarthVisualizerClient , ctx context.Context ) {
104
92
105
93
// 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
+ } )
116
104
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 (),
120
124
})
121
125
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 )
123
130
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
132
140
})
133
141
assert .Nil (t , err )
134
- checProject (t , ctx , r , res )
142
+ assert . Equal (t , 1 , len ( res4 . Projects ) )
135
143
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 ,
139
147
})
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 )
142
150
143
- // 0: creante seeder => null
144
- // 1: creante public => public
145
- // 2: creante private => private
151
+ })
146
152
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 ,
151
159
})
152
160
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
+ })
157
164
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
162
171
})
163
172
assert .Nil (t , err )
164
- assert .Equal (t , 1 , len (res3 .Projects ))
173
+ assert .Equal (t , 0 , len (res4 .Projects ))
165
174
166
175
})
167
176
@@ -172,8 +181,7 @@ func runTestWithUser(t *testing.T, userID string, testFunc func(client pb.ReEart
172
181
defer cancel ()
173
182
174
183
ctx = metadata .NewOutgoingContext (ctx , metadata .New (map [string ]string {
175
- "authorization" : "Bearer test" ,
176
- "user-id" : userID ,
184
+ "user-id" : userID ,
177
185
}))
178
186
179
187
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
186
194
testFunc (client , ctx )
187
195
}
188
196
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 )
190
201
pid , err := id .ProjectIDFrom (res .GetProject ().Id )
191
202
assert .Nil (t , err )
192
203
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
197
208
s , err := r .Storytelling .FindByScene (ctx , c .ID ())
198
209
assert .Nil (t , err )
199
210
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
+ }
200
223
}
0 commit comments