github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/api/fakes/fake_domain_repo.go (about)

     1  package fakes
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/errors"
     5  	"github.com/cloudfoundry/cli/cf/models"
     6  )
     7  
     8  type FakeDomainRepository struct {
     9  	ListDomainsForOrgGuid        string
    10  	ListDomainsForOrgDomains     []models.DomainFields
    11  	ListDomainsForOrgApiResponse error
    12  
    13  	FindByNameInOrgName        string
    14  	FindByNameInOrgGuid        string
    15  	FindByNameInOrgDomain      models.DomainFields
    16  	FindByNameInOrgApiResponse error
    17  
    18  	FindByNameName     string
    19  	FindByNameDomain   models.DomainFields
    20  	FindByNameNotFound bool
    21  	FindByNameErr      bool
    22  
    23  	CreateDomainName          string
    24  	CreateDomainOwningOrgGuid string
    25  
    26  	CreateSharedDomainName string
    27  
    28  	DeleteDomainGuid  string
    29  	DeleteApiResponse error
    30  
    31  	DeleteSharedDomainGuid  string
    32  	DeleteSharedApiResponse error
    33  }
    34  
    35  func (repo *FakeDomainRepository) ListDomainsForOrg(orgGuid string, cb func(models.DomainFields) bool) error {
    36  	repo.ListDomainsForOrgGuid = orgGuid
    37  	for _, d := range repo.ListDomainsForOrgDomains {
    38  		cb(d)
    39  	}
    40  	return repo.ListDomainsForOrgApiResponse
    41  }
    42  
    43  func (repo *FakeDomainRepository) FindByName(name string) (domain models.DomainFields, apiErr error) {
    44  	repo.FindByNameName = name
    45  	domain = repo.FindByNameDomain
    46  
    47  	if repo.FindByNameNotFound {
    48  		apiErr = errors.NewModelNotFoundError("Domain", name)
    49  	}
    50  	if repo.FindByNameErr {
    51  		apiErr = errors.New("Error finding domain")
    52  	}
    53  
    54  	return
    55  }
    56  
    57  func (repo *FakeDomainRepository) FindByNameInOrg(name string, owningOrgGuid string) (domain models.DomainFields, apiErr error) {
    58  	repo.FindByNameInOrgName = name
    59  	repo.FindByNameInOrgGuid = owningOrgGuid
    60  	domain = repo.FindByNameInOrgDomain
    61  	apiErr = repo.FindByNameInOrgApiResponse
    62  	return
    63  }
    64  
    65  func (repo *FakeDomainRepository) Create(domainName string, owningOrgGuid string) (createdDomain models.DomainFields, apiErr error) {
    66  	repo.CreateDomainName = domainName
    67  	repo.CreateDomainOwningOrgGuid = owningOrgGuid
    68  	return
    69  }
    70  
    71  func (repo *FakeDomainRepository) CreateSharedDomain(domainName string) (apiErr error) {
    72  	repo.CreateSharedDomainName = domainName
    73  	return
    74  }
    75  
    76  func (repo *FakeDomainRepository) Delete(domainGuid string) (apiErr error) {
    77  	repo.DeleteDomainGuid = domainGuid
    78  	apiErr = repo.DeleteApiResponse
    79  	return
    80  }
    81  
    82  func (repo *FakeDomainRepository) DeleteSharedDomain(domainGuid string) (apiErr error) {
    83  	repo.DeleteSharedDomainGuid = domainGuid
    84  	apiErr = repo.DeleteSharedApiResponse
    85  	return
    86  }
    87  
    88  func (repo *FakeDomainRepository) FirstOrDefault(orgGuid string, name *string) (domain models.DomainFields, error error) {
    89  	if name == nil {
    90  		domain, error = repo.defaultDomain(orgGuid)
    91  	} else {
    92  		domain, error = repo.FindByNameInOrg(*name, orgGuid)
    93  	}
    94  	return
    95  }
    96  
    97  func (repo *FakeDomainRepository) defaultDomain(orgGuid string) (models.DomainFields, error) {
    98  	var foundDomain *models.DomainFields
    99  	repo.ListDomainsForOrg(orgGuid, func(domain models.DomainFields) bool {
   100  		foundDomain = &domain
   101  		return !domain.Shared
   102  	})
   103  
   104  	if foundDomain == nil {
   105  		return models.DomainFields{}, errors.New("Could not find a default domain")
   106  	}
   107  
   108  	return *foundDomain, nil
   109  }