github.com/sacloud/iaas-api-go@v1.12.0/helper/query/server_user_name_test.go (about) 1 // Copyright 2016-2022 The sacloud/iaas-api-go Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package query 16 17 import ( 18 "context" 19 "errors" 20 "testing" 21 22 "github.com/sacloud/iaas-api-go" 23 "github.com/sacloud/iaas-api-go/types" 24 "github.com/stretchr/testify/require" 25 ) 26 27 func TestGetDefaultUserName(t *testing.T) { 28 cases := []struct { 29 msg string 30 id types.ID 31 reader *ServerSourceReader 32 expectedValue string 33 expectedErr error 34 }{ 35 { 36 msg: "server reader returns unexpected error", 37 id: 1, 38 reader: &ServerSourceReader{ 39 ServerReader: &dummyServerReader{ 40 err: errors.New("dummy"), 41 }, 42 ArchiveReader: &dummyArchiveReader{}, 43 DiskReader: &dummyDiskReader{}, 44 }, 45 expectedValue: "", 46 expectedErr: errors.New("dummy"), 47 }, 48 { 49 msg: "diskless server", 50 id: 1, 51 reader: &ServerSourceReader{ 52 ServerReader: &dummyServerReader{ 53 servers: []*iaas.Server{ 54 {ID: 1}, 55 }, 56 }, 57 ArchiveReader: &dummyArchiveReader{}, 58 DiskReader: &dummyDiskReader{}, 59 }, 60 expectedValue: "", 61 expectedErr: nil, 62 }, 63 { 64 msg: "disk reader returns unexpected error", 65 id: 1, 66 reader: &ServerSourceReader{ 67 ServerReader: &dummyServerReader{ 68 servers: []*iaas.Server{ 69 { 70 ID: 1, 71 Disks: []*iaas.ServerConnectedDisk{ 72 {ID: 2}, 73 }, 74 }, 75 }, 76 }, 77 ArchiveReader: &dummyArchiveReader{}, 78 DiskReader: &dummyDiskReader{ 79 err: errors.New("dummy"), 80 }, 81 }, 82 expectedValue: "", 83 expectedErr: errors.New("dummy"), 84 }, 85 { 86 msg: "disk with source disk", 87 id: 1, 88 reader: &ServerSourceReader{ 89 ServerReader: &dummyServerReader{ 90 servers: []*iaas.Server{ 91 { 92 ID: 1, 93 Disks: []*iaas.ServerConnectedDisk{ 94 {ID: 2}, 95 }, 96 }, 97 }, 98 }, 99 ArchiveReader: &dummyArchiveReader{}, 100 DiskReader: &dummyDiskReader{ 101 disks: []*iaas.Disk{ 102 { 103 ID: 2, 104 SourceDiskID: 3, 105 }, 106 {ID: 3}, // from empty disk 107 }, 108 }, 109 }, 110 expectedValue: "", 111 expectedErr: nil, 112 }, 113 { 114 msg: "archive reader returns unexpected error", 115 id: 1, 116 reader: &ServerSourceReader{ 117 ServerReader: &dummyServerReader{ 118 servers: []*iaas.Server{ 119 { 120 ID: 1, 121 Disks: []*iaas.ServerConnectedDisk{ 122 {ID: 2}, 123 }, 124 }, 125 }, 126 }, 127 DiskReader: &dummyDiskReader{ 128 disks: []*iaas.Disk{ 129 { 130 ID: 2, 131 SourceArchiveID: 3, 132 }, 133 }, 134 }, 135 ArchiveReader: &dummyArchiveReader{ 136 err: errors.New("dummy"), 137 }, 138 }, 139 expectedValue: "", 140 expectedErr: errors.New("dummy"), 141 }, 142 { 143 msg: "from ubuntu", 144 id: 1, 145 reader: &ServerSourceReader{ 146 ServerReader: &dummyServerReader{ 147 servers: []*iaas.Server{ 148 { 149 ID: 1, 150 Disks: []*iaas.ServerConnectedDisk{ 151 {ID: 2}, 152 }, 153 }, 154 }, 155 }, 156 DiskReader: &dummyDiskReader{ 157 disks: []*iaas.Disk{ 158 { 159 ID: 2, 160 SourceArchiveID: 3, 161 }, 162 }, 163 }, 164 ArchiveReader: &dummyArchiveReader{ 165 archives: []*iaas.Archive{ 166 { 167 ID: 3, 168 Scope: types.Scopes.Shared, 169 Tags: types.Tags{"distro-ubuntu"}, 170 }, 171 }, 172 }, 173 }, 174 expectedValue: "ubuntu", 175 expectedErr: nil, 176 }, 177 { 178 msg: "from rancheros", 179 id: 1, 180 reader: &ServerSourceReader{ 181 ServerReader: &dummyServerReader{ 182 servers: []*iaas.Server{ 183 { 184 ID: 1, 185 Disks: []*iaas.ServerConnectedDisk{ 186 {ID: 2}, 187 }, 188 }, 189 }, 190 }, 191 DiskReader: &dummyDiskReader{ 192 disks: []*iaas.Disk{ 193 { 194 ID: 2, 195 SourceArchiveID: 3, 196 }, 197 }, 198 }, 199 ArchiveReader: &dummyArchiveReader{ 200 archives: []*iaas.Archive{ 201 { 202 ID: 3, 203 Scope: types.Scopes.Shared, 204 Tags: types.Tags{"distro-rancheros"}, 205 }, 206 }, 207 }, 208 }, 209 expectedValue: "rancher", 210 expectedErr: nil, 211 }, 212 { 213 msg: "from k3os", 214 id: 1, 215 reader: &ServerSourceReader{ 216 ServerReader: &dummyServerReader{ 217 servers: []*iaas.Server{ 218 { 219 ID: 1, 220 Disks: []*iaas.ServerConnectedDisk{ 221 {ID: 2}, 222 }, 223 }, 224 }, 225 }, 226 DiskReader: &dummyDiskReader{ 227 disks: []*iaas.Disk{ 228 { 229 ID: 2, 230 SourceArchiveID: 3, 231 }, 232 }, 233 }, 234 ArchiveReader: &dummyArchiveReader{ 235 archives: []*iaas.Archive{ 236 { 237 ID: 3, 238 Scope: types.Scopes.Shared, 239 Tags: types.Tags{"distro-k3os"}, 240 }, 241 }, 242 }, 243 }, 244 expectedValue: "rancher", 245 expectedErr: nil, 246 }, 247 { 248 msg: "nested", 249 id: 1, 250 reader: &ServerSourceReader{ 251 ServerReader: &dummyServerReader{ 252 servers: []*iaas.Server{ 253 { 254 ID: 1, 255 Disks: []*iaas.ServerConnectedDisk{ 256 {ID: 2}, 257 }, 258 }, 259 }, 260 }, 261 DiskReader: &dummyDiskReader{ 262 disks: []*iaas.Disk{ 263 { 264 ID: 2, 265 SourceArchiveID: 5, 266 }, 267 { 268 ID: 3, 269 SourceDiskID: 4, 270 }, 271 { 272 ID: 4, 273 SourceArchiveID: 6, 274 }, 275 }, 276 }, 277 ArchiveReader: &dummyArchiveReader{ 278 archives: []*iaas.Archive{ 279 { 280 ID: 5, 281 SourceDiskID: 3, 282 }, 283 { 284 ID: 6, 285 SourceArchiveID: 7, 286 }, 287 { 288 ID: 7, 289 Scope: types.Scopes.Shared, 290 Tags: types.Tags{"distro-ubuntu"}, 291 }, 292 }, 293 }, 294 }, 295 expectedValue: "ubuntu", 296 expectedErr: nil, 297 }, 298 } 299 300 for _, tc := range cases { 301 actual, err := ServerDefaultUserName(context.Background(), "tk1v", tc.reader, tc.id) 302 if tc.expectedErr != nil { 303 require.Equal(t, tc.expectedErr, err, tc.msg) 304 } else { 305 require.NoError(t, err, tc.msg) 306 } 307 require.Equal(t, tc.expectedValue, actual, tc.msg) 308 } 309 }