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