14813: Add CORS headers to "get config" by moving it to arvados.API.
[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         "reflect"
12         "runtime"
13         "sync"
14
15         "git.curoverse.com/arvados.git/sdk/go/arvados"
16 )
17
18 var ErrStubUnimplemented = errors.New("stub unimplemented")
19
20 type APIStub struct {
21         // The error to return from every stubbed API method.
22         Error error
23         calls []APIStubCall
24         mtx   sync.Mutex
25 }
26
27 func (as *APIStub) ConfigGet(ctx context.Context) (json.RawMessage, error) {
28         as.appendCall(as.ConfigGet, ctx, nil)
29         return nil, as.Error
30 }
31 func (as *APIStub) CollectionCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Collection, error) {
32         as.appendCall(as.CollectionCreate, ctx, options)
33         return arvados.Collection{}, as.Error
34 }
35 func (as *APIStub) CollectionUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Collection, error) {
36         as.appendCall(as.CollectionUpdate, ctx, options)
37         return arvados.Collection{}, as.Error
38 }
39 func (as *APIStub) CollectionGet(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error) {
40         as.appendCall(as.CollectionGet, ctx, options)
41         return arvados.Collection{}, as.Error
42 }
43 func (as *APIStub) CollectionList(ctx context.Context, options arvados.ListOptions) (arvados.CollectionList, error) {
44         as.appendCall(as.CollectionList, ctx, options)
45         return arvados.CollectionList{}, as.Error
46 }
47 func (as *APIStub) CollectionProvenance(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
48         as.appendCall(as.CollectionProvenance, ctx, options)
49         return nil, as.Error
50 }
51 func (as *APIStub) CollectionUsedBy(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
52         as.appendCall(as.CollectionUsedBy, ctx, options)
53         return nil, as.Error
54 }
55 func (as *APIStub) CollectionDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error) {
56         as.appendCall(as.CollectionDelete, ctx, options)
57         return arvados.Collection{}, as.Error
58 }
59 func (as *APIStub) CollectionTrash(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error) {
60         as.appendCall(as.CollectionTrash, ctx, options)
61         return arvados.Collection{}, as.Error
62 }
63 func (as *APIStub) CollectionUntrash(ctx context.Context, options arvados.UntrashOptions) (arvados.Collection, error) {
64         as.appendCall(as.CollectionUntrash, ctx, options)
65         return arvados.Collection{}, as.Error
66 }
67 func (as *APIStub) ContainerCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Container, error) {
68         as.appendCall(as.ContainerCreate, ctx, options)
69         return arvados.Container{}, as.Error
70 }
71 func (as *APIStub) ContainerUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Container, error) {
72         as.appendCall(as.ContainerUpdate, ctx, options)
73         return arvados.Container{}, as.Error
74 }
75 func (as *APIStub) ContainerGet(ctx context.Context, options arvados.GetOptions) (arvados.Container, error) {
76         as.appendCall(as.ContainerGet, ctx, options)
77         return arvados.Container{}, as.Error
78 }
79 func (as *APIStub) ContainerList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerList, error) {
80         as.appendCall(as.ContainerList, ctx, options)
81         return arvados.ContainerList{}, as.Error
82 }
83 func (as *APIStub) ContainerDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Container, error) {
84         as.appendCall(as.ContainerDelete, ctx, options)
85         return arvados.Container{}, as.Error
86 }
87 func (as *APIStub) ContainerLock(ctx context.Context, options arvados.GetOptions) (arvados.Container, error) {
88         as.appendCall(as.ContainerLock, ctx, options)
89         return arvados.Container{}, as.Error
90 }
91 func (as *APIStub) ContainerUnlock(ctx context.Context, options arvados.GetOptions) (arvados.Container, error) {
92         as.appendCall(as.ContainerUnlock, ctx, options)
93         return arvados.Container{}, as.Error
94 }
95 func (as *APIStub) SpecimenCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Specimen, error) {
96         as.appendCall(as.SpecimenCreate, ctx, options)
97         return arvados.Specimen{}, as.Error
98 }
99 func (as *APIStub) SpecimenUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Specimen, error) {
100         as.appendCall(as.SpecimenUpdate, ctx, options)
101         return arvados.Specimen{}, as.Error
102 }
103 func (as *APIStub) SpecimenGet(ctx context.Context, options arvados.GetOptions) (arvados.Specimen, error) {
104         as.appendCall(as.SpecimenGet, ctx, options)
105         return arvados.Specimen{}, as.Error
106 }
107 func (as *APIStub) SpecimenList(ctx context.Context, options arvados.ListOptions) (arvados.SpecimenList, error) {
108         as.appendCall(as.SpecimenList, ctx, options)
109         return arvados.SpecimenList{}, as.Error
110 }
111 func (as *APIStub) SpecimenDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Specimen, error) {
112         as.appendCall(as.SpecimenDelete, ctx, options)
113         return arvados.Specimen{}, as.Error
114 }
115 func (as *APIStub) APIClientAuthorizationCurrent(ctx context.Context, options arvados.GetOptions) (arvados.APIClientAuthorization, error) {
116         as.appendCall(as.APIClientAuthorizationCurrent, ctx, options)
117         return arvados.APIClientAuthorization{}, as.Error
118 }
119
120 func (as *APIStub) appendCall(method interface{}, ctx context.Context, options interface{}) {
121         as.mtx.Lock()
122         defer as.mtx.Unlock()
123         as.calls = append(as.calls, APIStubCall{method, ctx, options})
124 }
125
126 func (as *APIStub) Calls(method interface{}) []APIStubCall {
127         as.mtx.Lock()
128         defer as.mtx.Unlock()
129         var calls []APIStubCall
130         for _, call := range as.calls {
131
132                 if method == nil || (runtime.FuncForPC(reflect.ValueOf(call.Method).Pointer()).Name() ==
133                         runtime.FuncForPC(reflect.ValueOf(method).Pointer()).Name()) {
134                         calls = append(calls, call)
135                 }
136         }
137         return calls
138 }
139
140 type APIStubCall struct {
141         Method  interface{}
142         Context context.Context
143         Options interface{}
144 }