networkuser_test.go 3.2 KB

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