From f22b900cda18aaff9c9d12e14e98cb07a9f3b89f Mon Sep 17 00:00:00 2001 From: Silvan Date: Mon, 15 Nov 2021 14:44:14 +0100 Subject: [PATCH] test(queries): org domain prepare funcs (#2648) * chore(queries): test suite for prepare stmt funcs * test(queries): prepare project funcs * refactor: add comments * test: simlify expected sql, added possibility to add args to expected queries * test(queries): prepare funcs in org * chore(backend): correct modules * test(queries): org domain prepare funcs * test: correct name --- internal/query/org_domain_test.go | 214 ++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 internal/query/org_domain_test.go diff --git a/internal/query/org_domain_test.go b/internal/query/org_domain_test.go new file mode 100644 index 0000000000..cc31f9a6ca --- /dev/null +++ b/internal/query/org_domain_test.go @@ -0,0 +1,214 @@ +package query + +import ( + "database/sql" + "database/sql/driver" + "errors" + "fmt" + "regexp" + "testing" + + "github.com/caos/zitadel/internal/domain" +) + +func Test_OrgDomainPrepares(t *testing.T) { + type want struct { + sqlExpectations sqlExpectation + err checkErr + } + tests := []struct { + name string + prepare interface{} + want want + object interface{} + }{ + { + name: "prepareDomainsQuery no result", + prepare: prepareDomainsQuery, + want: want{ + sqlExpectations: mockQueries( + regexp.QuoteMeta(`SELECT zitadel.projections.org_domains.creation_date,`+ + ` zitadel.projections.org_domains.change_date,`+ + ` zitadel.projections.org_domains.sequence,`+ + ` zitadel.projections.org_domains.domain,`+ + ` zitadel.projections.org_domains.org_id,`+ + ` zitadel.projections.org_domains.is_verified,`+ + ` zitadel.projections.org_domains.is_primary,`+ + ` zitadel.projections.org_domains.validation_type,`+ + ` COUNT(*) OVER ()`+ + ` FROM zitadel.projections.org_domains`), + nil, + nil, + ), + }, + object: &Domains{Domains: []*Domain{}}, + }, + { + name: "prepareDomainsQuery one result", + prepare: prepareDomainsQuery, + want: want{ + sqlExpectations: mockQueries( + regexp.QuoteMeta(`SELECT zitadel.projections.org_domains.creation_date,`+ + ` zitadel.projections.org_domains.change_date,`+ + ` zitadel.projections.org_domains.sequence,`+ + ` zitadel.projections.org_domains.domain,`+ + ` zitadel.projections.org_domains.org_id,`+ + ` zitadel.projections.org_domains.is_verified,`+ + ` zitadel.projections.org_domains.is_primary,`+ + ` zitadel.projections.org_domains.validation_type,`+ + ` COUNT(*) OVER ()`+ + ` FROM zitadel.projections.org_domains`), + []string{ + "id", + "creation_date", + "change_date", + "resource_owner", + "org_state", + "sequence", + "name", + "primary_domain", + "count", + }, + [][]driver.Value{ + { + testNow, + testNow, + uint64(20211109), + "zitadel.ch", + "ro", + true, + true, + domain.OrgDomainValidationTypeHTTP, + }, + }, + ), + }, + object: &Domains{ + SearchResponse: SearchResponse{ + Count: 1, + }, + Domains: []*Domain{ + { + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211109, + Domain: "zitadel.ch", + OrgID: "ro", + IsVerified: true, + IsPrimary: true, + ValidationType: domain.OrgDomainValidationTypeHTTP, + }, + }, + }, + }, + { + name: "prepareDomainsQuery multiple result", + prepare: prepareDomainsQuery, + want: want{ + sqlExpectations: mockQueries( + regexp.QuoteMeta(`SELECT zitadel.projections.org_domains.creation_date,`+ + ` zitadel.projections.org_domains.change_date,`+ + ` zitadel.projections.org_domains.sequence,`+ + ` zitadel.projections.org_domains.domain,`+ + ` zitadel.projections.org_domains.org_id,`+ + ` zitadel.projections.org_domains.is_verified,`+ + ` zitadel.projections.org_domains.is_primary,`+ + ` zitadel.projections.org_domains.validation_type,`+ + ` COUNT(*) OVER ()`+ + ` FROM zitadel.projections.org_domains`), + []string{ + "id", + "creation_date", + "change_date", + "resource_owner", + "org_state", + "sequence", + "name", + "primary_domain", + "count", + }, + [][]driver.Value{ + { + testNow, + testNow, + uint64(20211109), + "zitadel.ch", + "ro", + true, + true, + domain.OrgDomainValidationTypeHTTP, + }, + { + testNow, + testNow, + uint64(20211109), + "zitadel.ch", + "ro", + false, + false, + domain.OrgDomainValidationTypeDNS, + }, + }, + ), + }, + object: &Domains{ + SearchResponse: SearchResponse{ + Count: 2, + }, + Domains: []*Domain{ + { + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211109, + Domain: "zitadel.ch", + OrgID: "ro", + IsVerified: true, + IsPrimary: true, + ValidationType: domain.OrgDomainValidationTypeHTTP, + }, + { + CreationDate: testNow, + ChangeDate: testNow, + Sequence: 20211109, + Domain: "zitadel.ch", + OrgID: "ro", + IsVerified: false, + IsPrimary: false, + ValidationType: domain.OrgDomainValidationTypeDNS, + }, + }, + }, + }, + { + name: "prepareDomainsQuery sql err", + prepare: prepareDomainsQuery, + want: want{ + sqlExpectations: mockQueryErr( + regexp.QuoteMeta(`SELECT zitadel.projections.org_domains.creation_date,`+ + ` zitadel.projections.org_domains.change_date,`+ + ` zitadel.projections.org_domains.sequence,`+ + ` zitadel.projections.org_domains.domain,`+ + ` zitadel.projections.org_domains.org_id,`+ + ` zitadel.projections.org_domains.is_verified,`+ + ` zitadel.projections.org_domains.is_primary,`+ + ` zitadel.projections.org_domains.validation_type,`+ + ` COUNT(*) OVER ()`+ + ` FROM zitadel.projections.org_domains`), + sql.ErrConnDone, + ), + err: func(err error) (error, bool) { + if !errors.Is(err, sql.ErrConnDone) { + return fmt.Errorf("err should be sql.ErrConnDone got: %w", err), false + } + return nil, true + }, + }, + object: nil, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assertPrepare(t, tt.prepare, tt.object, tt.want.sqlExpectations, tt.want.err) + }) + } +}