networkuser_test.go 3.1 KB

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