@@ -1883,6 +1883,7 @@ func TestInsertWorkspaceResource(t *testing.T) {
18831883Name :"something" ,
18841884Type :"aws_instance" ,
18851885Agents : []* sdkproto.Agent {{
1886+ Name :"dev" ,
18861887Auth :& sdkproto.Agent_Token {
18871888Token :"bananas" ,
18881889},
@@ -1896,14 +1897,69 @@ func TestInsertWorkspaceResource(t *testing.T) {
18961897Name :"something" ,
18971898Type :"aws_instance" ,
18981899Agents : []* sdkproto.Agent {{
1900+ Name :"dev" ,
18991901Apps : []* sdkproto.App {{
19001902Slug :"a" ,
19011903}, {
19021904Slug :"a" ,
19031905}},
19041906}},
19051907})
1906- require .ErrorContains (t ,err ,"duplicate app slug" )
1908+ require .ErrorContains (t ,err ,`duplicate app slug, must be unique per template: "a"` )
1909+ err = insert (dbmem .New (),uuid .New (),& sdkproto.Resource {
1910+ Name :"something" ,
1911+ Type :"aws_instance" ,
1912+ Agents : []* sdkproto.Agent {{
1913+ Name :"dev1" ,
1914+ Apps : []* sdkproto.App {{
1915+ Slug :"a" ,
1916+ }},
1917+ }, {
1918+ Name :"dev2" ,
1919+ Apps : []* sdkproto.App {{
1920+ Slug :"a" ,
1921+ }},
1922+ }},
1923+ })
1924+ require .ErrorContains (t ,err ,`duplicate app slug, must be unique per template: "a"` )
1925+ })
1926+ t .Run ("AppSlugInvalid" ,func (t * testing.T ) {
1927+ t .Parallel ()
1928+ db := dbmem .New ()
1929+ job := uuid .New ()
1930+ err := insert (db ,job ,& sdkproto.Resource {
1931+ Name :"something" ,
1932+ Type :"aws_instance" ,
1933+ Agents : []* sdkproto.Agent {{
1934+ Name :"dev" ,
1935+ Apps : []* sdkproto.App {{
1936+ Slug :"dev_1" ,
1937+ }},
1938+ }},
1939+ })
1940+ require .ErrorContains (t ,err ,`app slug "dev_1" does not match regex` )
1941+ err = insert (db ,job ,& sdkproto.Resource {
1942+ Name :"something" ,
1943+ Type :"aws_instance" ,
1944+ Agents : []* sdkproto.Agent {{
1945+ Name :"dev" ,
1946+ Apps : []* sdkproto.App {{
1947+ Slug :"dev--1" ,
1948+ }},
1949+ }},
1950+ })
1951+ require .ErrorContains (t ,err ,`app slug "dev--1" does not match regex` )
1952+ err = insert (db ,job ,& sdkproto.Resource {
1953+ Name :"something" ,
1954+ Type :"aws_instance" ,
1955+ Agents : []* sdkproto.Agent {{
1956+ Name :"dev" ,
1957+ Apps : []* sdkproto.App {{
1958+ Slug :"Dev" ,
1959+ }},
1960+ }},
1961+ })
1962+ require .ErrorContains (t ,err ,`app slug "Dev" does not match regex` )
19071963})
19081964t .Run ("DuplicateAgentNames" ,func (t * testing.T ) {
19091965t .Parallel ()
@@ -1931,6 +1987,35 @@ func TestInsertWorkspaceResource(t *testing.T) {
19311987})
19321988require .ErrorContains (t ,err ,"duplicate agent name" )
19331989})
1990+ t .Run ("AgentNameInvalid" ,func (t * testing.T ) {
1991+ t .Parallel ()
1992+ db := dbmem .New ()
1993+ job := uuid .New ()
1994+ err := insert (db ,job ,& sdkproto.Resource {
1995+ Name :"something" ,
1996+ Type :"aws_instance" ,
1997+ Agents : []* sdkproto.Agent {{
1998+ Name :"Dev" ,
1999+ }},
2000+ })
2001+ require .NoError (t ,err )// uppercase is still allowed
2002+ err = insert (db ,job ,& sdkproto.Resource {
2003+ Name :"something" ,
2004+ Type :"aws_instance" ,
2005+ Agents : []* sdkproto.Agent {{
2006+ Name :"dev_1" ,
2007+ }},
2008+ })
2009+ require .ErrorContains (t ,err ,`agent name "dev_1" contains underscores` )// custom error for underscores
2010+ err = insert (db ,job ,& sdkproto.Resource {
2011+ Name :"something" ,
2012+ Type :"aws_instance" ,
2013+ Agents : []* sdkproto.Agent {{
2014+ Name :"dev--1" ,
2015+ }},
2016+ })
2017+ require .ErrorContains (t ,err ,`agent name "dev--1" does not match regex` )
2018+ })
19342019t .Run ("Success" ,func (t * testing.T ) {
19352020t .Parallel ()
19362021db := dbmem .New ()
@@ -2007,6 +2092,7 @@ func TestInsertWorkspaceResource(t *testing.T) {
20072092Name :"something" ,
20082093Type :"aws_instance" ,
20092094Agents : []* sdkproto.Agent {{
2095+ Name :"dev" ,
20102096DisplayApps :& sdkproto.DisplayApps {
20112097Vscode :true ,
20122098VscodeInsiders :true ,
@@ -2035,6 +2121,7 @@ func TestInsertWorkspaceResource(t *testing.T) {
20352121Name :"something" ,
20362122Type :"aws_instance" ,
20372123Agents : []* sdkproto.Agent {{
2124+ Name :"dev" ,
20382125DisplayApps :& sdkproto.DisplayApps {},
20392126}},
20402127})
@@ -2059,6 +2146,7 @@ func TestInsertWorkspaceResource(t *testing.T) {
20592146Name :"something" ,
20602147Type :"aws_instance" ,
20612148Agents : []* sdkproto.Agent {{
2149+ Name :"dev" ,
20622150DisplayApps :& sdkproto.DisplayApps {},
20632151ResourcesMonitoring :& sdkproto.ResourcesMonitoring {
20642152Memory :& sdkproto.MemoryResourceMonitor {