networkuser_test.go 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package pro
  2. import (
  3. "testing"
  4. "github.com/gravitl/netmaker/database"
  5. "github.com/gravitl/netmaker/models"
  6. "github.com/gravitl/netmaker/models/promodels"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestNetworkUserLogic(t *testing.T) {
  10. database.InitializeDatabase()
  11. networkUser := promodels.NetworkUser{
  12. ID: "helloworld",
  13. }
  14. network := models.Network{
  15. NetID: "skynet",
  16. AddressRange: "192.168.0.0/24",
  17. }
  18. nodes := []models.Node{
  19. models.Node{ID: "coolnode"},
  20. }
  21. clients := []models.ExtClient{
  22. models.ExtClient{
  23. ClientID: "coolclient",
  24. },
  25. }
  26. AddProNetDefaults(&network)
  27. t.Run("Net Users initialized successfully", func(t *testing.T) {
  28. err := InitializeNetworkUsers(network.NetID)
  29. assert.Nil(t, err)
  30. })
  31. t.Run("Error when no network users", func(t *testing.T) {
  32. user, err := GetNetworkUser(network.NetID, networkUser.ID)
  33. assert.Nil(t, user)
  34. assert.NotNil(t, err)
  35. })
  36. t.Run("Successful net user create", func(t *testing.T) {
  37. DeleteNetworkUser(network.NetID, string(networkUser.ID))
  38. err := CreateNetworkUser(&network, &networkUser)
  39. assert.Nil(t, err)
  40. user, err := GetNetworkUser(network.NetID, networkUser.ID)
  41. assert.NotNil(t, user)
  42. assert.Nil(t, err)
  43. assert.Equal(t, 0, user.AccessLevel)
  44. assert.Equal(t, 0, user.ClientLimit)
  45. })
  46. t.Run("Successful net user update", func(t *testing.T) {
  47. networkUser.AccessLevel = 0
  48. networkUser.ClientLimit = 1
  49. err := UpdateNetworkUser(network.NetID, &networkUser)
  50. assert.Nil(t, err)
  51. user, err := GetNetworkUser(network.NetID, networkUser.ID)
  52. assert.NotNil(t, user)
  53. assert.Nil(t, err)
  54. assert.Equal(t, 0, user.AccessLevel)
  55. assert.Equal(t, 1, user.ClientLimit)
  56. })
  57. t.Run("Successful net user node isallowed", func(t *testing.T) {
  58. networkUser.Nodes = append(networkUser.Nodes, "coolnode")
  59. err := UpdateNetworkUser(network.NetID, &networkUser)
  60. assert.Nil(t, err)
  61. isUserNodeAllowed := IsUserNodeAllowed(nodes[:], network.NetID, string(networkUser.ID), "coolnode")
  62. assert.True(t, isUserNodeAllowed)
  63. })
  64. t.Run("Successful net user node not allowed", func(t *testing.T) {
  65. isUserNodeAllowed := IsUserNodeAllowed(nodes[:], network.NetID, string(networkUser.ID), "notanode")
  66. assert.False(t, isUserNodeAllowed)
  67. })
  68. t.Run("Successful net user client isallowed", func(t *testing.T) {
  69. networkUser.Clients = append(networkUser.Clients, "coolclient")
  70. err := UpdateNetworkUser(network.NetID, &networkUser)
  71. assert.Nil(t, err)
  72. isUserClientAllowed := IsUserClientAllowed(clients[:], network.NetID, string(networkUser.ID), "coolclient")
  73. assert.True(t, isUserClientAllowed)
  74. })
  75. t.Run("Successful net user client not allowed", func(t *testing.T) {
  76. isUserClientAllowed := IsUserClientAllowed(clients[:], network.NetID, string(networkUser.ID), "notaclient")
  77. assert.False(t, isUserClientAllowed)
  78. })
  79. t.Run("Successful net user delete", func(t *testing.T) {
  80. err := DeleteNetworkUser(network.NetID, string(networkUser.ID))
  81. assert.Nil(t, err)
  82. user, err := GetNetworkUser(network.NetID, networkUser.ID)
  83. assert.Nil(t, user)
  84. assert.NotNil(t, err)
  85. })
  86. }