Skip to content

Commit 5e9b2ca

Browse files
committed
Finished up the handler tests.
1 parent 597c08a commit 5e9b2ca

File tree

1 file changed

+73
-10
lines changed

1 file changed

+73
-10
lines changed

reroute_test.go

+73-10
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"errors"
99
"encoding/json"
10+
"strings"
1011
)
1112

1213
func mockRegistryForReroute(registry, project, asset string) error {
@@ -739,6 +740,15 @@ func TestRerouteLinksForVersion(t *testing.T) {
739740
}
740741

741742
func TestRerouteLinksHandler(t *testing.T) {
743+
mock, err := os.MkdirTemp("", "")
744+
if err != nil {
745+
t.Fatalf("failed to create a mock temp directory; %v", err)
746+
}
747+
self, err := identifyUser(mock)
748+
if err != nil {
749+
t.Fatalf("failed to identify self; %v", err)
750+
}
751+
742752
t.Run("basic", func(t *testing.T) {
743753
registry, err := os.MkdirTemp("", "")
744754
if err != nil {
@@ -758,12 +768,7 @@ func TestRerouteLinksHandler(t *testing.T) {
758768
}
759769

760770
globals := newGlobalConfiguration(registry)
761-
self, err := identifyUser(registry)
762-
if err != nil {
763-
t.Fatalf("failed to identify self; %v", err)
764-
}
765771
globals.Administrators = append(globals.Administrators, self)
766-
767772
err = rerouteLinksHandler(reqpath, &globals)
768773
if err != nil {
769774
t.Fatal(err)
@@ -830,12 +835,7 @@ func TestRerouteLinksHandler(t *testing.T) {
830835
}
831836

832837
globals := newGlobalConfiguration(registry)
833-
self, err := identifyUser(registry)
834-
if err != nil {
835-
t.Fatalf("failed to identify self; %v", err)
836-
}
837838
globals.Administrators = append(globals.Administrators, self)
838-
839839
err = rerouteLinksHandler(reqpath, &globals)
840840
if err != nil {
841841
t.Fatal(err)
@@ -885,4 +885,67 @@ func TestRerouteLinksHandler(t *testing.T) {
885885
}
886886
}
887887
})
888+
889+
t.Run("unauthorized", func(t *testing.T) {
890+
registry, err := os.MkdirTemp("", "")
891+
if err != nil {
892+
t.Fatalf("failed to create the temporary directory; %v", err)
893+
}
894+
895+
project := "ARIA"
896+
asset := "anime"
897+
err = mockRegistryForReroute(registry, project, asset)
898+
if err != nil {
899+
t.Fatal(err)
900+
}
901+
902+
reqpath, err := dumpRequest("reroute_links", `[ { "project": "ARIA" } ]`)
903+
if err != nil {
904+
t.Fatalf("failed to dump a request type; %v", err)
905+
}
906+
907+
globals := newGlobalConfiguration(registry)
908+
err = rerouteLinksHandler(reqpath, &globals)
909+
if err == nil || !strings.Contains(err.Error(), "not authorized") {
910+
t.Error("unexpected authorization for non-admin")
911+
}
912+
})
913+
914+
t.Run("bad request", func(t *testing.T) {
915+
registry, err := os.MkdirTemp("", "")
916+
if err != nil {
917+
t.Fatalf("failed to create the temporary directory; %v", err)
918+
}
919+
920+
project := "ARIA"
921+
asset := "anime"
922+
err = mockRegistryForReroute(registry, project, asset)
923+
if err != nil {
924+
t.Fatal(err)
925+
}
926+
927+
reqpath, err := dumpRequest("reroute_links", `[ { "project": "" } ]`)
928+
if err != nil {
929+
t.Fatalf("failed to dump a request type; %v", err)
930+
}
931+
932+
globals := newGlobalConfiguration(registry)
933+
globals.Administrators = append(globals.Administrators, self)
934+
err = rerouteLinksHandler(reqpath, &globals)
935+
if err == nil || !strings.Contains(err.Error(), "invalid 'project'") {
936+
t.Error("expected failure from invalid project")
937+
}
938+
939+
reqpath, err = dumpRequest("reroute_links", `[ { "project": "ARIA", "asset": "" } ]`)
940+
err = rerouteLinksHandler(reqpath, &globals)
941+
if err == nil || !strings.Contains(err.Error(), "invalid 'asset'") {
942+
t.Error("expected failure from invalid asset")
943+
}
944+
945+
reqpath, err = dumpRequest("reroute_links", `[ { "project": "ARIA", "asset": "anime", "version": "" } ]`)
946+
err = rerouteLinksHandler(reqpath, &globals)
947+
if err == nil || !strings.Contains(err.Error(), "invalid 'version'") {
948+
t.Error("expected failure from invalid version")
949+
}
950+
})
888951
}

0 commit comments

Comments
 (0)