/engine/api/project/dao_variable_test.go

https://github.com/ovh/cds · Go · 110 lines · 83 code · 27 blank · 0 comment · 4 complexity · fe54f603d76b8724eb7259c2b746fea7 MD5 · raw file

  1. package project_test
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/ovh/cds/sdk"
  6. "github.com/ovh/cds/engine/api/project"
  7. "github.com/ovh/cds/engine/api/test"
  8. "github.com/ovh/cds/engine/api/test/assets"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/stretchr/testify/require"
  11. )
  12. func Test_DAOVariable(t *testing.T) {
  13. db, cache := test.SetupPG(t)
  14. key := sdk.RandomString(10)
  15. proj := assets.InsertTestProject(t, db, cache, key, key)
  16. u, _ := assets.InsertLambdaUser(t, db, &proj.ProjectGroups[0].Group)
  17. v1 := &sdk.ProjectVariable{Name: "clear", Type: sdk.TextVariable, Value: "clear_value"}
  18. v2 := &sdk.ProjectVariable{Name: "secret", Type: sdk.SecretVariable, Value: "secret_value"}
  19. require.NoError(t, project.InsertVariable(db, proj.ID, v1, u))
  20. assert.Equal(t, "clear_value", v1.Value)
  21. require.NoError(t, project.InsertVariable(db, proj.ID, v2, u))
  22. assert.Equal(t, sdk.PasswordPlaceholder, v2.Value)
  23. vs, err := project.LoadAllVariables(db, proj.ID)
  24. require.NoError(t, err)
  25. assert.Equal(t, "clear_value", vs[0].Value)
  26. assert.Equal(t, sdk.PasswordPlaceholder, vs[1].Value)
  27. vs, err = project.LoadAllVariablesWithDecrytion(db, proj.ID)
  28. require.NoError(t, err)
  29. assert.Equal(t, "clear_value", vs[0].Value)
  30. assert.Equal(t, "secret_value", vs[1].Value)
  31. require.NoError(t, project.UpdateVariable(db, proj.ID, &vs[1], &vs[1], u))
  32. v1, err = project.LoadVariable(db, proj.ID, "clear")
  33. require.NoError(t, err)
  34. assert.Equal(t, "clear_value", v1.Value)
  35. v2, err = project.LoadVariable(db, proj.ID, "secret")
  36. require.NoError(t, err)
  37. assert.Equal(t, sdk.PasswordPlaceholder, v2.Value)
  38. v2, err = project.LoadVariableWithDecryption(db, proj.ID, v2.ID, "secret")
  39. require.NoError(t, err)
  40. assert.Equal(t, "secret_value", v2.Value)
  41. require.NoError(t, project.DeleteVariable(db, proj.ID, v2, u))
  42. require.NoError(t, project.DeleteAllVariables(db, proj.ID))
  43. }
  44. func Test_DAOVariableAllProjects(t *testing.T) {
  45. db, cache := test.SetupPG(t)
  46. key1 := sdk.RandomString(10)
  47. proj1 := assets.InsertTestProject(t, db, cache, key1, key1)
  48. key2 := sdk.RandomString(10)
  49. proj2 := assets.InsertTestProject(t, db, cache, key2, key2)
  50. u, _ := assets.InsertLambdaUser(t, db, &proj1.ProjectGroups[0].Group)
  51. v1 := &sdk.ProjectVariable{Name: "clear", Type: sdk.TextVariable, Value: "clear_value1"}
  52. v2 := &sdk.ProjectVariable{Name: "secret", Type: sdk.SecretVariable, Value: "secret_value1"}
  53. v3 := &sdk.ProjectVariable{Name: "clear", Type: sdk.TextVariable, Value: "clear_value2"}
  54. v4 := &sdk.ProjectVariable{Name: "secret", Type: sdk.SecretVariable, Value: "secret_value2"}
  55. require.NoError(t, project.InsertVariable(db, proj1.ID, v1, u))
  56. require.NoError(t, project.InsertVariable(db, proj1.ID, v2, u))
  57. require.NoError(t, project.InsertVariable(db, proj2.ID, v3, u))
  58. require.NoError(t, project.InsertVariable(db, proj2.ID, v4, u))
  59. vars, err := project.LoadAllVariablesForProjectsWithDecryption(context.TODO(), db, []int64{proj1.ID, proj2.ID})
  60. require.NoError(t, err)
  61. require.Len(t, vars, 2)
  62. require.NotNil(t, vars[proj1.ID])
  63. require.NotNil(t, vars[proj2.ID])
  64. require.Len(t, vars[proj1.ID], 2)
  65. require.Len(t, vars[proj2.ID], 2)
  66. t.Logf("%+v", vars)
  67. for _, v := range vars[proj1.ID] {
  68. switch v.Type {
  69. case sdk.SecretVariable:
  70. require.Equal(t, "secret_value1", v.Value)
  71. default:
  72. require.Equal(t, "clear_value1", v.Value)
  73. }
  74. }
  75. for _, v := range vars[proj2.ID] {
  76. switch v.Type {
  77. case sdk.SecretVariable:
  78. require.Equal(t, "secret_value2", v.Value)
  79. default:
  80. require.Equal(t, "clear_value2", v.Value)
  81. }
  82. }
  83. }