diff --git a/go.mod b/go.mod index 94a7724..cb874e8 100644 --- a/go.mod +++ b/go.mod @@ -12,18 +12,17 @@ require ( github.com/go-playground/validator v9.31.0+incompatible github.com/golang/protobuf v1.5.2 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 - github.com/hashicorp/go-hclog v0.9.1 // indirect + github.com/hashicorp/go-hclog v0.9.1 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/raft v1.3.1 github.com/jedib0t/go-pretty/v6 v6.2.4 github.com/rs/cors v1.8.0 - github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.0 github.com/tidwall/pretty v1.2.0 go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.24.0 // indirect + go.uber.org/zap v1.24.0 golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 google.golang.org/grpc v1.47.0 diff --git a/go.sum b/go.sum index 2ae453d..f52ab3d 100644 --- a/go.sum +++ b/go.sum @@ -5,7 +5,6 @@ github.com/BBVA/raft-badger v1.1.0 h1:YUi1Td/RstJasAn3iuTeMfpNlFKX12MpJBHwluRU7r github.com/BBVA/raft-badger v1.1.0/go.mod h1:6aj0Kov2CDas5dHHKyym9nwfntRUE4J4Q0J/5WaNhwI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= @@ -18,6 +17,7 @@ github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQh github.com/atotto/clipboard v0.1.2/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= @@ -64,11 +64,9 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgraph-io/badger/v3 v3.2011.1 h1:Hmyof0WMEF/QtutX5SQHzIMnJQxb/IrSzhjckV2SD6g= github.com/dgraph-io/badger/v3 v3.2011.1/go.mod h1:0rLLrQpKVQAL0or/lBLMQznhr6dWWX7h5AKnmnqx268= github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw= -github.com/dgraph-io/ristretto v0.0.4-0.20210122082011-bb5d392ed82d h1:eQYOG6A4td1tht0NdJB9Ls6DsXRGb2Ft6X9REU/MbbE= github.com/dgraph-io/ristretto v0.0.4-0.20210122082011-bb5d392ed82d/go.mod h1:tv2ec8nA7vRpSYX7/MbP52ihrUMXIHit54CQMq8npXQ= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= @@ -127,11 +125,9 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/flatbuffers v1.12.0 h1:/PtAHvnBY4Kqnx/xCQ3OIV9uYcSFGScBsWI3Oogeh6w= github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= @@ -258,7 +254,6 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= @@ -283,9 +278,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -306,6 +301,7 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -327,9 +323,11 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -342,7 +340,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= @@ -383,7 +380,6 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912 h1:uCLL3g5wH2xjxVREVuAbP9JM5PPKjRbXKRa6IBjkzmU= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14 h1:k5II8e6QD8mITdi+okbbmR/cIyEbeXLBhy5Ha4nevyc= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -406,6 +402,7 @@ golang.org/x/tools v0.0.0-20191127201027-ecd32218bd7f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201105001634-bc3cf281b174/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/server/adapter/adapter_test.go b/server/adapter/adapter_test.go index 4fe7c96..b360d75 100644 --- a/server/adapter/adapter_test.go +++ b/server/adapter/adapter_test.go @@ -52,7 +52,7 @@ func (suite *AdapterTestSuite) SetupTest() { } suite.db = db - bts, err := ioutil.ReadFile("../../test/test_data/rbac_policy.csv") + bts, err := ioutil.ReadFile("../../test/testdata/rbac_policy.csv") if err != nil { t.Error(err) } @@ -62,7 +62,7 @@ func (suite *AdapterTestSuite) SetupTest() { t.Error(err) } - enforcer, err := casbin.NewEnforcer("../../test/test_data/rbac_model.conf", a) + enforcer, err := casbin.NewEnforcer("../../test/testdata/rbac_model.conf", a) if err != nil { t.Errorf("error creating enforcer: %s\n", err.Error()) } diff --git a/server/server_test.go b/server/server_test.go new file mode 100644 index 0000000..e95e897 --- /dev/null +++ b/server/server_test.go @@ -0,0 +1,52 @@ +package server + +import ( + "crypto/tls" + "github.com/stretchr/testify/require" + "testing" +) + +func TestNewListener(t *testing.T) { + cfg := &CmdConfig{} + s, err := NewServer(cfg) + require.NoError(t, err) + + listener, err := s.newListener("127.0.0.1:0", "", false, "", "", "", tls.NoClientCert, false) + require.NoError(t, err) + require.NotNil(t, listener) + defer func() { + _ = listener.Close() + }() + + listener, err = s.newListener("127.0.0.1:0", "", false, "", "", "", tls.NoClientCert, true) + require.NoError(t, err) + require.NotNil(t, listener) + defer func() { + _ = listener.Close() + }() +} + +func TestNewListenerWithTls(t *testing.T) { + cfg := &CmdConfig{} + s, err := NewServer(cfg) + require.NoError(t, err) + + caPath := "../test/testdata/certificate-authority/ca-key.pem" + raftClientKeyPath := "../test/testdata/certificate-authority/raft-client-key.pem" + raftClientCertPath := "../test/testdata/certificate-authority/raft-client.pem" + listener, err := s.newListener("127.0.0.1:0", "", true, raftClientKeyPath, raftClientCertPath, caPath, tls.RequestClientCert, false) + require.NoError(t, err) + require.NotNil(t, listener) + defer func() { + _ = listener.Close() + }() + + raftServerKeyPath := "../test/testdata/certificate-authority/raft-server-key.pem" + raftServerCertPath := "../test/testdata/certificate-authority/raft-server.pem" + listener, err = s.newListener("127.0.0.1:0", "", true, raftServerKeyPath, raftServerCertPath, caPath, tls.RequestClientCert, true) + require.NoError(t, err) + require.NotNil(t, listener) + defer func() { + _ = listener.Close() + }() +} diff --git a/test/testdata/certificate-authority/README.md b/test/testdata/certificate-authority/README.md new file mode 100644 index 0000000..69dfe49 --- /dev/null +++ b/test/testdata/certificate-authority/README.md @@ -0,0 +1,11 @@ +# Certificate Authority + +Generate the TLS certificates for testing: + +```shell +echo '{"CN":"CA","key":{"algo":"rsa","size":2048}}' | cfssl gencert -initca - |cfssljson -bare ca - +echo '{"signing":{"default":{"expiry":"87600h","usages":["signing","key encipherment","server auth","client auth"]}}}' > ca-config.json +echo '{"CN":"raft-server","hosts":["localhost","127.0.0.1"],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json - | cfssljson -bare raft-server +echo '{"CN":"raft-client","hosts":["localhost","127.0.0.1"],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json - | cfssljson -bare raft-client +rm *.csr *.json | true +``` diff --git a/test/testdata/certificate-authority/ca-key.pem b/test/testdata/certificate-authority/ca-key.pem new file mode 100644 index 0000000..8098f9b --- /dev/null +++ b/test/testdata/certificate-authority/ca-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAsKnNKqG/E6YRSDV+kn6mqpBELo5qURXXWKLTmrqKrCkdmyNQ +nPEyoYT3uITOPV7WIt6V99IK+ORJZL/YEJOni15NG8BHu1F1oC6g/shQet57J1TL +egvllDEbqUfEFgSWoMcht+RQaLfE2+Pzu1ZUg9l6F2iQNTVtNf1kPX8vNEFFKWDQ +lswYArUjIfkqga37KKnGO4TZG6n9gAXmf4k6ol6AqPurOtFpFtVHUQDYKbzqLHv7 +56CpKfkiHFYZhwcQbiaHyeOFbddgOX2me4uhVItt0FfIGvPlUDuqNiBXz9F58Tny +aKQcCF26yVncZYW5V4UOO1+i7MFkucE/6+KvzQIDAQABAoIBAQCIzORX9+pbz8Qg +M3RxAmwTNiXmG1gOtCgOtf/AGGWbzTbk1GLvNQNs+edN1mFSOqb9V3mv7tGaTETd +JIWuyHf8PyjcrXeegQTh5lm7EejoTHH3Uf1C5AWCTMjLvAwGtMTjeXAN01nEzVE+ +qXUqgz5s3zJhABJzcYzBOxetW1h1UDAeHVO6HqvzrD3toB9V8sArlrEyD6DnvW4S +MarBYNfiOuXtSQzuhOSPSJmoi+KF7qUsDGbN2qxZIZAVPsjNujxJokaj2N9zbgAJ +dFweQXP7SE4B5TA7bDNwDJySGbKOo5ZO8ETlVgkhXNX0u87Dw6lqjZkT01X0NPWp +5we/v2IhAoGBAN0u398ZuMUay70V3+POioJJ6u89JEu11Y+klfveUy+3dfQdkx9+ +E9IarDjiOF30Nr7shSef4/koXoTg5lkuKgi7wmS563rUNqPnz5RbI5mak9xHNQTE +Zyd6Fb9SujvljcukrUs9psFUDRuU4u/8NyGcERBJDQnLlNU01jUiNrspAoGBAMx4 +48ZQ6NGvmYbtdBtAbseoS+nfBZddHH/6it/N3IXVwM2YvviWlyVQFXWD2I8F+XLp +osjeUOmDiK4d6suCBAS3W2nrweNNbKOvTsYEokWjW0FRbdqVtX2+5zJreJvUharY +keZpeGp9zhC2QQVsf3uB7mwZiTciN/ymtRGF8cgFAoGBAJkTsPLqDVu00N67fele +77N+Tu9mZHFVlklEwly/oNj8YtEhisoX6sXVme4AerxjoWP/s6QZ36B4FPpn4GRG +M+c5cy9dESFAL9S+QYbOkNPlDII+ce4rs6y5rMVuDuAXXkxbW2ggcgGJF01IfMtU +xh8nsRORS0nFMOtiFwJM/I4JAoGAeGlQqX8IPEOOw9ieIVZGZqmDWwyNPGAG4o7m +rXmLvfzs96ZWAAqeo8iPeo7UPxWjmrpftK7HM1zUZsUTehjsyOI5oRzHJ1Z2/cXF +O/OKpDvZB5QufyTeplh/yj9j3VDADqZO9UNzODMx4MGTdOA6Cr+valV3atJp6g06 +YEFi6wkCgYA8Kx/AN3PF5AO7OpggvHVrgCcLUHBOdjWn8w1h39upnOOHIo/XLPyF +RGKQIKBE41fwsCGbNl295XnH6hVlHctZxRul2JP7GxVeGXqJ6k4RjbilmbwnBJqf +VtcXppgU999FK2Kr0lR6gXdPRc+mupbDQbRYkrOAfd9w+yvRcs8Wvw== +-----END RSA PRIVATE KEY----- diff --git a/test/testdata/certificate-authority/ca.pem b/test/testdata/certificate-authority/ca.pem new file mode 100644 index 0000000..4491cb9 --- /dev/null +++ b/test/testdata/certificate-authority/ca.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC6jCCAdKgAwIBAgIURkaUi+SHOYaZxU8Y/kepbYwm5w8wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAxMCQ0EwHhcNMjMwNzMwMTY0OTAwWhcNMjgwNzI4MTY0OTAw +WjANMQswCQYDVQQDEwJDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALCpzSqhvxOmEUg1fpJ+pqqQRC6OalEV11ii05q6iqwpHZsjUJzxMqGE97iEzj1e +1iLelffSCvjkSWS/2BCTp4teTRvAR7tRdaAuoP7IUHreeydUy3oL5ZQxG6lHxBYE +lqDHIbfkUGi3xNvj87tWVIPZehdokDU1bTX9ZD1/LzRBRSlg0JbMGAK1IyH5KoGt ++yipxjuE2Rup/YAF5n+JOqJegKj7qzrRaRbVR1EA2Cm86ix7++egqSn5IhxWGYcH +EG4mh8njhW3XYDl9pnuLoVSLbdBXyBrz5VA7qjYgV8/RefE58mikHAhduslZ3GWF +uVeFDjtfouzBZLnBP+vir80CAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFDRITmhHiWOGYNjQCdUTJD27TH1EMA0GCSqG +SIb3DQEBCwUAA4IBAQB3aK7yXGv9krWPa4xaqc5SsqswhpPh259GU+qAFVmADyny +kUHHG0AN+UmUXtBkhYyS3OMAsWGLLuNp4s1Fv4VZTf8alZBv+9gu4smbAuDytoul +KpjpIQtfoSeHPLsRDlUuK5OJZXBzP6dnEz1z3ltJzDychjEQWJMd9zvuZcMCGiD5 +MgtagXqTzrBgb0ApF7WDQnXP4g0pHsm/Y4SBDBZa4ny9Qwxj9xAJgPCxlFhrmg9w +9TH6+mMWAjlpSNE9fn79uL0XAUCfypkN/zZkirQP+hKLoex3HPOMwmipXEljhq79 +C7T4fnKFMcngrBrCBN4TnIHacj8MmWRC2NL1sN7t +-----END CERTIFICATE----- diff --git a/test/testdata/certificate-authority/raft-client-key.pem b/test/testdata/certificate-authority/raft-client-key.pem new file mode 100644 index 0000000..0d8a0a1 --- /dev/null +++ b/test/testdata/certificate-authority/raft-client-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA5eaQM+F/FzYkBZDlnQjxpGZBhJQmBDn6nQ1S0BqkgvE2QoDA +7Ibjge6/ikU/HoDGWOk9hMrI0aB6bQzPlPQYrJU0EKDSkQR3pRtI9V8/0zAiN/FE +PUAAchbjl2Bjvw2vh0sYMdu6wyV7/GoGLfZOzrAjg+2323+uvsQ6PPUwXAlvY3GA +m43sMKGHiLf9m7baVvvie8XMZGbPUei6zVQI+F/5pA1B95+TLsyyAtOlZCrT14mw +7cTC4LFDiKqboaADLmD7KhyCfClM6YNldvwZNKt38jzih2peMrV+DM6ZhDN4swa2 +aTIwZbUALYnOeNgkxuSmvt28OaEZw5lHPcg+MQIDAQABAoIBACbMRkG7KGuOY33c ++iMKQ11vNFdfeRr1fenLOdKM7H58np+SgvxntzVSSVjYXtKTAOY4Vn12i3V1E7Qb +mVyV5SQa+fJkcaSvkFF4zVM7g9XsJZozSUTc7DZUzovZZHv1n03Byo9/eYE9bjMm +4WwYSSxwZU36bDDK136yNvHanxKo4xUxvlgUi8Nr+qNk2J3tGvT2xlOhuM6c/+tD +l3Nt3CtmYOnaS9uFf2xY3f98PVuhJ9ZWnHTox7Ged6/KcsjmHhePcrBCAVdeeGhP +uU/JUHb23yVA8JmAWVY8GxRVtxeRCyVOSjiTjsDyakeNyh2uAyxUjRjMgN46YDsl +eMEim5ECgYEA8cIJls3Tivhxj/0kVtcRNxhVk0Kc4fg6Z9c6TM27LILc/eZkf3ss +wtvDOBNlGtozk4uJc91w+WRi85Wamil3zOduq4S7tJWXfr0sK0CHA7x5Q42vbQik +a4BJJzYXP1Q3B+kosSariSifz6r4B90s4TEpV7UuvpwohNHvZ2zjOiMCgYEA83G0 +fhWB/6J7YHWlVciuUf++ZfGW/XzMDmfOH7GEUP7ZovIUxJLSqiLiuJuW+0/Dggtp +canmDw38b6d2iAMD2V/ouQP8IFzmEE7Hls9ZNa7WT4R+I69zks+N6t+WCN4LYHBl +ZF8vuwpRkspqHEMnZuYCkRznhac1xT0U5+c4+ZsCgYBXnkNrbF1m2HQQA2bQMlIC +7cbWACZrn1NLny15+HYFw8fkHUP/D91BIfS2thDGkp5usvu2CmOPf1p9fZLynGTW +1mm9r/V3lV+6h0Uix9gm+n/Yg9k4YxF0BKJ+m5QBV7w6Gb6ttZ4lr5t74DLUZsyF +MRQSvY+bdW0Z9hwWF9iikQKBgQDaZJIgXlkeJPx7v27Qc1T3GPAM8lubEl7ZOYSv +6AekxcwmovfAlVrJ6LvuEx6yW48v1d8Faf6KWOiync/3GoVUd/cGK63+tnhp/tKM +13zXbP6znU+v4dFTzkEpiOVHFTOtk4dSMRZXvF0Ly+y/Z/ssE4IP/pcwzp2tUSu1 +EziIqwKBgD9wuiulnitnMfgA4xXzFUd0DaqPoFdjattwFNuIBG1m6CAk+Y63Eli4 +g8h9ULJMT4Zc+7/EQ20M0xkp2ZKY9X6L3qq2yEl0ZS0hqp5D+0K5ISL5zHQ386BL +9DktvGUDzNQhCiHQqFExkIcM42CsfWq5DWYPa6W/XfW6wbYK32tN +-----END RSA PRIVATE KEY----- diff --git a/test/testdata/certificate-authority/raft-client.pem b/test/testdata/certificate-authority/raft-client.pem new file mode 100644 index 0000000..b547e44 --- /dev/null +++ b/test/testdata/certificate-authority/raft-client.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDTjCCAjagAwIBAgIUDZJXn3LYhQ5ZGBW8s6YMwMW+XtwwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAxMCQ0EwHhcNMjMwNzMwMTcwMzAwWhcNMzMwNzI3MTcwMzAw +WjAWMRQwEgYDVQQDEwtyYWZ0LWNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAOXmkDPhfxc2JAWQ5Z0I8aRmQYSUJgQ5+p0NUtAapILxNkKAwOyG +44Huv4pFPx6AxljpPYTKyNGgem0Mz5T0GKyVNBCg0pEEd6UbSPVfP9MwIjfxRD1A +AHIW45dgY78Nr4dLGDHbusMle/xqBi32Ts6wI4Ptt9t/rr7EOjz1MFwJb2NxgJuN +7DChh4i3/Zu22lb74nvFzGRmz1Hous1UCPhf+aQNQfefky7MsgLTpWQq09eJsO3E +wuCxQ4iqm6GgAy5g+yocgnwpTOmDZXb8GTSrd/I84odqXjK1fgzOmYQzeLMGtmky +MGW1AC2JznjYJMbkpr7dvDmhGcOZRz3IPjECAwEAAaOBnDCBmTAOBgNVHQ8BAf8E +BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC +MAAwHQYDVR0OBBYEFD4kh0HhNJIymj5DJFj9ngDXNI2jMB8GA1UdIwQYMBaAFDRI +TmhHiWOGYNjQCdUTJD27TH1EMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEfwAAATAN +BgkqhkiG9w0BAQsFAAOCAQEAnfeBAbX1RXYnMwz85c3hxajRJUleyZMrphbTwfYl +NrSIdU8xGDBXzpW4RRDLbe4qsB46tKMbHKsBHtzFwi6pU0kQnBT2WMEt580Gh/96 +sGKBGf1P7BvRokvmaSvUx/eBsJtK1zM/ydL+HGVabWNtr8n1fY3Vc/AgsAwaTRiK +XTUQFMWi9BWgIHHBi2Y20yNC95Hu1LaG/AskKLS0bwvA310+mzReBTu8AAUM7qwc +vHXlwlj/7wlpitXBsBq59snCAm8cxAmOL+JfaKHAEvNzYkrOD9A38mcm/E3bR9xV +fLP5Oba0xfLh6Ikg5y+wp9d5S2J2UCTDAOhssPMihjpYdA== +-----END CERTIFICATE----- diff --git a/test/testdata/certificate-authority/raft-server-key.pem b/test/testdata/certificate-authority/raft-server-key.pem new file mode 100644 index 0000000..850a50c --- /dev/null +++ b/test/testdata/certificate-authority/raft-server-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA74MH8wibzz4F6ysYwygLnxpoMytlXK5MYTvlQmAfp/i2HcKe +RuoxafLnljlkc9TZvuOnKZuMpmubgbCDmeZq1rqUn+J6QJx6lKpGSAmQkiagLy6e +cUIzfmOlzi140FoI0I1YpCXfzWN1dJc04mxVW+dYDCVgzazEFlE7KXatapud/kSu +dcj9T5V5LJMe8SETe2tfp3+m8mKtNu+EPsc691iAkOCaTBDao4VL43gTsgUIuJFW +ZbeThHd6e+ZdVcPgBKbRLQ0EI49HFGqx069LucMDE/h0azabQW8HvDW6cZ3h26P3 +u2wmN9azbLcqNLYN+0Coa/NzPDbEuqE435arJwIDAQABAoIBADpkrcl47dPHAVZm +eXELEFpH6+OdzuabsA98tNZL7SvcnToAOup7KnT0PbYIZA9Bc5zwj867F71zOsSR +rmQVIzMa5iVc6AVcoR4hrWTewBqBxEf8i7B9PWSxErmDqJLTgJan/1Z1zWybtQUp +4EDbvKvdaT/81O8QEfaG82+WeY0lzs9BvNEVOZ099rXZmOsVTIm5IXbjEQKqSG3r +KYLXnTlEDw/mMlH9SFP5ErWN5Vh2cOSUtCJa1D3VbZpWZUxTHFbgcG2OfKB/bZBC +trTQZYeJWPmw+uH439UOsQX1O6p+H/kQDNCZrYJbwkRzjEzXRUm9qRAfOjKscmJq +HEyMdSECgYEA+GcMOuF4OHoE1j/E2TBV4JNXxc1ADVlzG+3T+mVWV76NvuZNJHWw +gk61WcrjKso0NF+8lT1FHsc/TGH7zdFoC3fH7UkKEB9ez3eHbz1kiKHiMWc/YEWB +NlSFW44TNNyld/XKrjUybzFVqv/jX6WC5MM2zw9zOYnCq8cCjEEeSf8CgYEA9tZe +3wKL4QaI+olWB+WsSEuswKhY6pvtXvkh1AgD1zDz5VT/iplWuguqUKXi4/8+TWSh +N1oA+nr9WzDkUV8+wXPEh3GRSjstEdBYlwfe3T4HU+rLA6EdOFpuVW0xhkJdN4Fs +HXQMb1eeiRQh3t571bpYslXMjJi+bDhpFc8iDtkCgYABDrc/nOwdGW/h1Z2p6wnC +jf4GqowGQoY57TZEz5+hef8ye9qCODoLI/ijrDhxWzEDtBCidgNQUTrUwWoIA0c1 +HUptmS0AypFlwrWB5LoD1uSWn0Dm0QTuzUdQD3fHdtUBgLtfKHzRel1KABLgulyn +Sql2EjPEX/DDOHKrVC+j0wKBgEzBTlD0fsCjgpa9e/YKsi7s8TQbZULW59IfkChZ +sbAJtd27N5dGpVRG6lgXrV0OcrYoM4V9xE4fToc7xdOT1XTcZeFkLDS0AAjJC7Mz +LFcJwceTfDuNrwNmA2cnBD5mhowK/66M9ozs5wxjKUEfV8yXHJuf2HJj0NrgE7VH +aqTJAoGBAJ2HKk8cQoUMCU1ZwtCQFxcAOQDYyBVO5grSa2KFokJZrnRMah4ECZzj +rI1ceGnET48wK6jTzMn8UTamyIKw1z8bZGL8WaBmPqnnABCcXVUOh0JyejjubuZi +abtwLx7EuxGAH+aJ4DyS73fmqCpRwEmnTrOerlu3Z+CibLVwQUk9 +-----END RSA PRIVATE KEY----- diff --git a/test/testdata/certificate-authority/raft-server.pem b/test/testdata/certificate-authority/raft-server.pem new file mode 100644 index 0000000..9fb45f0 --- /dev/null +++ b/test/testdata/certificate-authority/raft-server.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDTjCCAjagAwIBAgIUVwlf69c6LPfq+9lDHJ2ZX5PgeBswDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAxMCQ0EwHhcNMjMwNzMwMTcwMzAwWhcNMzMwNzI3MTcwMzAw +WjAWMRQwEgYDVQQDEwtyYWZ0LXNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAO+DB/MIm88+BesrGMMoC58aaDMrZVyuTGE75UJgH6f4th3Cnkbq +MWny55Y5ZHPU2b7jpymbjKZrm4Gwg5nmata6lJ/iekCcepSqRkgJkJImoC8unnFC +M35jpc4teNBaCNCNWKQl381jdXSXNOJsVVvnWAwlYM2sxBZROyl2rWqbnf5ErnXI +/U+VeSyTHvEhE3trX6d/pvJirTbvhD7HOvdYgJDgmkwQ2qOFS+N4E7IFCLiRVmW3 +k4R3envmXVXD4ASm0S0NBCOPRxRqsdOvS7nDAxP4dGs2m0FvB7w1unGd4duj97ts +JjfWs2y3KjS2DftAqGvzczw2xLqhON+WqycCAwEAAaOBnDCBmTAOBgNVHQ8BAf8E +BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC +MAAwHQYDVR0OBBYEFIbTBvo1fFMeG20fGWb1O2MfV1tLMB8GA1UdIwQYMBaAFDRI +TmhHiWOGYNjQCdUTJD27TH1EMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEfwAAATAN +BgkqhkiG9w0BAQsFAAOCAQEAFEshpsN2QZ53bqKVrnOx3jRRmy04egc361dfNMLT +MhZCu/hq+w9G0znuvTyrn7xT0D8YQ489jFBcj2s4mko13R5///OxdW7Kfb+IxC9C +oC/Bnbix1tE6IrM3q7+dK6YEPS3pzEt5afAXB9xRMiDtnpRA4rNUVG3LHHiFsB60 +OjjMLehf6JHDBF+FJtu/vOBtfguDffzyTwKv4GaBb1luj9eIkRiw6aJlukvAOtAa +GqmmSEkrEt46N3HfdhLC63afi7uKJ+uvr/s1jDxvvFU77rBllnBbZP9zN2SyLuHY +fQtiDTLpd7nl6Vh+rQ2utCN/zWIYrk7YBloHJ9ZUi0Mdbw== +-----END CERTIFICATE----- diff --git a/test/test_data/rbac_model.conf b/test/testdata/rbac_model.conf similarity index 100% rename from test/test_data/rbac_model.conf rename to test/testdata/rbac_model.conf diff --git a/test/test_data/rbac_policy.csv b/test/testdata/rbac_policy.csv similarity index 100% rename from test/test_data/rbac_policy.csv rename to test/testdata/rbac_policy.csv