MCPcopy
hub / github.com/nektos/act / uploadCacheNormally

Function uploadCacheNormally

pkg/artifactcache/handler_test.go:531–588  ·  view source on GitHub ↗
(t *testing.T, base, key, version string, content []byte)

Source from the content-addressed store, hash-verified

529}
530
531func uploadCacheNormally(t *testing.T, base, key, version string, content []byte) {
532 var id uint64
533 {
534 body, err := json.Marshal(&Request{
535 Key: key,
536 Version: version,
537 Size: int64(len(content)),
538 })
539 require.NoError(t, err)
540 resp, err := http.Post(fmt.Sprintf("%s/caches", base), "application/json", bytes.NewReader(body))
541 require.NoError(t, err)
542 assert.Equal(t, 200, resp.StatusCode)
543
544 got := struct {
545 CacheID uint64 `json:"cacheId"`
546 }{}
547 require.NoError(t, json.NewDecoder(resp.Body).Decode(&got))
548 id = got.CacheID
549 }
550 {
551 req, err := http.NewRequest(http.MethodPatch,
552 fmt.Sprintf("%s/caches/%d", base, id), bytes.NewReader(content))
553 require.NoError(t, err)
554 req.Header.Set("Content-Type", "application/octet-stream")
555 req.Header.Set("Content-Range", "bytes 0-99/*")
556 resp, err := http.DefaultClient.Do(req)
557 require.NoError(t, err)
558 assert.Equal(t, 200, resp.StatusCode)
559 }
560 {
561 resp, err := http.Post(fmt.Sprintf("%s/caches/%d", base, id), "", nil)
562 require.NoError(t, err)
563 assert.Equal(t, 200, resp.StatusCode)
564 }
565 var archiveLocation string
566 {
567 resp, err := http.Get(fmt.Sprintf("%s/cache?keys=%s&version=%s", base, key, version))
568 require.NoError(t, err)
569 require.Equal(t, 200, resp.StatusCode)
570 got := struct {
571 Result string `json:"result"`
572 ArchiveLocation string `json:"archiveLocation"`
573 CacheKey string `json:"cacheKey"`
574 }{}
575 require.NoError(t, json.NewDecoder(resp.Body).Decode(&got))
576 assert.Equal(t, "hit", got.Result)
577 assert.Equal(t, strings.ToLower(key), got.CacheKey)
578 archiveLocation = got.ArchiveLocation
579 }
580 {
581 resp, err := http.Get(archiveLocation) //nolint:gosec
582 require.NoError(t, err)
583 require.Equal(t, 200, resp.StatusCode)
584 got, err := io.ReadAll(resp.Body)
585 require.NoError(t, err)
586 assert.Equal(t, content, got)
587 }
588}

Callers 2

TestHandlerFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…