@@ -2022,6 +2022,122 @@ def test_014_feature_set_empty_value_dom0(self):
20222022
20232023 self .assertEqual (os .path .exists (service_path ), False )
20242024
2025+ def test_020_app_dispvm_init (self ):
2026+ self .features ["service.app-dispvm.short-name" ] = "1"
2027+ short_name_hash = "uRc_3Q51DYlZXclkZX_BN2iYvUkKh8qXRxkqvvGAwEI"
2028+ long_name = "long-nameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
2029+ long_name_hash = "Szm7u1YaqyWBAi2tG6eCWfXYIE7YHxQU7hpcCYZ1qbc"
2030+ self .features [(f"service.app-dispvm.{ long_name } " )] = "1"
2031+
2032+ self .ext .on_domain_qdb_create (self .vm , "domain-qdb-create" )
2033+ self .assertEqual (
2034+ sorted (self .vm .untrusted_qdb .mock_calls ),
2035+ [
2036+ (
2037+ "write" ,
2038+ (f"/hash-app-dispvm/{ long_name_hash } " , long_name ),
2039+ {},
2040+ ),
2041+ (
2042+ "write" ,
2043+ (f"/hash-app-dispvm/{ short_name_hash } " , "short-name" ),
2044+ {},
2045+ ),
2046+ ("write" , ("/qubes-service/app-dispvm.short-name" , "1" ), {}),
2047+ ("write" , ("/qubes-service/meminfo-writer" , "1" ), {}),
2048+ ],
2049+ )
2050+
2051+ def test_021_app_dispvm_add (self ):
2052+ short_name_hash = "uRc_3Q51DYlZXclkZX_BN2iYvUkKh8qXRxkqvvGAwEI"
2053+ long_name = "long-nameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
2054+ long_name_hash = "Szm7u1YaqyWBAi2tG6eCWfXYIE7YHxQU7hpcCYZ1qbc"
2055+ self .ext .on_domain_feature_pre_set (
2056+ self .vm ,
2057+ "feature-set:service.app-dispvm.short-name" ,
2058+ "service.app-dispvm.short-name" ,
2059+ "1" ,
2060+ )
2061+ self .ext .on_domain_feature_set (
2062+ self .vm ,
2063+ "feature-set:service.app-dispvm.short-name" ,
2064+ "service.app-dispvm.short-name" ,
2065+ "1" ,
2066+ )
2067+ self .assertEqual (
2068+ sorted (self .vm .untrusted_qdb .mock_calls ),
2069+ [
2070+ (
2071+ "write" ,
2072+ (f"/hash-app-dispvm/{ short_name_hash } " , "short-name" ),
2073+ {},
2074+ ),
2075+ ("write" , ("/qubes-service/app-dispvm.short-name" , "1" ), {}),
2076+ ],
2077+ )
2078+
2079+ self .ext .on_domain_feature_pre_set (
2080+ self .vm ,
2081+ f"feature-set:service.app-dispvm.{ long_name } " ,
2082+ f"service.app-dispvm.{ long_name } " ,
2083+ "1" ,
2084+ )
2085+ self .ext .on_domain_feature_set (
2086+ self .vm ,
2087+ f"feature-set:service.app-dispvm.{ long_name } " ,
2088+ f"service.app-dispvm.{ long_name } " ,
2089+ "1" ,
2090+ )
2091+
2092+ self .assertEqual (
2093+ sorted (self .vm .untrusted_qdb .mock_calls ),
2094+ [
2095+ (
2096+ "write" ,
2097+ (f"/hash-app-dispvm/{ long_name_hash } " , long_name ),
2098+ {},
2099+ ),
2100+ (
2101+ "write" ,
2102+ (f"/hash-app-dispvm/{ short_name_hash } " , "short-name" ),
2103+ {},
2104+ ),
2105+ ("write" , ("/qubes-service/app-dispvm.short-name" , "1" ), {}),
2106+ ],
2107+ )
2108+
2109+ def test_022_app_dispvm_del (self ):
2110+ short_name_hash = "uRc_3Q51DYlZXclkZX_BN2iYvUkKh8qXRxkqvvGAwEI"
2111+ long_name = "long-nameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
2112+ long_name_hash = "Szm7u1YaqyWBAi2tG6eCWfXYIE7YHxQU7hpcCYZ1qbc"
2113+ self .ext .on_domain_feature_delete (
2114+ self .vm ,
2115+ "feature-set:service.app-dispvm.short-name" ,
2116+ "service.app-dispvm.short-name" ,
2117+ )
2118+ self .assertEqual (
2119+ sorted (self .vm .untrusted_qdb .mock_calls ),
2120+ [
2121+ ("rm" , (f"/hash-app-dispvm/{ short_name_hash } " ,), {}),
2122+ ("rm" , ("/qubes-service/app-dispvm.short-name" ,), {}),
2123+ ],
2124+ )
2125+
2126+ self .ext .on_domain_feature_delete (
2127+ self .vm ,
2128+ f"feature-set:service.app-dispvm.{ long_name } " ,
2129+ f"service.app-dispvm.{ long_name } " ,
2130+ )
2131+
2132+ self .assertEqual (
2133+ sorted (self .vm .untrusted_qdb .mock_calls ),
2134+ [
2135+ ("rm" , (f"/hash-app-dispvm/{ long_name_hash } " ,), {}),
2136+ ("rm" , (f"/hash-app-dispvm/{ short_name_hash } " ,), {}),
2137+ ("rm" , ("/qubes-service/app-dispvm.short-name" ,), {}),
2138+ ],
2139+ )
2140+
20252141
20262142class TC_20_VmConfig (qubes .tests .QubesTestCase ):
20272143 def setUp (self ):
0 commit comments