@@ -1726,11 +1726,11 @@ func TestUserAutofillParameters(t *testing.T) {
1726
1726
t .Parallel ()
1727
1727
t .Run ("NotSelf" , func (t * testing.T ) {
1728
1728
t .Parallel ()
1729
- client , _ , api := coderdtest .NewWithAPI (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
1729
+ client1 , _ , api := coderdtest .NewWithAPI (t , & coderdtest.Options {})
1730
1730
1731
- u1 := coderdtest .CreateFirstUser (t , client )
1731
+ u1 := coderdtest .CreateFirstUser (t , client1 )
1732
1732
1733
- _ , u2 := coderdtest .CreateAnotherUser (t , client , u1 .OrganizationID )
1733
+ client2 , u2 := coderdtest .CreateAnotherUser (t , client1 , u1 .OrganizationID )
1734
1734
1735
1735
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
1736
1736
defer cancel ()
@@ -1745,25 +1745,32 @@ func TestUserAutofillParameters(t *testing.T) {
1745
1745
Required : true ,
1746
1746
}).Do ()
1747
1747
1748
- _ , err := client .UserAutofillParameters (
1748
+ _ , err := client2 .UserAutofillParameters (
1749
1749
ctx ,
1750
- u2 . ID .String (),
1751
- version .Template .ID . String () ,
1750
+ u1 . UserID .String (),
1751
+ version .Template .ID ,
1752
1752
)
1753
1753
1754
1754
var apiErr * codersdk.Error
1755
1755
require .ErrorAs (t , err , & apiErr )
1756
- require .Equal (t , http .StatusForbidden , apiErr .StatusCode ())
1756
+ require .Equal (t , http .StatusBadRequest , apiErr .StatusCode ())
1757
+
1758
+ // u1 should be able to read u2's parameters as u1 is site admin.
1759
+ _ , err = client1 .UserAutofillParameters (
1760
+ ctx ,
1761
+ u2 .ID .String (),
1762
+ version .Template .ID ,
1763
+ )
1764
+ require .NoError (t , err )
1757
1765
})
1758
1766
1759
1767
t .Run ("FindsParameters" , func (t * testing.T ) {
1760
1768
t .Parallel ()
1761
- client , _ , api := coderdtest .NewWithAPI (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
1769
+ client1 , _ , api := coderdtest .NewWithAPI (t , & coderdtest.Options {})
1762
1770
1763
- u1 := coderdtest .CreateFirstUser (t , client )
1771
+ u1 := coderdtest .CreateFirstUser (t , client1 )
1764
1772
1765
- ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
1766
- defer cancel ()
1773
+ client2 , u2 := coderdtest .CreateAnotherUser (t , client1 , u1 .OrganizationID )
1767
1774
1768
1775
db := api .Database
1769
1776
@@ -1773,29 +1780,66 @@ func TestUserAutofillParameters(t *testing.T) {
1773
1780
}).Params (database.TemplateVersionParameter {
1774
1781
Name : "param" ,
1775
1782
Required : true ,
1776
- }).Do ()
1783
+ },
1784
+ database.TemplateVersionParameter {
1785
+ Name : "param2" ,
1786
+ Ephemeral : true ,
1787
+ },
1788
+ ).Do ()
1789
+
1790
+ dbfake .WorkspaceBuild (t , db , database.Workspace {
1791
+ OwnerID : u2 .ID ,
1792
+ TemplateID : version .Template .ID ,
1793
+ }).Params (
1794
+ database.WorkspaceBuildParameter {
1795
+ Name : "param" ,
1796
+ Value : "foo" ,
1797
+ },
1798
+ database.WorkspaceBuildParameter {
1799
+ Name : "param2" ,
1800
+ Value : "bar" ,
1801
+ },
1802
+ ).Do ()
1777
1803
1778
- coderdtest .CreateWorkspace (t , client , u1 .OrganizationID , version .Template .ID ,
1779
- func (cwr * codersdk.CreateWorkspaceRequest ) {
1780
- cwr .RichParameterValues = []codersdk.WorkspaceBuildParameter {
1781
- {
1782
- Name : "param" ,
1783
- Value : "foo" ,
1784
- },
1785
- }
1786
- })
1804
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
1805
+ defer cancel ()
1787
1806
1788
- params , err := client .UserAutofillParameters (
1807
+ // Use client2 since client1 is site admin, so
1808
+ // we don't get good coverage on RBAC working.
1809
+ params , err := client2 .UserAutofillParameters (
1789
1810
ctx ,
1790
- u1 . UserID .String (),
1791
- version .Template .ID . String () ,
1811
+ u2 . ID .String (),
1812
+ version .Template .ID ,
1792
1813
)
1793
1814
require .NoError (t , err )
1794
1815
1795
1816
require .Equal (t , 1 , len (params ))
1796
1817
1797
1818
require .Equal (t , "param" , params [0 ].Name )
1798
1819
require .Equal (t , "foo" , params [0 ].Value )
1820
+
1821
+ // Verify that latest parameter value is returned.
1822
+ dbfake .WorkspaceBuild (t , db , database.Workspace {
1823
+ OwnerID : u2 .ID ,
1824
+ TemplateID : version .Template .ID ,
1825
+ }).Params (
1826
+ database.WorkspaceBuildParameter {
1827
+ Name : "param" ,
1828
+ Value : "foo_new" ,
1829
+ },
1830
+ ).Do ()
1831
+
1832
+ params , err = client2 .UserAutofillParameters (
1833
+ ctx ,
1834
+ u2 .ID .String (),
1835
+ version .Template .ID ,
1836
+ )
1837
+ require .NoError (t , err )
1838
+
1839
+ require .Equal (t , 1 , len (params ))
1840
+
1841
+ require .Equal (t , "param" , params [0 ].Name )
1842
+ require .Equal (t , "foo_new" , params [0 ].Value )
1799
1843
})
1800
1844
}
1801
1845
0 commit comments