6cf84c4f6c
Remotes store `quarantine_enabled`/`quarantine_days` but the proxy never enforces them, so freshly published (possibly malicious) artifacts are cached immediately. - refuse uncached immutable paths published under `quarantine_days` ago with a JSON 403 - take publish time from `Last-Modified` capped at now, else a Redis first-seen key; 503 + `Retry-After` when that lookup fails - reject enabled quarantine with `quarantine_days<1`; backfill stored `<=0` to 3 - default `quarantine_days` to 3 on create and keep it on update - let goproxy virtual probes skip a quarantining member Reviewed-on: #170 Co-authored-by: unkin-agent <unkin-agent@unkin.net> Co-committed-by: unkin-agent <unkin-agent@unkin.net>
17 lines
439 B
Go
17 lines
439 B
Go
package v1
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"git.unkin.net/unkin/artifactapi/internal/proxy"
|
|
)
|
|
|
|
func TestWriteProxyErrorRetryAfter(t *testing.T) {
|
|
w := httptest.NewRecorder()
|
|
writeProxyError(w, &proxy.ProxyError{Status: 503, Message: "quarantine check unavailable", RetryAfter: 30})
|
|
if w.Code != 503 || w.Header().Get("Retry-After") != "30" {
|
|
t.Errorf("code %d, Retry-After %q", w.Code, w.Header().Get("Retry-After"))
|
|
}
|
|
}
|