Skip to content

Commit

Permalink
feat: test redirects file and if-none-match header
Browse files Browse the repository at this point in the history
  • Loading branch information
hacdias authored and laurentsenta committed Sep 18, 2023
1 parent 965962a commit b18e05d
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 4 deletions.
22 changes: 21 additions & 1 deletion fixtures/redirects_file/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,24 @@ See comments in the yml file.

### [redirects.car](./redirects.car)

Fixtures based on [specs.ipfs.tech/http-gateways/web-redirects-file/#test-fixtures](https://specs.ipfs.tech/http-gateways/web-redirects-file/#test-fixtures) and [IPIP-0002](https://specs.ipfs.tech/ipips/ipip-0002/)
Fixtures based on [specs.ipfs.tech/http-gateways/web-redirects-file/#test-fixtures](https://specs.ipfs.tech/http-gateways/web-redirects-file/#test-fixtures) and [IPIP-0002](https://specs.ipfs.tech/ipips/ipip-0002/)

### [redirects-spa.car](./redirects-spa.car)

```sh
ipfs version
# ipfs version 0.22.0
REDIRECTS=$(cat <<-EOF
# Map SPA routes to the main index HTML file.
/* /index.html 200
EOF
)
REDIRECTS_CID=$(echo $REDIRECTS | ipfs add --cid-version=1 -q)
HELLO_CID=$(echo "hello world" | ipfs add --cid-version=1 -q)
ipfs files mkdir -p --cid-version 1 /redirects-spa
ipfs files cp /ipfs/$REDIRECTS_CID "/redirects-spa/_redirects"
ipfs files cp /ipfs/$HELLO_CID "/redirects-spa/index.html"
ipfs files ls -l
# Manually CID of "redirects-spa" and then...
ipfs dag export $CID
```
9 changes: 6 additions & 3 deletions fixtures/redirects_file/dnslink.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
dnslinks:
custom-dnslink:
subdomain: dnslink-enabled-on-fqdn
# this is the cid of the folder
# ./redirects.car:/examples/
path: /ipfs/QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj
# cid of ./redirects.car:/examples/
path: /ipfs/QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj
dnslink-spa:
subdomain: dnslink-enabled-with-spa
# cid of ./redirects-spa.car
path: /ipfs/bafybeib5lboymwd6p2eo4qb2lkueaine577flvsjjeuevmp2nlio72xv5q
Binary file added fixtures/redirects_file/redirects-spa.car
Binary file not shown.
52 changes: 52 additions & 0 deletions tests/redirects_file_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,3 +283,55 @@ func TestRedirectsFileSupportWithDNSLink(t *testing.T) {

RunWithSpecs(t, helpers.UnwrapSubdomainTests(t, tests), specs.DNSLinkGateway, specs.RedirectsFile)
}

func TestRedirectsFileWithIfNoneMatchHeader(t *testing.T) {
fixture := car.MustOpenUnixfsCar("redirects_file/redirects-spa.car")

dnsLinks := dnslink.MustOpenDNSLink("redirects_file/dnslink.yml")
dnsLink := dnsLinks.MustGet("dnslink-spa")

gatewayURL := SubdomainGatewayURL
u, err := url.Parse(gatewayURL)
if err != nil {
t.Fatal(err)
}

pageURL := Fmt("{{scheme}}://{{dnslink}}.{{host}}/missing-page", u.Scheme, dnsLink, u.Host)

var etag string

RunWithSpecs(t, helpers.UnwrapSubdomainTests(t, SugarTests{
{
Name: "request for $DNSLINK_FQDN/missing-page returns body of index.html as per _redirects",
Request: Request().
URL(pageURL).
Headers(
Header("Accept", "text/html"),
),
Response: Expect().
Status(200).
Headers(
Header("Etag").
Checks(func(v string) bool {
etag = v
return v != ""
}),
).
Body(fixture.MustGetRawData("index.html")),
},
}), specs.DNSLinkGateway, specs.RedirectsFile)

RunWithSpecs(t, helpers.UnwrapSubdomainTests(t, SugarTests{
{
Name: "request for $DNSLINK_FQDN/missing-page with If-None-Match returns 301",
Request: Request().
URL(pageURL).
Headers(
Header("Accept", "text/html"),
Header("If-None-Match", etag),
),
Response: Expect().
Status(304),
},
}), specs.DNSLinkGateway, specs.RedirectsFile)
}

0 comments on commit b18e05d

Please sign in to comment.