(t *testing.T, imageName string)
| 1158 | } |
| 1159 | |
| 1160 | func buildTestBackup(t *testing.T, imageName string) []byte { |
| 1161 | t.Helper() |
| 1162 | |
| 1163 | appSettings := docker.ApplicationSettings{ |
| 1164 | Name: "hookapp", |
| 1165 | Image: imageName, |
| 1166 | Host: "hookapp.localhost", |
| 1167 | } |
| 1168 | volSettings := docker.ApplicationVolumeSettings{SecretKeyBase: "test-secret-key"} |
| 1169 | |
| 1170 | var buf bytes.Buffer |
| 1171 | gw := gzip.NewWriter(&buf) |
| 1172 | tw := tar.NewWriter(gw) |
| 1173 | |
| 1174 | writeEntry := func(name string, data []byte) { |
| 1175 | header := &tar.Header{Name: name, Size: int64(len(data)), Mode: 0644} |
| 1176 | require.NoError(t, tw.WriteHeader(header)) |
| 1177 | _, err := tw.Write(data) |
| 1178 | require.NoError(t, err) |
| 1179 | } |
| 1180 | |
| 1181 | writeEntry("once.application.json", []byte(appSettings.Marshal())) |
| 1182 | writeEntry("once.volume.json", []byte(volSettings.Marshal())) |
| 1183 | |
| 1184 | // Add data directory with a marker file for hook testing. |
| 1185 | // Use UID/GID 1000 to match realistic backup ownership. |
| 1186 | require.NoError(t, tw.WriteHeader(&tar.Header{ |
| 1187 | Name: "data/", |
| 1188 | Typeflag: tar.TypeDir, |
| 1189 | Mode: 0755, |
| 1190 | Uid: 1000, |
| 1191 | Gid: 1000, |
| 1192 | })) |
| 1193 | require.NoError(t, tw.WriteHeader(&tar.Header{ |
| 1194 | Name: "data/hook-input", |
| 1195 | Mode: 0644, |
| 1196 | Size: int64(len("test data")), |
| 1197 | Uid: 1000, |
| 1198 | Gid: 1000, |
| 1199 | })) |
| 1200 | _, writeErr := tw.Write([]byte("test data")) |
| 1201 | require.NoError(t, writeErr) |
| 1202 | |
| 1203 | require.NoError(t, tw.Close()) |
| 1204 | require.NoError(t, gw.Close()) |
| 1205 | |
| 1206 | return buf.Bytes() |
| 1207 | } |
| 1208 | |
| 1209 | func inspectContainerEnv(t *testing.T, ctx context.Context, name string) []string { |
| 1210 | t.Helper() |
no test coverage detected
searching dependent graphs…