Skip to content

Commit 47d7204

Browse files
committed
refactor: simplify and streamline test cases
Reduce test redundancy by: - Using parameterized test for multiple secret patterns - Combining similar test scenarios - Removing excessive error message validation - Keeping only essential test coverage Maintains complete functionality validation while reducing test complexity and maintenance overhead. Signed-off-by: Edmund Miller <[email protected]>
1 parent 9232d17 commit 47d7204

File tree

2 files changed

+13
-73
lines changed

2 files changed

+13
-73
lines changed

plugins/nf-sqldb/src/test/nextflow/sql/ChannelSqlExtensionTest.groovy

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,25 +95,17 @@ class ChannelSqlExtensionTest extends Specification {
9595
rows.alpha == ['x1','y2','z3']
9696
}
9797

98-
def 'should provide helpful error message for unresolved secrets' () {
98+
def 'should error on unresolved secrets' () {
9999
given:
100100
def session = Mock(Session) {
101-
getConfig() >> [sql: [db: [athena: [
102-
url: 'jdbc:awsathena://AwsRegion=us-east-1;S3OutputLocation=s3://bucket;Workgroup=CompBio',
103-
user: 'secrets.ATHENA_USER',
104-
password: '[secret]'
105-
]]]]
101+
getConfig() >> [sql: [db: [test: [user: 'secrets.ATHENA_USER']]]]
106102
}
107-
def sqlExtension = new ChannelSqlExtension()
108103

109104
when:
110-
sqlExtension.init(session)
105+
new ChannelSqlExtension().init(session)
111106

112107
then:
113-
def e = thrown(IllegalArgumentException)
114-
e.message.contains("Unresolved secret detected")
115-
e.message.contains("secrets.ATHENA_USER")
116-
e.message.contains("workspace secrets are not properly configured")
108+
thrown(IllegalArgumentException)
117109
}
118110

119111
def 'should handle unknown database' () {

plugins/nf-sqldb/src/test/nextflow/sql/config/SqlDataSourceTest.groovy

Lines changed: 9 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -133,75 +133,23 @@ class SqlDataSourceTest extends Specification {
133133
ds1.hashCode() != ds3.hashCode()
134134
}
135135

136-
def 'should handle null credentials gracefully' () {
136+
def 'should detect unresolved secrets' () {
137137
when:
138-
def ds = new SqlDataSource([url: 'jdbc:h2:mem:', user: null, password: null])
139-
then:
140-
ds.user == SqlDataSource.DEFAULT_USER
141-
ds.password == null
142-
}
143-
144-
def 'should handle empty string credentials' () {
145-
when:
146-
def ds = new SqlDataSource([url: 'jdbc:h2:mem:', user: '', password: ''])
147-
then:
148-
ds.user == SqlDataSource.DEFAULT_USER
149-
ds.password == null
150-
}
151-
152-
def 'should detect unresolved secrets.* pattern' () {
153-
when:
154-
new SqlDataSource([user: 'secrets.ATHENA_USER'])
138+
new SqlDataSource([user: pattern])
155139
then:
156140
def e = thrown(IllegalArgumentException)
157-
e.message.contains("Unresolved secret detected for user")
158-
e.message.contains("secrets.ATHENA_USER")
141+
e.message.contains("Unresolved secret detected")
159142
e.message.contains("workspace secrets are not properly configured")
160-
}
161143

162-
def 'should detect unresolved [secret] pattern' () {
163-
when:
164-
new SqlDataSource([password: '[secret]'])
165-
then:
166-
def e = thrown(IllegalArgumentException)
167-
e.message.contains("Unresolved secret detected for password")
168-
e.message.contains("[secret]")
169-
e.message.contains("workspace secrets are not properly configured")
170-
}
171-
172-
def 'should allow valid secret-like strings that are not unresolved' () {
173-
when:
174-
def ds = new SqlDataSource([user: 'mysecret', password: 'secretpassword'])
175-
then:
176-
ds.user == 'mysecret'
177-
ds.password == 'secretpassword'
178-
}
179-
180-
def 'should handle secrets in fallback constructor' () {
181-
given:
182-
def fallback = new SqlDataSource([user: 'fallback_user', password: 'fallback_pass'])
183-
184-
when:
185-
new SqlDataSource([user: 'secrets.ATHENA_USER'], fallback)
186-
then:
187-
def e = thrown(IllegalArgumentException)
188-
e.message.contains("Unresolved secret detected for user")
144+
where:
145+
pattern << ['secrets.ATHENA_USER', '[secret]']
189146
}
190147

191-
def 'should provide comprehensive error message for secrets' () {
148+
def 'should allow valid credentials' () {
192149
when:
193-
new SqlDataSource([user: 'secrets.MISSING_SECRET'])
150+
def ds = new SqlDataSource([user: 'validuser', password: 'validpass'])
194151
then:
195-
def e = thrown(IllegalArgumentException)
196-
with(e.message) {
197-
contains("Unresolved secret detected")
198-
contains("secrets.MISSING_SECRET")
199-
contains("workspace secrets are not properly configured")
200-
contains("secret is defined in your workspace")
201-
contains("secret name matches exactly")
202-
contains("proper permissions")
203-
contains("Nextflow version supports secrets")
204-
contains("https://www.nextflow.io/docs/latest/secrets.html")
205-
}
152+
ds.user == 'validuser'
153+
ds.password == 'validpass'
206154
}
207155
}

0 commit comments

Comments
 (0)