@@ -9,26 +9,16 @@ package auth
9
9
import (
10
10
"context"
11
11
"net"
12
- "os"
13
12
"path/filepath"
14
13
"testing"
15
14
16
15
"github.com/containerd/containerd/pkg/dialer"
17
- runtime_alpha "github.com/containerd/containerd/third_party/k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
18
16
"github.com/stretchr/testify/assert"
19
17
"google.golang.org/grpc"
20
18
"google.golang.org/grpc/credentials/insecure"
21
19
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
22
20
)
23
21
24
- type MockAlphaImageService struct {
25
- runtime_alpha.UnimplementedImageServiceServer
26
- }
27
-
28
- func (* MockAlphaImageService ) PullImage (_ context.Context , _ * runtime_alpha.PullImageRequest ) (* runtime_alpha.PullImageResponse , error ) {
29
- return & runtime_alpha.PullImageResponse {}, nil
30
- }
31
-
32
22
type MockImageService struct {
33
23
runtime.UnimplementedImageServiceServer
34
24
}
@@ -39,120 +29,117 @@ func (*MockImageService) PullImage(_ context.Context, _ *runtime.PullImageReques
39
29
40
30
func TestFromImagePull (t * testing.T ) {
41
31
var err error
42
- assert := assert .New (t )
32
+ assertions := assert .New (t )
43
33
44
34
ctx := context .TODO ()
45
35
d := t .TempDir ()
46
- defer os .RemoveAll (d )
47
36
48
37
tagImage := "docker.io/library/busybox:latest"
38
+
49
39
// should return nil if no proxy
50
40
kc , err := FromCRI ("docker.io" , tagImage )
51
- assert .Nil (kc )
52
- assert .NoError (err )
41
+ assertions .Nil (kc )
42
+ assertions .NoError (err )
53
43
44
+ // Mocking the end CRI request consumer.
54
45
mockRPC := grpc .NewServer ()
55
46
mockSocket := filepath .Join (d , "mock.sock" )
56
- lm , err := net .Listen ("unix" , mockSocket )
57
- assert .NoError (err )
58
-
59
- // The server of CRI image service proxy.
60
- proxyRPC := grpc .NewServer ()
61
- proxySocket := filepath .Join (d , "proxy.sock" )
62
- lp , err := net .Listen ("unix" , proxySocket )
63
- assert .NoError (err )
47
+ listenMock , err := net .Listen ("unix" , mockSocket )
48
+ assertions .NoError (err )
64
49
65
50
// Mocking the end CRI request consumer.
66
- serverAlpha := & MockAlphaImageService {}
67
51
server := & MockImageService {}
68
- runtime_alpha .RegisterImageServiceServer (mockRPC , serverAlpha )
69
52
runtime .RegisterImageServiceServer (mockRPC , server )
70
53
71
54
go func () {
72
- err := mockRPC .Serve (lm )
73
- assert .NoError (err )
55
+ err := mockRPC .Serve (listenMock )
56
+ assertions .NoError (err )
74
57
}()
75
58
defer mockRPC .Stop ()
76
59
60
+ // The server of CRI image service proxy.
61
+ proxyRPC := grpc .NewServer ()
62
+ proxySocket := filepath .Join (d , "proxy.sock" )
63
+ listenProxy , err := net .Listen ("unix" , proxySocket )
64
+ assertions .NoError (err )
77
65
AddImageProxy (ctx , proxyRPC , mockSocket )
78
66
go func () {
79
- err := proxyRPC .Serve (lp )
80
- assert .NoError (err )
67
+ err := proxyRPC .Serve (listenProxy )
68
+ assertions .NoError (err )
81
69
}()
82
70
defer proxyRPC .Stop ()
83
71
84
- kc , err = FromCRI ("docker.io" , tagImage )
85
72
// should return empty kc before pulling
86
- assert .Nil (kc )
87
- assert .NoError (err )
73
+ kc , err = FromCRI ("docker.io" , tagImage )
74
+ assertions .Nil (kc )
75
+ assertions .NoError (err )
88
76
89
77
gopts := []grpc.DialOption {
90
78
grpc .WithTransportCredentials (insecure .NewCredentials ()),
91
79
grpc .WithContextDialer (dialer .ContextDialer ),
92
80
}
93
81
conn , err := grpc .Dial (dialer .DialAddress (proxySocket ), gopts ... )
94
- assert .NoError (err )
95
- criAlphaClient := runtime_alpha .NewImageServiceClient (conn )
96
- irAlpha := & runtime_alpha.PullImageRequest {
97
- Image : & runtime_alpha.ImageSpec {
82
+ assertions .NoError (err )
83
+
84
+ criClient := runtime .NewImageServiceClient (conn )
85
+
86
+ _ , err = criClient .PullImage (ctx , & runtime.PullImageRequest {
87
+ Image : & runtime.ImageSpec {
98
88
Image : tagImage ,
99
89
},
100
- Auth : & runtime_alpha .AuthConfig {
90
+ Auth : & runtime .AuthConfig {
101
91
Username : "test" ,
102
92
Password : "passwd" ,
103
93
},
104
- }
105
- _ , err = criAlphaClient .PullImage (ctx , irAlpha )
106
- assert .NoError (err )
94
+ })
95
+ assertions .NoError (err )
107
96
108
- criClient := runtime .NewImageServiceClient (conn )
109
-
110
- kc , err = FromCRI ("docker.io" , tagImage )
111
97
// get correct kc after pulling
112
- assert .Equal ("test" , kc .Username )
113
- assert .Equal ("passwd" , kc .Password )
114
- assert .NoError (err )
98
+ kc , err = FromCRI ("docker.io" , tagImage )
99
+ assertions .NoError (err )
100
+ assertions .Equal ("test" , kc .Username )
101
+ assertions .Equal ("passwd" , kc .Password )
115
102
116
- kc , err = FromCRI ("docker.io" , "docker.io/library/busybox:another" )
117
103
// get empty kc with wrong tag
118
- assert .Nil (kc )
119
- assert .NoError (err )
104
+ kc , err = FromCRI ("docker.io" , "docker.io/library/busybox:another" )
105
+ assertions .Nil (kc )
106
+ assertions .NoError (err )
120
107
121
108
image2 := "ghcr.io/busybox:latest"
122
109
123
- ir := & runtime.PullImageRequest {
110
+ _ , err = criClient . PullImage ( ctx , & runtime.PullImageRequest {
124
111
Image : & runtime.ImageSpec {
125
112
Image : image2 ,
126
113
},
127
114
Auth : & runtime.AuthConfig {
128
115
Username : "test_1" ,
129
116
Password : "passwd_1" ,
130
117
},
131
- }
132
- _ , err = criClient .PullImage (ctx , ir )
133
- assert .NoError (err )
118
+ })
119
+ assertions .NoError (err )
134
120
121
+ // get correct kc after pulling
135
122
kc , err = FromCRI ("ghcr.io" , image2 )
136
- assert . Equal ( kc . Username , "test_1" )
137
- assert .Equal (kc .Password , "passwd_1 " )
138
- assert . NoError ( err )
123
+ assertions . NoError ( err )
124
+ assertions .Equal (kc .Username , "test_1 " )
125
+ assertions . Equal ( kc . Password , "passwd_1" )
139
126
140
127
// should work with digest
141
128
digestImage := "docker.io/library/busybox@sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa"
142
- irAlpha = & runtime_alpha .PullImageRequest {
143
- Image : & runtime_alpha .ImageSpec {
129
+ _ , err = criClient . PullImage ( ctx , & runtime .PullImageRequest {
130
+ Image : & runtime .ImageSpec {
144
131
Image : digestImage ,
145
132
},
146
- Auth : & runtime_alpha .AuthConfig {
133
+ Auth : & runtime .AuthConfig {
147
134
Username : "digest" ,
148
135
Password : "dpwd" ,
149
136
},
150
- }
151
- _ , err = criAlphaClient .PullImage (ctx , irAlpha )
152
- assert .NoError (err )
137
+ })
138
+ assertions .NoError (err )
153
139
140
+ // get correct kc after pulling
154
141
kc , err = FromCRI ("docker.io" , digestImage )
155
- assert . Equal ( "digest" , kc . Username )
156
- assert .Equal ("dpwd " , kc .Password )
157
- assert . NoError ( err )
142
+ assertions . NoError ( err )
143
+ assertions .Equal ("digest " , kc .Username )
144
+ assertions . Equal ( "dpwd" , kc . Password )
158
145
}
0 commit comments