104 lines
2.2 KiB
Go
104 lines
2.2 KiB
Go
|
package module
|
||
|
|
||
|
// import (
|
||
|
// "context"
|
||
|
// "io/ioutil"
|
||
|
// "testing"
|
||
|
// "time"
|
||
|
|
||
|
// "forge.cadoles.com/arcad/edge/pkg/app"
|
||
|
// "forge.cadoles.com/arcad/edge/pkg/bus/memory"
|
||
|
// )
|
||
|
|
||
|
// func TestAuthorizationModule(t *testing.T) {
|
||
|
// t.Parallel()
|
||
|
|
||
|
// testAppID := app.ID("test-app")
|
||
|
|
||
|
// b := memory.NewBus()
|
||
|
|
||
|
// backend := app.NewServer(testAppID,
|
||
|
// ConsoleModuleFactory(),
|
||
|
// AuthorizationModuleFactory(b),
|
||
|
// )
|
||
|
|
||
|
// data, err := ioutil.ReadFile("testdata/authorization.js")
|
||
|
// if err != nil {
|
||
|
// t.Fatal(err)
|
||
|
// }
|
||
|
|
||
|
// if err := backend.Load(string(data)); err != nil {
|
||
|
// t.Fatal(err)
|
||
|
// }
|
||
|
|
||
|
// backend.Start()
|
||
|
// defer backend.Stop()
|
||
|
|
||
|
// if err := backend.OnInit(); err != nil {
|
||
|
// t.Error(err)
|
||
|
// }
|
||
|
|
||
|
// // Test non connected user
|
||
|
|
||
|
// retValue, err := backend.ExecFuncByName("isAdmin", testUserID)
|
||
|
// if err != nil {
|
||
|
// t.Error(err)
|
||
|
// }
|
||
|
|
||
|
// isAdmin := retValue.ToBoolean()
|
||
|
|
||
|
// if e, g := false, isAdmin; e != g {
|
||
|
// t.Errorf("isAdmin: expected '%v', got '%v'", e, g)
|
||
|
// }
|
||
|
|
||
|
// // Test user connection as normal user
|
||
|
|
||
|
// ctx := context.Background()
|
||
|
|
||
|
// b.Publish(ctx, NewMessageUserConnected(testAppID, testUserID, false))
|
||
|
// time.Sleep(2 * time.Second)
|
||
|
|
||
|
// retValue, err = backend.ExecFuncByName("isAdmin", testUserID)
|
||
|
// if err != nil {
|
||
|
// t.Error(err)
|
||
|
// }
|
||
|
|
||
|
// isAdmin = retValue.ToBoolean()
|
||
|
|
||
|
// if e, g := false, isAdmin; e != g {
|
||
|
// t.Errorf("isAdmin: expected '%v', got '%v'", e, g)
|
||
|
// }
|
||
|
|
||
|
// // Test user connection as admin
|
||
|
|
||
|
// b.Publish(ctx, NewMessageUserConnected(testAppID, testUserID, true))
|
||
|
// time.Sleep(2 * time.Second)
|
||
|
|
||
|
// retValue, err = backend.ExecFuncByName("isAdmin", testUserID)
|
||
|
// if err != nil {
|
||
|
// t.Error(err)
|
||
|
// }
|
||
|
|
||
|
// isAdmin = retValue.ToBoolean()
|
||
|
|
||
|
// if e, g := true, isAdmin; e != g {
|
||
|
// t.Errorf("isAdmin: expected '%v', got '%v'", e, g)
|
||
|
// }
|
||
|
|
||
|
// // Test user disconnection
|
||
|
|
||
|
// b.Publish(ctx, NewMessageUserDisconnected(testAppID, testUserID))
|
||
|
// time.Sleep(2 * time.Second)
|
||
|
|
||
|
// retValue, err = backend.ExecFuncByName("isAdmin", testUserID)
|
||
|
// if err != nil {
|
||
|
// t.Error(err)
|
||
|
// }
|
||
|
|
||
|
// isAdmin = retValue.ToBoolean()
|
||
|
|
||
|
// if e, g := false, isAdmin; e != g {
|
||
|
// t.Errorf("isAdmin: expected '%v', got '%v'", e, g)
|
||
|
// }
|
||
|
// }
|