7
7
"fmt"
8
8
"errors"
9
9
"encoding/json"
10
+ "strings"
10
11
)
11
12
12
13
func mockRegistryForReroute (registry , project , asset string ) error {
@@ -739,6 +740,15 @@ func TestRerouteLinksForVersion(t *testing.T) {
739
740
}
740
741
741
742
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
+
742
752
t .Run ("basic" , func (t * testing.T ) {
743
753
registry , err := os .MkdirTemp ("" , "" )
744
754
if err != nil {
@@ -758,12 +768,7 @@ func TestRerouteLinksHandler(t *testing.T) {
758
768
}
759
769
760
770
globals := newGlobalConfiguration (registry )
761
- self , err := identifyUser (registry )
762
- if err != nil {
763
- t .Fatalf ("failed to identify self; %v" , err )
764
- }
765
771
globals .Administrators = append (globals .Administrators , self )
766
-
767
772
err = rerouteLinksHandler (reqpath , & globals )
768
773
if err != nil {
769
774
t .Fatal (err )
@@ -830,12 +835,7 @@ func TestRerouteLinksHandler(t *testing.T) {
830
835
}
831
836
832
837
globals := newGlobalConfiguration (registry )
833
- self , err := identifyUser (registry )
834
- if err != nil {
835
- t .Fatalf ("failed to identify self; %v" , err )
836
- }
837
838
globals .Administrators = append (globals .Administrators , self )
838
-
839
839
err = rerouteLinksHandler (reqpath , & globals )
840
840
if err != nil {
841
841
t .Fatal (err )
@@ -885,4 +885,67 @@ func TestRerouteLinksHandler(t *testing.T) {
885
885
}
886
886
}
887
887
})
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
+ })
888
951
}
0 commit comments