mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 10:37:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			209 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package api
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func TestTokenPolicies(t *testing.T) {
 | |
| 	var s *Secret
 | |
| 
 | |
| 	// Verify some of the short-circuit paths in the function
 | |
| 	if policies, err := s.TokenPolicies(); policies != nil {
 | |
| 		t.Errorf("policies was not nil, got %v", policies)
 | |
| 	} else if err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	}
 | |
| 
 | |
| 	s = &Secret{}
 | |
| 
 | |
| 	if policies, err := s.TokenPolicies(); policies != nil {
 | |
| 		t.Errorf("policies was not nil, got %v", policies)
 | |
| 	} else if err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	}
 | |
| 
 | |
| 	s.Auth = &SecretAuth{}
 | |
| 
 | |
| 	if policies, err := s.TokenPolicies(); policies != nil {
 | |
| 		t.Errorf("policies was not nil, got %v", policies)
 | |
| 	} else if err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	}
 | |
| 
 | |
| 	s.Auth.Policies = []string{}
 | |
| 
 | |
| 	if policies, err := s.TokenPolicies(); policies != nil {
 | |
| 		t.Errorf("policies was not nil, got %v", policies)
 | |
| 	} else if err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	}
 | |
| 
 | |
| 	s.Auth.Policies = []string{"test"}
 | |
| 
 | |
| 	if policies, err := s.TokenPolicies(); policies == nil {
 | |
| 		t.Error("policies was nil")
 | |
| 	} else if err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	}
 | |
| 
 | |
| 	s.Auth = nil
 | |
| 	s.Data = make(map[string]interface{})
 | |
| 
 | |
| 	if policies, err := s.TokenPolicies(); policies != nil {
 | |
| 		t.Errorf("policies was not nil, got %v", policies)
 | |
| 	} else if err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	}
 | |
| 
 | |
| 	// Verify that s.Data["policies"] are properly processed
 | |
| 	{
 | |
| 		policyList := make([]string, 0)
 | |
| 		s.Data["policies"] = policyList
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); len(policies) != len(policyList) {
 | |
| 			t.Errorf("expecting policies length %d, got %d", len(policyList), len(policies))
 | |
| 		} else if err != nil {
 | |
| 			t.Errorf("err was not nil, got %v", err)
 | |
| 		} else if s.Auth == nil {
 | |
| 			t.Error("Auth field is still nil")
 | |
| 		}
 | |
| 
 | |
| 		policyList = append(policyList, "policy1", "policy2")
 | |
| 		s.Data["policies"] = policyList
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); len(policyList) != 2 {
 | |
| 			t.Errorf("expecting policies length %d, got %d", len(policyList), len(policies))
 | |
| 		} else if err != nil {
 | |
| 			t.Errorf("err was not nil, got %v", err)
 | |
| 		} else if s.Auth == nil {
 | |
| 			t.Error("Auth field is still nil")
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	// Do it again but with an interface{} slice
 | |
| 	{
 | |
| 		s.Auth = nil
 | |
| 		policyList := make([]interface{}, 0)
 | |
| 		s.Data["policies"] = policyList
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); len(policies) != len(policyList) {
 | |
| 			t.Errorf("expecting policies length %d, got %d", len(policyList), len(policies))
 | |
| 		} else if err != nil {
 | |
| 			t.Errorf("err was not nil, got %v", err)
 | |
| 		} else if s.Auth == nil {
 | |
| 			t.Error("Auth field is still nil")
 | |
| 		}
 | |
| 
 | |
| 		policyItems := make([]interface{}, 2)
 | |
| 		policyItems[0] = "policy1"
 | |
| 		policyItems[1] = "policy2"
 | |
| 
 | |
| 		policyList = append(policyList, policyItems...)
 | |
| 		s.Data["policies"] = policyList
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); len(policies) != 2 {
 | |
| 			t.Errorf("expecting policies length %d, got %d", len(policyList), len(policies))
 | |
| 		} else if err != nil {
 | |
| 			t.Errorf("err was not nil, got %v", err)
 | |
| 		} else if s.Auth == nil {
 | |
| 			t.Error("Auth field is still nil")
 | |
| 		}
 | |
| 
 | |
| 		s.Auth = nil
 | |
| 		s.Data["policies"] = 7.0
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); err == nil {
 | |
| 			t.Error("err was nil")
 | |
| 		} else if policies != nil {
 | |
| 			t.Errorf("policies was not nil, got %v", policies)
 | |
| 		}
 | |
| 
 | |
| 		s.Auth = nil
 | |
| 		s.Data["policies"] = []int{2, 3, 5, 8, 13}
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); err == nil {
 | |
| 			t.Error("err was nil")
 | |
| 		} else if policies != nil {
 | |
| 			t.Errorf("policies was not nil, got %v", policies)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	s.Auth = nil
 | |
| 	s.Data["policies"] = nil
 | |
| 
 | |
| 	if policies, err := s.TokenPolicies(); err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	} else if policies != nil {
 | |
| 		t.Errorf("policies was not nil, got %v", policies)
 | |
| 	}
 | |
| 
 | |
| 	// Verify that logic that merges s.Data["policies"] and s.Data["identity_policies"] works
 | |
| 	{
 | |
| 		policyList := []string{"policy1", "policy2", "policy3"}
 | |
| 		s.Data["policies"] = policyList[:1]
 | |
| 		s.Data["identity_policies"] = "not_a_slice"
 | |
| 		s.Auth = nil
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); err == nil {
 | |
| 			t.Error("err was nil")
 | |
| 		} else if policies != nil {
 | |
| 			t.Errorf("policies was not nil, got %v", policies)
 | |
| 		}
 | |
| 
 | |
| 		s.Data["identity_policies"] = policyList[1:]
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); len(policyList) != len(policies) {
 | |
| 			t.Errorf("expecting policies length %d, got %d", len(policyList), len(policies))
 | |
| 		} else if err != nil {
 | |
| 			t.Errorf("err was not nil, got %v", err)
 | |
| 		} else if s.Auth == nil {
 | |
| 			t.Error("Auth field is still nil")
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	// Do it again but with an interface{} slice
 | |
| 	{
 | |
| 		policyList := []interface{}{"policy1", "policy2", "policy3"}
 | |
| 		s.Data["policies"] = policyList[:1]
 | |
| 		s.Data["identity_policies"] = "not_a_slice"
 | |
| 		s.Auth = nil
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); err == nil {
 | |
| 			t.Error("err was nil")
 | |
| 		} else if policies != nil {
 | |
| 			t.Errorf("policies was not nil, got %v", policies)
 | |
| 		}
 | |
| 
 | |
| 		s.Data["identity_policies"] = policyList[1:]
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); len(policyList) != len(policies) {
 | |
| 			t.Errorf("expecting policies length %d, got %d", len(policyList), len(policies))
 | |
| 		} else if err != nil {
 | |
| 			t.Errorf("err was not nil, got %v", err)
 | |
| 		} else if s.Auth == nil {
 | |
| 			t.Error("Auth field is still nil")
 | |
| 		}
 | |
| 
 | |
| 		s.Auth = nil
 | |
| 		s.Data["identity_policies"] = []int{2, 3, 5, 8, 13}
 | |
| 
 | |
| 		if policies, err := s.TokenPolicies(); err == nil {
 | |
| 			t.Error("err was nil")
 | |
| 		} else if policies != nil {
 | |
| 			t.Errorf("policies was not nil, got %v", policies)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	s.Auth = nil
 | |
| 	s.Data["policies"] = []string{"policy1"}
 | |
| 	s.Data["identity_policies"] = nil
 | |
| 
 | |
| 	if policies, err := s.TokenPolicies(); err != nil {
 | |
| 		t.Errorf("err was not nil, got %v", err)
 | |
| 	} else if len(policies) != 1 {
 | |
| 		t.Errorf("expecting policies length %d, got %d", 1, len(policies))
 | |
| 	} else if s.Auth == nil {
 | |
| 		t.Error("Auth field is still nil")
 | |
| 	}
 | |
| }
 | 
