|
4 | 4 | package storage
|
5 | 5 |
|
6 | 6 | import (
|
| 7 | + "bytes" |
| 8 | + "io" |
7 | 9 | "os"
|
8 | 10 | "testing"
|
9 | 11 |
|
@@ -54,3 +56,46 @@ func TestAzureBlobStoragePath(t *testing.T) {
|
54 | 56 | assert.Equal(t, "base/a", m.buildAzureBlobPath("/a"))
|
55 | 57 | assert.Equal(t, "base/a/b", m.buildAzureBlobPath("/a/b/"))
|
56 | 58 | }
|
| 59 | + |
| 60 | +func Test_azureBlobObject(t *testing.T) { |
| 61 | + if os.Getenv("CI") == "" { |
| 62 | + t.Skip("azureBlobStorage not present outside of CI") |
| 63 | + return |
| 64 | + } |
| 65 | + |
| 66 | + s, err := NewStorage(setting.AzureBlobStorageType, &setting.Storage{ |
| 67 | + AzureBlobConfig: setting.AzureBlobStorageConfig{ |
| 68 | + // https://learn.microsoft.com/azure/storage/common/storage-use-azurite?tabs=visual-studio-code#ip-style-url |
| 69 | + Endpoint: "http://devstoreaccount1.azurite.local:10000", |
| 70 | + // https://learn.microsoft.com/azure/storage/common/storage-use-azurite?tabs=visual-studio-code#well-known-storage-account-and-key |
| 71 | + AccountName: "devstoreaccount1", |
| 72 | + AccountKey: "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==", |
| 73 | + Container: "test", |
| 74 | + }, |
| 75 | + }) |
| 76 | + assert.NoError(t, err) |
| 77 | + |
| 78 | + data := "Q2xTckt6Y1hDOWh0" |
| 79 | + _, err = s.Save("test.txt", bytes.NewBufferString(data), int64(len(data))) |
| 80 | + assert.NoError(t, err) |
| 81 | + obj, err := s.Open("test.txt") |
| 82 | + assert.NoError(t, err) |
| 83 | + offset, err := obj.Seek(2, io.SeekStart) |
| 84 | + assert.NoError(t, err) |
| 85 | + assert.EqualValues(t, 2, offset) |
| 86 | + buf1 := make([]byte, 3) |
| 87 | + read, err := obj.Read(buf1) |
| 88 | + assert.NoError(t, err) |
| 89 | + assert.EqualValues(t, 3, read) |
| 90 | + assert.Equal(t, data[2:5], string(buf1)) |
| 91 | + offset, err = obj.Seek(-5, io.SeekEnd) |
| 92 | + assert.NoError(t, err) |
| 93 | + assert.EqualValues(t, len(data)-5, offset) |
| 94 | + buf2 := make([]byte, 4) |
| 95 | + read, err = obj.Read(buf2) |
| 96 | + assert.NoError(t, err) |
| 97 | + assert.EqualValues(t, 4, read) |
| 98 | + assert.Equal(t, data[11:15], string(buf2)) |
| 99 | + assert.NoError(t, obj.Close()) |
| 100 | + assert.NoError(t, s.Delete("test.txt")) |
| 101 | +} |
0 commit comments