1####################################################### 2# 3# Redmine #4791: body perms mode 4# 5####################################################### 6 7body common control 8{ 9 inputs => { "../../default.cf.sub" }; 10 bundlesequence => { default("$(this.promise_filename)") }; 11 version => "1.0"; 12} 13 14####################################################### 15 16bundle agent test 17{ 18 vars: 19 freebsd|solaris:: 20 "modes" slist => { "1", "333", "100", "200", "777", "o=x", "ugo=wx", "u=x", "u=w", "ugo=rwx" }; 21 !freebsd.!solaris:: 22 "modes" slist => { "1", "333", "100", "200", "777", "1111", "1010", "13400", "22222", "o=x", "ugo=wx", "u=x", "u=w", "ugo=rwx" }; 23 24 files: 25 "$(G.testdir)/$(modes)" 26 create => "true", 27 perms => test_mode($(modes)); 28} 29 30body perms test_mode(m) 31{ 32 mode => "$(m)"; 33} 34 35bundle agent check 36{ 37 vars: 38 "modes" slist => { @(test.modes) }; 39 windows:: 40 "win_r" string => "100444"; 41 "win_w" string => "100666"; 42 "expected" data => parsejson(' 43{ 44 "1": "$(win_r)", 45 "333": "$(win_w)", 46 "100": "$(win_r)", 47 "200": "$(win_w)", 48 "777": "$(win_w)", 49 "1111": "$(win_r)", 50 "1010": "$(win_r)", 51 "13400": "$(win_r)", 52 "22222": "$(win_r)", 53 "o=x": "$(win_r)", 54 "ugo=wx": "$(win_w)", 55 "u=x": "$(win_r)", 56 "u=w": "$(win_w)", 57 "ugo=rwx": "$(win_w)", 58}'); 59 60 freebsd|solaris:: 61 "expected" data => parsejson(' 62{ 63 "1": "100001", 64 "333": "100333", 65 "100": "100100", 66 "200": "100200", 67 "777": "100777", 68 "o=x": "100001", 69 "ugo=wx": "100333", 70 "u=x": "100100", 71 "u=w": "100200", 72 "ugo=rwx": "100777", 73}'); 74 75 !freebsd.!solaris.!windows:: 76 "expected" data => parsejson(' 77{ 78 "1": "100001", 79 "333": "100333", 80 "100": "100100", 81 "200": "100200", 82 "777": "100777", 83 "1111": "101111", 84 "1010": "101010", 85 "13400": "103400", 86 "22222": "102222", 87 "o=x": "100001", 88 "ugo=wx": "100333", 89 "u=x": "100100", 90 "u=w": "100200", 91 "ugo=rwx": "100777", 92}'); 93 94 any:: 95 "actual[$(modes)]" string => filestat("$(G.testdir)/$(modes)", "modeoct"); 96 "canonified[$(modes)]" string => canonify("$(modes)"); 97 98 classes: 99 "ok_$(canonified[$(modes)])" expression => strcmp("$(expected[$(modes)])", "$(actual[$(modes)])"); 100 101 freebsd|solaris:: 102 "ok" and => { "ok_1", "ok_333", "ok_100", "ok_200", "ok_777", classify("ok_o=x"), classify("ok_ugo=wx"), classify("ok_u=x"), classify("ok_u=w"), classify("ok_ugo=rwx") }; 103 104 !freebsd.!solaris:: 105 "ok" and => { "ok_1", "ok_333", "ok_100", "ok_200", "ok_777", "ok_1111", "ok_1010", "ok_13400", "ok_22222", classify("ok_o=x"), classify("ok_ugo=wx"), classify("ok_u=x"), classify("ok_u=w"), classify("ok_ugo=rwx") }; 106 107 reports: 108 DEBUG:: 109 "Permission $(modes) worked, got $(expected[$(modes)])" if => "ok_$(canonified[$(modes)])"; 110 "Permission $(modes) failed, expected $(expected[$(modes)]) != actual $(actual[$(modes)])" if => "!ok_$(canonified[$(modes)])"; 111 ok:: 112 "$(this.promise_filename) Pass"; 113 !ok:: 114 "$(this.promise_filename) FAIL"; 115} 116 117### PROJECT_ID: core 118### CATEGORY_ID: 27 119