Fix build failure for patch 39785
[aaf/sms.git] / sms-service / src / sms / handler / handler_test.go
index 56aa5ac..25dc19f 100644 (file)
@@ -17,6 +17,7 @@
 package handler
 
 import (
+       "bytes"
        "encoding/json"
        "net/http"
        "net/http/httptest"
@@ -42,16 +43,27 @@ func (b *TestBackend) GetStatus() (bool, error) {
        return true, nil
 }
 
+func (b *TestBackend) Unseal(shard string) error {
+       return nil
+}
+
 func (b *TestBackend) GetSecret(dom string, sec string) (smsbackend.Secret, error) {
-       return smsbackend.Secret{}, nil
+       return smsbackend.Secret{
+               Name: "testsecret",
+               Values: map[string]interface{}{
+                       "name":       "john",
+                       "profession": "engineer",
+               },
+       }, nil
 }
 
 func (b *TestBackend) ListSecret(dom string) ([]string, error) {
-       return nil, nil
+       return []string{"testsecret1", "testsecret2"}, nil
 }
 
 func (b *TestBackend) CreateSecretDomain(name string) (smsbackend.SecretDomain, error) {
-       return smsbackend.SecretDomain{}, nil
+       return smsbackend.SecretDomain{UUID: "123e4567-e89b-12d3-a456-426655440000",
+               Name: "testdomain"}, nil
 }
 
 func (b *TestBackend) CreateSecret(dom string, sec smsbackend.Secret) error {
@@ -106,3 +118,151 @@ func TestStatusHandler(t *testing.T) {
                        rr.Body.String(), expectedStr)
        }
 }
+
+func TestCreateSecretDomainHandler(t *testing.T) {
+       body := `{"uuid":"123e4567-e89b-12d3-a456-426655440000","name":"testdomain"}`
+       reader := strings.NewReader(body)
+       req, err := http.NewRequest("POST", "/v1/sms/domain", reader)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       hr := http.HandlerFunc(h.createSecretDomainHandler)
+
+       hr.ServeHTTP(rr, req)
+       if rr.Code != http.StatusCreated {
+               t.Errorf("Expected statusCreated return code. Got: %v", rr.Code)
+       }
+
+       expected := smsbackend.SecretDomain{
+               UUID: "123e4567-e89b-12d3-a456-426655440000",
+               Name: "testdomain",
+       }
+
+       got := smsbackend.SecretDomain{}
+       json.NewDecoder(rr.Body).Decode(&got)
+
+       if reflect.DeepEqual(expected, got) == false {
+               t.Errorf("CreateSecretDomainHandler returned unexpected body: got %v;"+
+                       " expected %v", got, expected)
+       }
+}
+
+func TestCreateSecretHandler(t *testing.T) {
+       data := smsbackend.Secret{
+               Name: "testsecret",
+               Values: map[string]interface{}{
+                       "name":    "john",
+                       "age":     43,
+                       "isadmin": true,
+               },
+       }
+
+       jdata, err := json.Marshal(data)
+       req, err := http.NewRequest("POST", "/v1/sms/domain/testdomain/secret", bytes.NewReader(jdata))
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       hr := http.HandlerFunc(h.createSecretHandler)
+
+       hr.ServeHTTP(rr, req)
+       if rr.Code != http.StatusCreated {
+               t.Errorf("Expected statusCreated return code. Got: %v", rr.Code)
+       }
+}
+
+func TestDeleteSecretDomainHandler(t *testing.T) {
+       req, err := http.NewRequest("DELETE", "/v1/sms/domain/testdomain", nil)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       hr := http.HandlerFunc(h.deleteSecretDomainHandler)
+
+       hr.ServeHTTP(rr, req)
+       if rr.Code != http.StatusNoContent {
+               t.Errorf("Expected statusCreated return code. Got: %v", rr.Code)
+       }
+}
+
+func TestDeleteSecretHandler(t *testing.T) {
+       req, err := http.NewRequest("DELETE", "/v1/sms/domain/testdomain/secret/testsecret", nil)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       hr := http.HandlerFunc(h.deleteSecretHandler)
+
+       hr.ServeHTTP(rr, req)
+       if rr.Code != http.StatusNoContent {
+               t.Errorf("Expected statusCreated return code. Got: %v", rr.Code)
+       }
+}
+
+func TestGetSecretHandler(t *testing.T) {
+       req, err := http.NewRequest("DELETE", "/v1/sms/domain/testdomain/secret/testsecret", nil)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       hr := http.HandlerFunc(h.getSecretHandler)
+
+       hr.ServeHTTP(rr, req)
+       if rr.Code != http.StatusOK {
+               t.Errorf("Expected statusCreated return code. Got: %v", rr.Code)
+       }
+
+       expected := smsbackend.Secret{
+               Name: "testsecret",
+               Values: map[string]interface{}{
+                       "profession": "engineer",
+                       "name":       "john",
+               },
+       }
+
+       got := smsbackend.Secret{}
+       json.NewDecoder(rr.Body).Decode(&got)
+
+       if reflect.DeepEqual(expected, got) == false {
+               t.Errorf("CreateSecretDomainHandler returned unexpected body: got: %v"+
+                       " expected: %v", got, expected)
+       }
+}
+
+func TestListSecretHandler(t *testing.T) {
+       req, err := http.NewRequest("DELETE", "/v1/sms/domain/testdomain/secret", nil)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       hr := http.HandlerFunc(h.listSecretHandler)
+
+       hr.ServeHTTP(rr, req)
+       if rr.Code != http.StatusOK {
+               t.Errorf("Expected statusCreated return code. Got: %v", rr.Code)
+       }
+
+       var expected = struct {
+               SecretNames []string `json:"secretnames"`
+       }{
+               []string{"testsecret1", "testsecret2"},
+       }
+
+       var got struct {
+               SecretNames []string `json:"secretnames"`
+       }
+
+       json.NewDecoder(rr.Body).Decode(&got)
+
+       if reflect.DeepEqual(expected, got) == false {
+               t.Errorf("CreateSecretDomainHandler returned unexpected body: got: %v"+
+                       " expected: %v", got, expected)
+       }
+}