networkuser_test.go 3.2 KB

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