@@ -31,6 +31,7 @@ import (
3131 _ "embed"
3232
3333 "github.com/h2non/gock"
34+ "github.com/linuxsuren/api-testing/pkg/mock"
3435 atest "github.com/linuxsuren/api-testing/pkg/testing"
3536 "github.com/linuxsuren/api-testing/pkg/util"
3637 "github.com/linuxsuren/api-testing/sample"
@@ -966,6 +967,10 @@ func getRemoteServerInTempDir() (server RunnerServer, call func()) {
966967 os .MkdirAll (themePath , 0755 )
967968 os .WriteFile (filepath .Join (themePath , "simple.json" ), []byte (simplePostman ), 0755 )
968969
970+ bindinPath := filepath .Join (dir , "data" , "key-binding" )
971+ os .MkdirAll (bindinPath , 0755 )
972+ os .WriteFile (filepath .Join (bindinPath , "default.json" ), binding , 0755 )
973+
969974 writer := atest .NewFileWriter (dir )
970975 server = NewRemoteServer (writer , newLocalloaderFromStore (), nil , nil , dir , 1024 * 1024 * 4 )
971976 return
@@ -992,6 +997,9 @@ var simpleTestCase string
992997//go:embed testdata/postman.json
993998var simplePostman string
994999
1000+ //go:embed testdata/keybinding.json
1001+ var binding []byte
1002+
9951003const urlFoo = "http://foo"
9961004
9971005type fakeServerStream struct {
@@ -1079,4 +1087,113 @@ func TestGetThemes(t *testing.T) {
10791087 })
10801088 assert .NoError (t , err )
10811089 assert .NotNil (t , theme )
1090+
1091+ theme , err = themeServer .GetTheme (context .Background (), & SimpleName {
1092+ Name : "not-exist" ,
1093+ })
1094+ assert .Error (t , err )
1095+ assert .False (t , theme .Success )
1096+ }
1097+
1098+ func TestKeybinding (t * testing.T ) {
1099+ server , clean := getRemoteServerInTempDir ()
1100+ defer clean ()
1101+
1102+ themeServer , ok := server .(ThemeExtensionServer )
1103+ assert .True (t , ok )
1104+
1105+ reply , err := themeServer .GetBindings (context .Background (), & Empty {})
1106+ assert .NoError (t , err )
1107+ assert .Equal (t , 1 , len (reply .Data ))
1108+
1109+ var theme * CommonResult
1110+ theme , err = themeServer .GetBinding (context .Background (), & SimpleName {
1111+ Name : "default" ,
1112+ })
1113+ assert .NoError (t , err )
1114+ assert .NotNil (t , theme )
1115+
1116+ theme , err = themeServer .GetBinding (context .Background (), & SimpleName {
1117+ Name : "not-exist" ,
1118+ })
1119+ assert .Error (t , err )
1120+ assert .False (t , theme .Success )
1121+ }
1122+
1123+ func TestMockServer (t * testing.T ) {
1124+ loader := mock .NewInMemoryServer (context .Background (), 0 )
1125+ loader .SetupHandler (mock .NewInMemoryReader ("" ), "/" )
1126+ mockServer := NewMockServerController (nil , loader , 0 )
1127+
1128+ t .Run ("reload as unsupported kind" , func (t * testing.T ) {
1129+ _ , err := mockServer .Reload (context .Background (), & MockConfig {})
1130+ assert .Error (t , err )
1131+ })
1132+
1133+ t .Run ("reload as memory kind" , func (t * testing.T ) {
1134+ _ , err := mockServer .Reload (context .Background (), & MockConfig {
1135+ StoreKind : "memory" ,
1136+ })
1137+ assert .NoError (t , err )
1138+ })
1139+
1140+ t .Run ("reload as localFile kind, but file is empty" , func (t * testing.T ) {
1141+ _ , err := mockServer .Reload (context .Background (), & MockConfig {
1142+ StoreKind : "localFile" ,
1143+ })
1144+ assert .Error (t , err )
1145+ })
1146+
1147+ t .Run ("reload as localFile kind, invalid file" , func (t * testing.T ) {
1148+ _ , err := mockServer .Reload (context .Background (), & MockConfig {
1149+ StoreKind : "localFile" ,
1150+ StoreLocalFile : "testdata/simple.yaml" ,
1151+ })
1152+ assert .Error (t , err )
1153+ })
1154+
1155+ t .Run ("reload as localFile kind" , func (t * testing.T ) {
1156+ _ , err := mockServer .Reload (context .Background (), & MockConfig {
1157+ StoreKind : "localFile" ,
1158+ StoreLocalFile : "testdata/simple_mock.yaml" ,
1159+ })
1160+ assert .NoError (t , err )
1161+
1162+ config , err := mockServer .GetConfig (context .Background (), & Empty {})
1163+ assert .NoError (t , err )
1164+ assert .Equal (t , "localFile" , config .StoreKind )
1165+ })
1166+ }
1167+
1168+ func TestUIExtension (t * testing.T ) {
1169+ server , clean := getRemoteServerInTempDir ()
1170+ defer clean ()
1171+
1172+ uiServer , ok := server .(UIExtensionServer )
1173+ assert .True (t , ok )
1174+ assert .NotNil (t , uiServer )
1175+
1176+ ctx := context .Background ()
1177+ menuList , err := uiServer .GetMenus (ctx , & Empty {})
1178+ assert .NoError (t , err )
1179+ assert .Equal (t , 0 , len (menuList .Data ))
1180+
1181+ result , _ := uiServer .GetPageOfJS (ctx , & SimpleName {Name : "name" })
1182+ assert .False (t , result .Success )
1183+
1184+ result , _ = uiServer .GetPageOfCSS (ctx , & SimpleName {Name : "name" })
1185+ assert .False (t , result .Success )
1186+
1187+ result , _ = uiServer .GetPageOfStatic (ctx , & SimpleName {Name : "name" })
1188+ assert .False (t , result .Success )
1189+
1190+ result , _ = uiServer .GetPageOfStatic (
1191+ context .WithValue (ctx , "X-Extension-Name" , "fake" ),
1192+ & SimpleName {Name : "name" })
1193+ assert .False (t , result .Success )
1194+
1195+ result , _ = uiServer .GetPageOfStatic (
1196+ context .WithValue (ctx , "X-Extension-Name" , []string {"fake" }),
1197+ & SimpleName {Name : "name" })
1198+ assert .False (t , result .Success )
10821199}
0 commit comments