Merge branch '15370-loopback-dispatchcloud'
[arvados.git] / sdk / go / arvadostest / api.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: Apache-2.0
4
5 package arvadostest
6
7 import (
8         "context"
9         "encoding/json"
10         "errors"
11         "net/url"
12         "reflect"
13         "runtime"
14         "sync"
15
16         "git.arvados.org/arvados.git/sdk/go/arvados"
17 )
18
19 var ErrStubUnimplemented = errors.New("stub unimplemented")
20
21 type APIStub struct {
22         // The error to return from every stubbed API method.
23         Error error
24         calls []APIStubCall
25         mtx   sync.Mutex
26 }
27
28 // BaseURL implements federation.backend
29 func (as *APIStub) BaseURL() url.URL {
30         return url.URL{Scheme: "https", Host: "apistub.example.com"}
31 }
32 func (as *APIStub) ConfigGet(ctx context.Context) (json.RawMessage, error) {
33         as.appendCall(ctx, as.ConfigGet, nil)
34         return nil, as.Error
35 }
36 func (as *APIStub) VocabularyGet(ctx context.Context) (arvados.Vocabulary, error) {
37         as.appendCall(ctx, as.VocabularyGet, nil)
38         return arvados.Vocabulary{}, as.Error
39 }
40 func (as *APIStub) Login(ctx context.Context, options arvados.LoginOptions) (arvados.LoginResponse, error) {
41         as.appendCall(ctx, as.Login, options)
42         return arvados.LoginResponse{}, as.Error
43 }
44 func (as *APIStub) Logout(ctx context.Context, options arvados.LogoutOptions) (arvados.LogoutResponse, error) {
45         as.appendCall(ctx, as.Logout, options)
46         return arvados.LogoutResponse{}, as.Error
47 }
48 func (as *APIStub) CollectionCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Collection, error) {
49         as.appendCall(ctx, as.CollectionCreate, options)
50         return arvados.Collection{}, as.Error
51 }
52 func (as *APIStub) CollectionUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Collection, error) {
53         as.appendCall(ctx, as.CollectionUpdate, options)
54         return arvados.Collection{}, as.Error
55 }
56 func (as *APIStub) CollectionGet(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error) {
57         as.appendCall(ctx, as.CollectionGet, options)
58         return arvados.Collection{}, as.Error
59 }
60 func (as *APIStub) CollectionList(ctx context.Context, options arvados.ListOptions) (arvados.CollectionList, error) {
61         as.appendCall(ctx, as.CollectionList, options)
62         return arvados.CollectionList{}, as.Error
63 }
64 func (as *APIStub) CollectionProvenance(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
65         as.appendCall(ctx, as.CollectionProvenance, options)
66         return nil, as.Error
67 }
68 func (as *APIStub) CollectionUsedBy(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
69         as.appendCall(ctx, as.CollectionUsedBy, options)
70         return nil, as.Error
71 }
72 func (as *APIStub) CollectionDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error) {
73         as.appendCall(ctx, as.CollectionDelete, options)
74         return arvados.Collection{}, as.Error
75 }
76 func (as *APIStub) CollectionTrash(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error) {
77         as.appendCall(ctx, as.CollectionTrash, options)
78         return arvados.Collection{}, as.Error
79 }
80 func (as *APIStub) CollectionUntrash(ctx context.Context, options arvados.UntrashOptions) (arvados.Collection, error) {
81         as.appendCall(ctx, as.CollectionUntrash, options)
82         return arvados.Collection{}, as.Error
83 }
84 func (as *APIStub) ContainerCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Container, error) {
85         as.appendCall(ctx, as.ContainerCreate, options)
86         return arvados.Container{}, as.Error
87 }
88 func (as *APIStub) ContainerUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Container, error) {
89         as.appendCall(ctx, as.ContainerUpdate, options)
90         return arvados.Container{}, as.Error
91 }
92 func (as *APIStub) ContainerGet(ctx context.Context, options arvados.GetOptions) (arvados.Container, error) {
93         as.appendCall(ctx, as.ContainerGet, options)
94         return arvados.Container{}, as.Error
95 }
96 func (as *APIStub) ContainerList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerList, error) {
97         as.appendCall(ctx, as.ContainerList, options)
98         return arvados.ContainerList{}, as.Error
99 }
100 func (as *APIStub) ContainerDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Container, error) {
101         as.appendCall(ctx, as.ContainerDelete, options)
102         return arvados.Container{}, as.Error
103 }
104 func (as *APIStub) ContainerLock(ctx context.Context, options arvados.GetOptions) (arvados.Container, error) {
105         as.appendCall(ctx, as.ContainerLock, options)
106         return arvados.Container{}, as.Error
107 }
108 func (as *APIStub) ContainerUnlock(ctx context.Context, options arvados.GetOptions) (arvados.Container, error) {
109         as.appendCall(ctx, as.ContainerUnlock, options)
110         return arvados.Container{}, as.Error
111 }
112 func (as *APIStub) ContainerSSH(ctx context.Context, options arvados.ContainerSSHOptions) (arvados.ContainerSSHConnection, error) {
113         as.appendCall(ctx, as.ContainerSSH, options)
114         return arvados.ContainerSSHConnection{}, as.Error
115 }
116 func (as *APIStub) ContainerRequestCreate(ctx context.Context, options arvados.CreateOptions) (arvados.ContainerRequest, error) {
117         as.appendCall(ctx, as.ContainerRequestCreate, options)
118         return arvados.ContainerRequest{}, as.Error
119 }
120 func (as *APIStub) ContainerRequestUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.ContainerRequest, error) {
121         as.appendCall(ctx, as.ContainerRequestUpdate, options)
122         return arvados.ContainerRequest{}, as.Error
123 }
124 func (as *APIStub) ContainerRequestGet(ctx context.Context, options arvados.GetOptions) (arvados.ContainerRequest, error) {
125         as.appendCall(ctx, as.ContainerRequestGet, options)
126         return arvados.ContainerRequest{}, as.Error
127 }
128 func (as *APIStub) ContainerRequestList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerRequestList, error) {
129         as.appendCall(ctx, as.ContainerRequestList, options)
130         return arvados.ContainerRequestList{}, as.Error
131 }
132 func (as *APIStub) ContainerRequestDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.ContainerRequest, error) {
133         as.appendCall(ctx, as.ContainerRequestDelete, options)
134         return arvados.ContainerRequest{}, as.Error
135 }
136 func (as *APIStub) GroupCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Group, error) {
137         as.appendCall(ctx, as.GroupCreate, options)
138         return arvados.Group{}, as.Error
139 }
140 func (as *APIStub) GroupUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Group, error) {
141         as.appendCall(ctx, as.GroupUpdate, options)
142         return arvados.Group{}, as.Error
143 }
144 func (as *APIStub) GroupGet(ctx context.Context, options arvados.GetOptions) (arvados.Group, error) {
145         as.appendCall(ctx, as.GroupGet, options)
146         return arvados.Group{}, as.Error
147 }
148 func (as *APIStub) GroupList(ctx context.Context, options arvados.ListOptions) (arvados.GroupList, error) {
149         as.appendCall(ctx, as.GroupList, options)
150         return arvados.GroupList{}, as.Error
151 }
152 func (as *APIStub) GroupContents(ctx context.Context, options arvados.GroupContentsOptions) (arvados.ObjectList, error) {
153         as.appendCall(ctx, as.GroupContents, options)
154         return arvados.ObjectList{}, as.Error
155 }
156 func (as *APIStub) GroupShared(ctx context.Context, options arvados.ListOptions) (arvados.GroupList, error) {
157         as.appendCall(ctx, as.GroupShared, options)
158         return arvados.GroupList{}, as.Error
159 }
160 func (as *APIStub) GroupDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Group, error) {
161         as.appendCall(ctx, as.GroupDelete, options)
162         return arvados.Group{}, as.Error
163 }
164 func (as *APIStub) GroupTrash(ctx context.Context, options arvados.DeleteOptions) (arvados.Group, error) {
165         as.appendCall(ctx, as.GroupTrash, options)
166         return arvados.Group{}, as.Error
167 }
168 func (as *APIStub) GroupUntrash(ctx context.Context, options arvados.UntrashOptions) (arvados.Group, error) {
169         as.appendCall(ctx, as.GroupUntrash, options)
170         return arvados.Group{}, as.Error
171 }
172 func (as *APIStub) LinkCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Link, error) {
173         as.appendCall(ctx, as.LinkCreate, options)
174         return arvados.Link{}, as.Error
175 }
176 func (as *APIStub) LinkUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Link, error) {
177         as.appendCall(ctx, as.LinkUpdate, options)
178         return arvados.Link{}, as.Error
179 }
180 func (as *APIStub) LinkGet(ctx context.Context, options arvados.GetOptions) (arvados.Link, error) {
181         as.appendCall(ctx, as.LinkGet, options)
182         return arvados.Link{}, as.Error
183 }
184 func (as *APIStub) LinkList(ctx context.Context, options arvados.ListOptions) (arvados.LinkList, error) {
185         as.appendCall(ctx, as.LinkList, options)
186         return arvados.LinkList{}, as.Error
187 }
188 func (as *APIStub) LinkDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Link, error) {
189         as.appendCall(ctx, as.LinkDelete, options)
190         return arvados.Link{}, as.Error
191 }
192 func (as *APIStub) SpecimenCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Specimen, error) {
193         as.appendCall(ctx, as.SpecimenCreate, options)
194         return arvados.Specimen{}, as.Error
195 }
196 func (as *APIStub) SpecimenUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Specimen, error) {
197         as.appendCall(ctx, as.SpecimenUpdate, options)
198         return arvados.Specimen{}, as.Error
199 }
200 func (as *APIStub) SpecimenGet(ctx context.Context, options arvados.GetOptions) (arvados.Specimen, error) {
201         as.appendCall(ctx, as.SpecimenGet, options)
202         return arvados.Specimen{}, as.Error
203 }
204 func (as *APIStub) SpecimenList(ctx context.Context, options arvados.ListOptions) (arvados.SpecimenList, error) {
205         as.appendCall(ctx, as.SpecimenList, options)
206         return arvados.SpecimenList{}, as.Error
207 }
208 func (as *APIStub) SpecimenDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Specimen, error) {
209         as.appendCall(ctx, as.SpecimenDelete, options)
210         return arvados.Specimen{}, as.Error
211 }
212 func (as *APIStub) SysTrashSweep(ctx context.Context, options struct{}) (struct{}, error) {
213         as.appendCall(ctx, as.SysTrashSweep, options)
214         return struct{}{}, as.Error
215 }
216 func (as *APIStub) UserCreate(ctx context.Context, options arvados.CreateOptions) (arvados.User, error) {
217         as.appendCall(ctx, as.UserCreate, options)
218         return arvados.User{}, as.Error
219 }
220 func (as *APIStub) UserUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.User, error) {
221         as.appendCall(ctx, as.UserUpdate, options)
222         return arvados.User{}, as.Error
223 }
224 func (as *APIStub) UserActivate(ctx context.Context, options arvados.UserActivateOptions) (arvados.User, error) {
225         as.appendCall(ctx, as.UserActivate, options)
226         return arvados.User{}, as.Error
227 }
228 func (as *APIStub) UserSetup(ctx context.Context, options arvados.UserSetupOptions) (map[string]interface{}, error) {
229         as.appendCall(ctx, as.UserSetup, options)
230         return nil, as.Error
231 }
232 func (as *APIStub) UserUnsetup(ctx context.Context, options arvados.GetOptions) (arvados.User, error) {
233         as.appendCall(ctx, as.UserUnsetup, options)
234         return arvados.User{}, as.Error
235 }
236 func (as *APIStub) UserGet(ctx context.Context, options arvados.GetOptions) (arvados.User, error) {
237         as.appendCall(ctx, as.UserGet, options)
238         return arvados.User{}, as.Error
239 }
240 func (as *APIStub) UserGetCurrent(ctx context.Context, options arvados.GetOptions) (arvados.User, error) {
241         as.appendCall(ctx, as.UserGetCurrent, options)
242         return arvados.User{}, as.Error
243 }
244 func (as *APIStub) UserGetSystem(ctx context.Context, options arvados.GetOptions) (arvados.User, error) {
245         as.appendCall(ctx, as.UserGetSystem, options)
246         return arvados.User{}, as.Error
247 }
248 func (as *APIStub) UserList(ctx context.Context, options arvados.ListOptions) (arvados.UserList, error) {
249         as.appendCall(ctx, as.UserList, options)
250         return arvados.UserList{}, as.Error
251 }
252 func (as *APIStub) UserDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.User, error) {
253         as.appendCall(ctx, as.UserDelete, options)
254         return arvados.User{}, as.Error
255 }
256 func (as *APIStub) UserMerge(ctx context.Context, options arvados.UserMergeOptions) (arvados.User, error) {
257         as.appendCall(ctx, as.UserMerge, options)
258         return arvados.User{}, as.Error
259 }
260 func (as *APIStub) UserBatchUpdate(ctx context.Context, options arvados.UserBatchUpdateOptions) (arvados.UserList, error) {
261         as.appendCall(ctx, as.UserBatchUpdate, options)
262         return arvados.UserList{}, as.Error
263 }
264 func (as *APIStub) UserAuthenticate(ctx context.Context, options arvados.UserAuthenticateOptions) (arvados.APIClientAuthorization, error) {
265         as.appendCall(ctx, as.UserAuthenticate, options)
266         return arvados.APIClientAuthorization{}, as.Error
267 }
268 func (as *APIStub) APIClientAuthorizationCurrent(ctx context.Context, options arvados.GetOptions) (arvados.APIClientAuthorization, error) {
269         as.appendCall(ctx, as.APIClientAuthorizationCurrent, options)
270         return arvados.APIClientAuthorization{}, as.Error
271 }
272 func (as *APIStub) APIClientAuthorizationCreate(ctx context.Context, options arvados.CreateOptions) (arvados.APIClientAuthorization, error) {
273         as.appendCall(ctx, as.APIClientAuthorizationCreate, options)
274         return arvados.APIClientAuthorization{}, as.Error
275 }
276 func (as *APIStub) APIClientAuthorizationUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.APIClientAuthorization, error) {
277         as.appendCall(ctx, as.APIClientAuthorizationUpdate, options)
278         return arvados.APIClientAuthorization{}, as.Error
279 }
280 func (as *APIStub) APIClientAuthorizationDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.APIClientAuthorization, error) {
281         as.appendCall(ctx, as.APIClientAuthorizationDelete, options)
282         return arvados.APIClientAuthorization{}, as.Error
283 }
284 func (as *APIStub) APIClientAuthorizationList(ctx context.Context, options arvados.ListOptions) (arvados.APIClientAuthorizationList, error) {
285         as.appendCall(ctx, as.APIClientAuthorizationList, options)
286         return arvados.APIClientAuthorizationList{}, as.Error
287 }
288 func (as *APIStub) APIClientAuthorizationGet(ctx context.Context, options arvados.GetOptions) (arvados.APIClientAuthorization, error) {
289         as.appendCall(ctx, as.APIClientAuthorizationGet, options)
290         return arvados.APIClientAuthorization{}, as.Error
291 }
292
293 func (as *APIStub) appendCall(ctx context.Context, method interface{}, options interface{}) {
294         as.mtx.Lock()
295         defer as.mtx.Unlock()
296         as.calls = append(as.calls, APIStubCall{method, ctx, options})
297 }
298
299 func (as *APIStub) Calls(method interface{}) []APIStubCall {
300         as.mtx.Lock()
301         defer as.mtx.Unlock()
302         var calls []APIStubCall
303         for _, call := range as.calls {
304                 if method == nil || (runtime.FuncForPC(reflect.ValueOf(call.Method).Pointer()).Name() ==
305                         runtime.FuncForPC(reflect.ValueOf(method).Pointer()).Name()) {
306                         calls = append(calls, call)
307                 }
308         }
309         return calls
310 }
311
312 type APIStubCall struct {
313         Method  interface{}
314         Context context.Context
315         Options interface{}
316 }