@@ -1888,10 +1888,47 @@ module PostHog
18881888 expect ( FeatureFlagsPoller . match_property ( property2 , { 'version' => '1.2.3' } ) ) . to be true
18891889 end
18901890
1891- it 'with semver operators and leading zeros' do
1891+ it 'with semver operators rejects override values with leading zeros' do
18921892 property = { 'key' => 'version' , 'value' => '1.2.3' , 'operator' => 'semver_eq' }
1893- expect ( FeatureFlagsPoller . match_property ( property , { 'version' => '01.02.03' } ) ) . to be true
1894- expect ( FeatureFlagsPoller . match_property ( property , { 'version' => '001.002.003' } ) ) . to be true
1893+
1894+ [ '01.2.3' , '1.02.3' , '1.2.03' , '1.07.3' , '001.2.3' , '01.02.03' , '001.002.003' ] . each do |bad |
1895+ expect do
1896+ FeatureFlagsPoller . match_property ( property , { 'version' => bad } )
1897+ end . to raise_error ( InconclusiveMatchError ) , "expected #{ bad . inspect } to be rejected"
1898+ end
1899+ end
1900+
1901+ it 'with semver operators rejects flag values with leading zeros' do
1902+ gt = { 'key' => 'version' , 'value' => '1.07.3' , 'operator' => 'semver_gt' }
1903+ expect do
1904+ FeatureFlagsPoller . match_property ( gt , { 'version' => '2.0.0' } )
1905+ end . to raise_error ( InconclusiveMatchError )
1906+
1907+ caret = { 'key' => 'version' , 'value' => '01.2.3' , 'operator' => 'semver_caret' }
1908+ expect do
1909+ FeatureFlagsPoller . match_property ( caret , { 'version' => '1.2.3' } )
1910+ end . to raise_error ( InconclusiveMatchError )
1911+
1912+ tilde = { 'key' => 'version' , 'value' => '1.02.3' , 'operator' => 'semver_tilde' }
1913+ expect do
1914+ FeatureFlagsPoller . match_property ( tilde , { 'version' => '1.2.3' } )
1915+ end . to raise_error ( InconclusiveMatchError )
1916+
1917+ wildcard = { 'key' => 'version' , 'value' => '01.*' , 'operator' => 'semver_wildcard' }
1918+ expect do
1919+ FeatureFlagsPoller . match_property ( wildcard , { 'version' => '1.2.3' } )
1920+ end . to raise_error ( InconclusiveMatchError )
1921+ end
1922+
1923+ it 'with semver operators accepts literal zero components' do
1924+ eq_zero = { 'key' => 'version' , 'value' => '0.1.0' , 'operator' => 'semver_eq' }
1925+ expect ( FeatureFlagsPoller . match_property ( eq_zero , { 'version' => '0.1.0' } ) ) . to be true
1926+
1927+ eq_zero_zero = { 'key' => 'version' , 'value' => '0.0.0' , 'operator' => 'semver_eq' }
1928+ expect ( FeatureFlagsPoller . match_property ( eq_zero_zero , { 'version' => '0.0.0' } ) ) . to be true
1929+
1930+ eq_major_zero = { 'key' => 'version' , 'value' => '1.0.0' , 'operator' => 'semver_eq' }
1931+ expect ( FeatureFlagsPoller . match_property ( eq_major_zero , { 'version' => '1.0.0' } ) ) . to be true
18951932 end
18961933
18971934 it 'with semver operators and partial versions' do
0 commit comments