()
| 275 | const testBucket = "test-bucket" |
| 276 | |
| 277 | func (s *testSuite) SetupTest() { |
| 278 | s.minio = newMinioInstance(s.T()) |
| 279 | location := fmt.Sprintf("http://%s/%s", s.minio.ConnectionString(s.T()), testBucket) |
| 280 | |
| 281 | // Create backend |
| 282 | backend, err := NewBackend(&Credentials{ |
| 283 | AccessKeyID: "root", |
| 284 | SecretAccessKey: "test-password", |
| 285 | Region: "us-east-1", |
| 286 | Location: location, |
| 287 | }) |
| 288 | require.NoError(s.T(), err) |
| 289 | s.backend = backend |
| 290 | |
| 291 | invalidBackend, err := NewBackend(&Credentials{ |
| 292 | AccessKeyID: "root", |
| 293 | SecretAccessKey: "wrong-password", |
| 294 | Region: "us-east-1", |
| 295 | BucketName: testBucket, |
| 296 | Location: location, |
| 297 | }) |
| 298 | |
| 299 | require.NoError(s.T(), err) |
| 300 | s.invalidBackend = invalidBackend |
| 301 | |
| 302 | // create bucket |
| 303 | minioClient, err := minio.New(s.minio.ConnectionString(s.T()), &minio.Options{ |
| 304 | Creds: credentials.NewStaticV4("root", "test-password", ""), Secure: false, |
| 305 | }) |
| 306 | require.NoError(s.T(), err) |
| 307 | require.NoError(s.T(), minioClient.MakeBucket(context.TODO(), testBucket, minio.MakeBucketOptions{})) |
| 308 | |
| 309 | // upload a valid artifact |
| 310 | buf := bytes.NewBuffer([]byte("test")) |
| 311 | s.ownedObjectDigest = fmt.Sprintf("%x", sha256.Sum256(buf.Bytes())) |
| 312 | // calculate sha256 of the content in the buffer |
| 313 | err = s.backend.Upload(context.Background(), buf, &pb.CASResource{Digest: s.ownedObjectDigest, FileName: "test.txt"}) |
| 314 | require.NoError(s.T(), err) |
| 315 | |
| 316 | // Copy an existing object but reference it from somewhere else |
| 317 | s.tamperedObjectDigest = "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" |
| 318 | _, err = minioClient.CopyObject(context.Background(), minio.CopyDestOptions{ |
| 319 | Bucket: testBucket, Object: fmt.Sprintf("sha256:%s", s.tamperedObjectDigest), |
| 320 | }, minio.CopySrcOptions{ |
| 321 | Bucket: testBucket, Object: fmt.Sprintf("sha256:%s", s.ownedObjectDigest), |
| 322 | }) |
| 323 | require.NoError(s.T(), err) |
| 324 | |
| 325 | // upload another one but by the client directly |
| 326 | reader := bytes.NewReader([]byte("hello world")) |
| 327 | s.externalObjectDigest = "external-deadbeef" |
| 328 | _, err = minioClient.PutObject(context.Background(), testBucket, fmt.Sprintf("sha256:%s", s.externalObjectDigest), reader, reader.Size(), |
| 329 | minio.PutObjectOptions{}) |
| 330 | require.NoError(s.T(), err) |
| 331 | } |
| 332 | |
| 333 | func (s *testSuite) TearDownTest() { |
| 334 | if s.minio == nil { |
nothing calls this directly
no test coverage detected