-
Notifications
You must be signed in to change notification settings - Fork 6
/
connection.go
101 lines (88 loc) · 3.29 KB
/
connection.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*
* Copyright 2020-2022 ForgeRock AS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package mocks
import (
"github.com/ForgeRock/iot-edge/v7/internal/client"
"github.com/ForgeRock/iot-edge/v7/internal/introspect"
"github.com/dchest/uniuri"
)
// MockClient mocks a client.Connection
type MockClient struct {
AuthenticateFunc func(client.AuthenticatePayload) (client.AuthenticatePayload, error)
AMInfoFunc func() (client.AMInfoResponse, error)
AMInfoSet client.AMInfoResponse
AccessTokenFunc func(string, string) ([]byte, error)
AttributesFunc func(string, string, []string) ([]byte, error)
UserCodeFunc func(string, string) ([]byte, error)
UserTokenFunc func(string, string) ([]byte, error)
IntrospectAccessTokenFunc func(string, string) ([]byte, error)
}
func (m *MockClient) ValidateSession(tokenID string, content client.ContentType, payload string) (ok bool, err error) {
return true, nil
}
func (m *MockClient) LogoutSession(tokenID string, content client.ContentType, payload string) (err error) {
return nil
}
func (m *MockClient) Initialise() error {
m.AMInfoSet = client.AMInfoResponse{
AccessTokenURL: "/things",
ThingsVersion: "1",
}
return nil
}
func (m *MockClient) Authenticate(payload client.AuthenticatePayload) (reply client.AuthenticatePayload, err error) {
if m.AuthenticateFunc != nil {
return m.AuthenticateFunc(payload)
}
reply.TokenID = uniuri.New()
return reply, nil
}
func (m *MockClient) AMInfo() (info client.AMInfoResponse, err error) {
if m.AMInfoFunc != nil {
return m.AMInfoFunc()
}
return m.AMInfoSet, nil
}
func (m *MockClient) AccessToken(tokenID string, _ client.ContentType, payload string) (reply []byte, err error) {
if m.AccessTokenFunc != nil {
return m.AccessTokenFunc(tokenID, payload)
}
return []byte("{}"), nil
}
func (m *MockClient) IntrospectAccessToken(tokenID string, content client.ContentType, payload string) (introspection []byte, err error) {
if m.IntrospectAccessTokenFunc != nil {
return m.IntrospectAccessTokenFunc(tokenID, payload)
}
return introspect.InactiveIntrospectionBytes, nil
}
func (m *MockClient) Attributes(tokenID string, _ client.ContentType, payload string, names []string) (reply []byte, err error) {
if m.AttributesFunc != nil {
return m.AttributesFunc(tokenID, payload, names)
}
return []byte("{}"), nil
}
func (m *MockClient) UserCode(tokenID string, _ client.ContentType, payload string) (reply []byte, err error) {
if m.UserCodeFunc != nil {
return m.UserCodeFunc(tokenID, payload)
}
return []byte("{}"), nil
}
func (m *MockClient) UserToken(tokenID string, _ client.ContentType, payload string) (reply []byte, err error) {
if m.UserTokenFunc != nil {
return m.UserTokenFunc(tokenID, payload)
}
return []byte("{}"), nil
}