@@ -38,11 +38,13 @@ import (
38
38
"tailscale.com/derp/derphttp"
39
39
"tailscale.com/types/key"
40
40
41
+ "cdr.dev/slog/sloggers/slogtest"
41
42
"github.com/coder/coder/v2/cli"
42
43
"github.com/coder/coder/v2/cli/clitest"
43
44
"github.com/coder/coder/v2/cli/config"
44
45
"github.com/coder/coder/v2/coderd/coderdtest"
45
46
"github.com/coder/coder/v2/coderd/database/dbtestutil"
47
+ "github.com/coder/coder/v2/coderd/database/migrations"
46
48
"github.com/coder/coder/v2/coderd/httpapi"
47
49
"github.com/coder/coder/v2/coderd/telemetry"
48
50
"github.com/coder/coder/v2/codersdk"
@@ -1828,20 +1830,48 @@ func TestConnectToPostgres(t *testing.T) {
1828
1830
if ! dbtestutil .WillUsePostgres () {
1829
1831
t .Skip ("this test does not make sense without postgres" )
1830
1832
}
1831
- ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
1832
- t .Cleanup (cancel )
1833
1833
1834
- log := testutil .Logger (t )
1834
+ t .Run ("Migrate" , func (t * testing.T ) {
1835
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
1836
+ t .Cleanup (cancel )
1835
1837
1836
- dbURL , err := dbtestutil .Open (t )
1837
- require .NoError (t , err )
1838
+ log := testutil .Logger (t )
1838
1839
1839
- sqlDB , err := cli .ConnectToPostgres (ctx , log , true , "postgres" , dbURL )
1840
- require .NoError (t , err )
1841
- t .Cleanup (func () {
1842
- _ = sqlDB .Close ()
1840
+ dbURL , err := dbtestutil .Open (t )
1841
+ require .NoError (t , err )
1842
+
1843
+ sqlDB , err := cli .ConnectToPostgres (ctx , log , "postgres" , dbURL , migrations .Up )
1844
+ require .NoError (t , err )
1845
+ t .Cleanup (func () {
1846
+ _ = sqlDB .Close ()
1847
+ })
1848
+ require .NoError (t , sqlDB .PingContext (ctx ))
1843
1849
})
1844
- require .NoError (t , sqlDB .PingContext (ctx ))
1850
+
1851
+ t .Run ("NoMigrate" , func (t * testing.T ) {
1852
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
1853
+ t .Cleanup (cancel )
1854
+
1855
+ log := slogtest .Make (t , & slogtest.Options {IgnoreErrors : true })
1856
+
1857
+ dbURL , err := dbtestutil .Open (t )
1858
+ require .NoError (t , err )
1859
+
1860
+ okDB , err := cli .ConnectToPostgres (ctx , log , "postgres" , dbURL , nil )
1861
+ require .NoError (t , err )
1862
+ defer okDB .Close ()
1863
+
1864
+ // Set the migration number forward
1865
+ _ , err = okDB .Exec (`UPDATE schema_migrations SET version = version + 1` )
1866
+ require .NoError (t , err )
1867
+
1868
+ _ , err = cli .ConnectToPostgres (ctx , log , "postgres" , dbURL , nil )
1869
+ require .Error (t , err )
1870
+ require .ErrorContains (t , err , "database needs migration" )
1871
+
1872
+ require .NoError (t , okDB .PingContext (ctx ))
1873
+ })
1874
+
1845
1875
}
1846
1876
1847
1877
func TestServer_InvalidDERP (t * testing.T ) {
0 commit comments