1
2 package server
3
4 import (
5 "encoding/json"
6 "net/http"
7 "net/http/httptest"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11
12 rulesengine "edge-infra.dev/pkg/sds/emergencyaccess/rules"
13 )
14
15
16 func TestReadAllPrivileges(t *testing.T) {
17 log := newLogger()
18 t.Setenv("RCLI_RES_DATA_DIR", "./testdata")
19 ruleseng := MockRulesEngine{AddedNames: map[string][]string{"privs": {"basic"}}}
20
21 r := httptest.NewRecorder()
22 _, ginEngine := getTestGinContext(r)
23 _, err := New(ginEngine, &ruleseng, log)
24 assert.Nil(t, err)
25
26 req, err := http.NewRequest(http.MethodGet, "/admin/privileges", nil)
27 assert.NoError(t, err)
28 ginEngine.ServeHTTP(r, req)
29 response := r.Result()
30
31 assert.Equal(t, response.StatusCode, http.StatusOK)
32 var respData []rulesengine.Privilege
33 err = json.Unmarshal(r.Body.Bytes(), &respData)
34 assert.NoError(t, err)
35 assert.Equal(t, []rulesengine.Privilege{{Name: "basic", ID: "test"}}, respData)
36 }
37
38
39 func TestReadPrivilege(t *testing.T) {
40 log := newLogger()
41 t.Setenv("RCLI_RES_DATA_DIR", "./testdata")
42 ruleseng := MockRulesEngine{AddedNames: map[string][]string{"privs": {"basic"}}}
43
44 r := httptest.NewRecorder()
45 _, ginEngine := getTestGinContext(r)
46 _, err := New(ginEngine, &ruleseng, log)
47 assert.Nil(t, err)
48
49 req, err := http.NewRequest(http.MethodGet, "/admin/privileges/basic", nil)
50 assert.NoError(t, err)
51 ginEngine.ServeHTTP(r, req)
52 response := r.Result()
53
54 assert.Equal(t, response.StatusCode, http.StatusOK)
55 var respData rulesengine.Privilege
56 err = json.Unmarshal(r.Body.Bytes(), &respData)
57 assert.NoError(t, err)
58 assert.Equal(t, rulesengine.Privilege{Name: "basic", ID: "test"}, respData)
59 }
60
61
62 func TestReadPrivilegesNoPrivs(t *testing.T) {
63 log := newLogger()
64 t.Setenv("RCLI_RES_DATA_DIR", "./testdata")
65 ruleseng := MockRulesEngine{}
66
67 r := httptest.NewRecorder()
68 _, ginEngine := getTestGinContext(r)
69 _, err := New(ginEngine, &ruleseng, log)
70 assert.Nil(t, err)
71
72 req, err := http.NewRequest(http.MethodGet, "/admin/privileges", nil)
73 assert.NoError(t, err)
74 ginEngine.ServeHTTP(r, req)
75 response := r.Result()
76
77 assert.Equal(t, response.StatusCode, http.StatusOK)
78 var respData []rulesengine.Privilege
79 err = json.Unmarshal(r.Body.Bytes(), &respData)
80 assert.NoError(t, err)
81 assert.Equal(t, []rulesengine.Privilege(nil), respData)
82 }
83
View as plain text