-
Notifications
You must be signed in to change notification settings - Fork 928
/
fake_domain_repo.go
135 lines (109 loc) · 3.66 KB
/
fake_domain_repo.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package fakes
import (
"github.com/cloudfoundry/cli/cf/errors"
"github.com/cloudfoundry/cli/cf/models"
)
type FakeDomainRepository struct {
ListDomainsForOrgGuid string
ListDomainsForOrgDomains []models.DomainFields
ListDomainsForOrgApiResponse error
FindByNameInOrgName string
FindByNameInOrgGuid string
FindByNameInOrgDomain []models.DomainFields
FindByNameInOrgApiResponse error
FindSharedByNameName string
FindSharedByNameDomain models.DomainFields
FindSharedByNameNotFound bool
FindSharedByNameErr bool
FindPrivateByNameName string
FindPrivateByNameDomain models.DomainFields
FindPrivateByNameNotFound bool
FindPrivateByNameErr bool
CreateDomainName string
CreateDomainOwningOrgGuid string
CreateSharedDomainName string
DeleteDomainGuid string
DeleteApiResponse error
DeleteSharedDomainGuid string
DeleteSharedApiResponse error
domainCursor int
}
func (repo *FakeDomainRepository) ListDomainsForOrg(orgGuid string, cb func(models.DomainFields) bool) error {
repo.ListDomainsForOrgGuid = orgGuid
for _, d := range repo.ListDomainsForOrgDomains {
cb(d)
}
return repo.ListDomainsForOrgApiResponse
}
func (repo *FakeDomainRepository) FindSharedByName(name string) (domain models.DomainFields, apiErr error) {
repo.FindSharedByNameName = name
domain = repo.FindSharedByNameDomain
if repo.FindSharedByNameNotFound {
apiErr = errors.NewModelNotFoundError("Domain", name)
}
if repo.FindSharedByNameErr {
apiErr = errors.New("Error finding domain")
}
return
}
func (repo *FakeDomainRepository) FindPrivateByName(name string) (domain models.DomainFields, apiErr error) {
repo.FindPrivateByNameName = name
domain = repo.FindPrivateByNameDomain
if repo.FindPrivateByNameNotFound {
apiErr = errors.NewModelNotFoundError("Domain", name)
}
if repo.FindPrivateByNameErr {
apiErr = errors.New("Error finding domain")
}
return
}
func (repo *FakeDomainRepository) FindByNameInOrg(name string, owningOrgGuid string) (domain models.DomainFields, apiErr error) {
repo.FindByNameInOrgName = name
repo.FindByNameInOrgGuid = owningOrgGuid
if len(repo.FindByNameInOrgDomain) == 0 {
domain = models.DomainFields{}
} else {
domain = repo.FindByNameInOrgDomain[repo.domainCursor]
repo.domainCursor++
}
apiErr = repo.FindByNameInOrgApiResponse
return
}
func (repo *FakeDomainRepository) Create(domainName string, owningOrgGuid string) (createdDomain models.DomainFields, apiErr error) {
repo.CreateDomainName = domainName
repo.CreateDomainOwningOrgGuid = owningOrgGuid
return
}
func (repo *FakeDomainRepository) CreateSharedDomain(domainName string) (apiErr error) {
repo.CreateSharedDomainName = domainName
return
}
func (repo *FakeDomainRepository) Delete(domainGuid string) (apiErr error) {
repo.DeleteDomainGuid = domainGuid
apiErr = repo.DeleteApiResponse
return
}
func (repo *FakeDomainRepository) DeleteSharedDomain(domainGuid string) (apiErr error) {
repo.DeleteSharedDomainGuid = domainGuid
apiErr = repo.DeleteSharedApiResponse
return
}
func (repo *FakeDomainRepository) FirstOrDefault(orgGuid string, name *string) (domain models.DomainFields, error error) {
if name == nil {
domain, error = repo.defaultDomain(orgGuid)
} else {
domain, error = repo.FindByNameInOrg(*name, orgGuid)
}
return
}
func (repo *FakeDomainRepository) defaultDomain(orgGuid string) (models.DomainFields, error) {
var foundDomain *models.DomainFields
repo.ListDomainsForOrg(orgGuid, func(domain models.DomainFields) bool {
foundDomain = &domain
return !domain.Shared
})
if foundDomain == nil {
return models.DomainFields{}, errors.New("Could not find a default domain")
}
return *foundDomain, nil
}