Files
odoo-addons/addons/cetmix_tower_git/tests/test_file_template_rel.py

1 line
14 KiB
Python

ZnJvbSBvZG9vLmV4Y2VwdGlvbnMgaW1wb3J0IEFjY2Vzc0Vycm9yCgpmcm9tIC5jb21tb24gaW1wb3J0IENvbW1vblRlc3QKCgpjbGFzcyBUZXN0RmlsZVRlbXBsYXRlUmVsKENvbW1vblRlc3QpOgogICAgIiIiVGVzdCBjbGFzcyBmb3IgZ2l0IGZpbGUgdGVtcGxhdGUgcmVsYXRpb24uIiIiCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgIHN1cGVyKCkuc2V0VXBDbGFzcygpCiAgICAgICAgY2xzLmZpbGVfdGVtcGxhdGVfMV9yZWwgPSBjbHMuR2l0UHJvamVjdEZpbGVUZW1wbGF0ZVJlbC5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJnaXRfcHJvamVjdF9pZCI6IGNscy5naXRfcHJvamVjdF8xLmlkLAogICAgICAgICAgICAgICAgImZpbGVfdGVtcGxhdGVfaWQiOiBjbHMuZmlsZV90ZW1wbGF0ZV8xLmlkLAogICAgICAgICAgICAgICAgInByb2plY3RfZm9ybWF0IjogImdpdF9hZ2dyZWdhdG9yIiwKICAgICAgICAgICAgfQogICAgICAgICkKCiAgICBkZWYgdGVzdF9maWxlX3RlbXBsYXRlX3JlbF9jcmVhdGUoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiBmaWxlIHRlbXBsYXRlIHJlbGF0aW9uIGlzIGNyZWF0ZWQgY29ycmVjdGx5IiIiCgogICAgICAgICMgLS0gMSAtLQogICAgICAgICMgQ2hlY2sgaWYgZmlsZSBjb250ZW50IGlzIHVwZGF0ZWQKCiAgICAgICAgIyBHZXQgY29kZSBmcm9tIHByb2plY3QKICAgICAgICB5YW1sX2NvZGVfZnJvbV9wcm9qZWN0ID0gKAogICAgICAgICAgICBzZWxmLmZpbGVfdGVtcGxhdGVfMV9yZWwuZ2l0X3Byb2plY3RfaWQuX2dlbmVyYXRlX2NvZGVfZ2l0X2FnZ3JlZ2F0b3IoCiAgICAgICAgICAgICAgICBzZWxmLmZpbGVfdGVtcGxhdGVfMV9yZWwKICAgICAgICAgICAgKQogICAgICAgICkKCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgc2VsZi5maWxlX3RlbXBsYXRlXzEuY29kZSwKICAgICAgICAgICAgeWFtbF9jb2RlX2Zyb21fcHJvamVjdCwKICAgICAgICAgICAgIkZpbGUgdGVtcGxhdGUgY29udGVudCBpcyBub3QgdXBkYXRlZCBjb3JyZWN0bHkiLAogICAgICAgICkKCiAgICAgICAgIyBDaGVjayBzcGVjaWZpYyBpZiByZW1vdGUgaXMgcHJlc2VudCBpbiBmaWxlCiAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgc2VsZi5yZW1vdGVfb3RoZXJfc3NoLnJlcG9faWQudXJsX3NzaCwKICAgICAgICAgICAgc2VsZi5maWxlX3RlbXBsYXRlXzEuY29kZSwKICAgICAgICAgICAgIlJlbW90ZSBpcyBub3QgcHJlc2VudCBpbiBmaWxlIHRlbXBsYXRlIiwKICAgICAgICApCgogICAgICAgICMgLS0gMiAtLQogICAgICAgICMgTW9kaWZ5IHJlbW92ZSBhbmQgY2hlY2sgaWYgZmlsZSB0ZW1wbGF0ZSBjb250ZW50IGlzIHVwZGF0ZWQKICAgICAgICBzZWxmLnJlbW90ZV9vdGhlcl9zc2gucmVwb19pZCA9IHNlbGYuUmVwby5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NldG1peC9jZXRtaXgtbWVtZXMuZ2l0IiwKICAgICAgICAgICAgfQogICAgICAgICkKICAgICAgICBzZWxmLnJlbW90ZV9vdGhlcl9zc2gudXJsX3Byb3RvY29sID0gImh0dHBzIgoKICAgICAgICAjIE11c3QgYmUgZGlmZmVyZW50IGZyb20gcHJldmlvdXMgcHJvamVjdCBjb2RlCiAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKICAgICAgICAgICAgc2VsZi5maWxlX3RlbXBsYXRlXzEuY29kZSwKICAgICAgICAgICAgeWFtbF9jb2RlX2Zyb21fcHJvamVjdCwKICAgICAgICAgICAgIkZpbGUgdGVtcGxhdGUgY29udGVudCBpcyBub3QgdXBkYXRlZCBjb3JyZWN0bHkiLAogICAgICAgICkKICAgICAgICAjIE5ldyByZW1vdGUgbXVzdCBiZSBwcmVzZW50IGluIGZpbGUKICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAiaHR0cHM6Ly9naXRodWIuY29tL2NldG1peC9jZXRtaXgtbWVtZXMuZ2l0IiwKICAgICAgICAgICAgc2VsZi5maWxlX3RlbXBsYXRlXzEuY29kZSwKICAgICAgICAgICAgIlJlbW90ZSBpcyBub3QgcHJlc2VudCBpbiBmaWxlIHRlbXBsYXRlIiwKICAgICAgICApCgogICAgICAgICMgLS0gMyAtLQogICAgICAgICMgRGlzYWJsZSBzb3VyY2UgYW5kIGNoZWNrIGlmIGZpbGUgY29udGVudCBpcyB1cGRhdGVkCiAgICAgICAgc2VsZi5naXRfc291cmNlXzIuYWN0aXZlID0gRmFsc2UKICAgICAgICBzZWxmLmFzc2VydE5vdEluKAogICAgICAgICAgICAiaHR0cHM6Ly9naXRodWIuY29tL2NldG1peC9jZXRtaXgtbWVtZXMuZ2l0IiwKICAgICAgICAgICAgc2VsZi5maWxlX3RlbXBsYXRlXzEuY29kZSwKICAgICAgICAgICAgIlJlbW90ZSBpcyBwcmVzZW50IGluIGZpbGUgdGVtcGxhdGUiLAogICAgICAgICkKCiAgICBkZWYgdGVzdF9mb3JtYXRfZ2l0X2FnZ3JlZ2F0b3Ioc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiBmb3JtYXQgZ2l0IGFnZ3JlZ2F0b3Igd29ya3MgY29ycmVjdGx5IiIiCgogICAgICAgICMgLS0gMSAtLQogICAgICAgICMgQ2hlY2sgaWYgWUFNTCBjb2RlIGlzIGdlbmVyYXRlZCBjb3JyZWN0bHkKCiAgICAgICAgeWFtbF9jb2RlID0gIiIiIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIHdpdGggQ2V0bWl4IFRvd2VyIGh0dHBzOi8vY2V0bWl4LmNvbS90b3dlcgojIEl0J3MgZGVzaWduZWQgdG8gYmUgdXNlZCB3aXRoIGdpdC1hZ2dyZWdhdG9yIHRvb2wgZGV2ZWxvcGVkIGJ5IEFjc29uZS4KIyBEb2N1bWVudGF0aW9uIGZvciBnaXQtYWdncmVnYXRvcjogaHR0cHM6Ly9naXRodWIuY29tL2Fjc29uZS9naXQtYWdncmVnYXRvcgoKIyBZb3UgbmVlZCB0byBzZXQgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4geW91ciBlbnZpcm9ubWVudDoKIyBCSVRCVUNLRVRfVE9LRU4sIEdJVExBQl9UT0tFTiwgR0lUTEFCX1RPS0VOX05BTUUKIyBhbmQgcnVuIGdpdC1hZ2dyZWdhdG9yIHdpdGggJy0tZXhwYW5kLWVudicgcGFyYW1ldGVyLgoKLi9naXRfcHJvamVjdF8xX2dpdF9zb3VyY2VfMToKICByZW1vdGVzOgogICAgcmVtb3RlXzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9jZXRtaXgtdGVzdC9jZXRtaXgtdG93ZXItdGVzdC5naXQKICAgIHJlbW90ZV8yOiBodHRwczovLyRHSVRMQUJfVE9LRU5fTkFNRTokR0lUTEFCX1RPS0VOQG15LmdpdGxhYi5jb20vY2V0bWl4LXRlc3QvY2V0bWl4LXRvd2VyLXRlc3QuZ2l0CiAgICByZW1vdGVfMzogZ2l0QG15LmdpdGxhYi5jb206Y2V0bWl4LXRlc3QvY2V0bWl4LXRvd2VyLXRlc3QuZ2l0CiAgbWVyZ2VzOgogIC0gcmVtb3RlOiByZW1vdGVfMQogICAgcmVmOiByZWZzL3B1bGwvMTIzL2hlYWQKICAtIHJlbW90ZTogcmVtb3RlXzIKICAgIHJlZjogbWFpbgogIC0gcmVtb3RlOiByZW1vdGVfMwogICAgcmVmOiAnMTAwMDAwMDAnCiAgdGFyZ2V0OiByZW1vdGVfMQouL2dpdF9wcm9qZWN0XzFfZ2l0X3NvdXJjZV8xXzI6CiAgcmVtb3RlczoKICAgIHJlbW90ZV8xOiBodHRwczovL3gtdG9rZW4tYXV0aDokQklUQlVDS0VUX1RPS0VOQGJpdGJ1Y2tldC5jb20vY2V0bWl4LXRlc3QvY2V0bWl4LXRvd2VyLXRlc3QtZW50ZXJwcmlzZS5naXQKICAgIHJlbW90ZV8yOiBnaXRAbWVtZWdpdC5jb206Y2V0bWl4LXRlc3QvY2V0bWl4LXRvd2VyLXRlc3QuZ2l0CiAgbWVyZ2VzOgogIC0gcmVtb3RlOiByZW1vdGVfMQogICAgcmVmOiBkZXYKICAtIHJlbW90ZTogcmVtb3RlXzIKICAgIHJlZjogb2xkCiAgdGFyZ2V0OiByZW1vdGVfMQoiIiIgICMgbm9xYTogRTUwMQoKICAgICAgICAjIEdldCBjb2RlIGZyb20gcHJvamVjdAogICAgICAgIHlhbWxfY29kZV9mcm9tX3Byb2plY3QgPSAoCiAgICAgICAgICAgIHNlbGYuZmlsZV90ZW1wbGF0ZV8xX3JlbC5naXRfcHJvamVjdF9pZC5fZ2VuZXJhdGVfY29kZV9naXRfYWdncmVnYXRvcigKICAgICAgICAgICAgICAgIHNlbGYuZmlsZV90ZW1wbGF0ZV8xX3JlbAogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgIHlhbWxfY29kZV9mcm9tX3Byb2plY3QsCiAgICAgICAgICAgIHlhbWxfY29kZSwKICAgICAgICAgICAgIllBTUwgY29kZSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSIsCiAgICAgICAgKQoKICAgIGRlZiB0ZXN0X3VzZXJfYWNjZXNzKHNlbGYpOgogICAgICAgICIiIlRlc3QgdGhhdCByZWd1bGFyIHVzZXJzIGhhdmUgbm8gYWNjZXNzIHRvIGdpdCBwcm9qZWN0IHJlbGF0aW9ucyIiIgogICAgICAgIHVzZXJfcmVsID0gc2VsZi5HaXRQcm9qZWN0RmlsZVRlbXBsYXRlUmVsLndpdGhfdXNlcihzZWxmLnVzZXIpCgogICAgICAgICMgVHJ5IGNyZWF0ZSAtIHNob3VsZCBmYWlsCiAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBY2Nlc3NFcnJvcik6CiAgICAgICAgICAgIHVzZXJfcmVsLmNyZWF0ZSgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiZ2l0X3Byb2plY3RfaWQiOiBzZWxmLmdpdF9wcm9qZWN0XzEuaWQsCiAgICAgICAgICAgICAgICAgICAgImZpbGVfdGVtcGxhdGVfaWQiOiBzZWxmLmZpbGVfdGVtcGxhdGVfMS5pZCwKICAgICAgICAgICAgICAgICAgICAicHJvamVjdF9mb3JtYXQiOiAiZ2l0X2FnZ3JlZ2F0b3IiLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCgogICAgICAgICMgVHJ5IHJlYWQgLSBzaG91bGQgZmFpbAogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICB1c2VyX3JlbC5icm93c2Uoc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLmlkKS5yZWFkKFsibmFtZSJdKQoKICAgICAgICAjIFRyeSB3cml0ZSAtIHNob3VsZCBmYWlsCiAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBY2Nlc3NFcnJvcik6CiAgICAgICAgICAgIHVzZXJfcmVsLmJyb3dzZShzZWxmLmZpbGVfdGVtcGxhdGVfMV9yZWwuaWQpLndyaXRlKAogICAgICAgICAgICAgICAgeyJwcm9qZWN0X2Zvcm1hdCI6ICJnaXRfYWdncmVnYXRvciJ9CiAgICAgICAgICAgICkKCiAgICAgICAgIyBUcnkgdW5saW5rIC0gc2hvdWxkIGZhaWwKICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFjY2Vzc0Vycm9yKToKICAgICAgICAgICAgdXNlcl9yZWwuYnJvd3NlKHNlbGYuZmlsZV90ZW1wbGF0ZV8xX3JlbC5pZCkudW5saW5rKCkKCiAgICBkZWYgdGVzdF9tYW5hZ2VyX3JlYWRfYWNjZXNzKHNlbGYpOgogICAgICAgICIiIlRlc3QgbWFuYWdlciByZWFkIGFjY2VzcyBydWxlcyIiIgogICAgICAgIG1hbmFnZXJfcmVsID0gc2VsZi5HaXRQcm9qZWN0RmlsZVRlbXBsYXRlUmVsLndpdGhfdXNlcihzZWxmLm1hbmFnZXIpCgogICAgICAgICMgSW5pdGlhbGx5IG1hbmFnZXIgc2hvdWxkIG5vdCBoYXZlIGFjY2VzcwogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICBtYW5hZ2VyX3JlbC5icm93c2Uoc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLmlkKS5yZWFkKFsibmFtZSJdKQoKICAgICAgICAjIEFkZCBtYW5hZ2VyIGFzIHByb2plY3QgdXNlciAtIHNob3VsZCBoYXZlIHJlYWQgYWNjZXNzCiAgICAgICAgc2VsZi5naXRfcHJvamVjdF8xLndyaXRlKHsidXNlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICBtYW5hZ2VyX3JlbC5icm93c2Uoc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLmlkKS5uYW1lLCAiR2l0IFByb2plY3QgMSIKICAgICAgICApCgogICAgICAgICMgUmVtb3ZlIGZyb20gcHJvamVjdCwgYWRkIGFzIGZpbGUgdGVtcGxhdGUgdXNlcgogICAgICAgICMgc2hvdWxkIGhhdmUgcmVhZCBhY2Nlc3MKICAgICAgICBzZWxmLmdpdF9wcm9qZWN0XzEud3JpdGUoeyJ1c2VyX2lkcyI6IFsoMywgc2VsZi5tYW5hZ2VyLmlkKV19KQogICAgICAgIHNlbGYuZmlsZV90ZW1wbGF0ZV8xLndyaXRlKHsidXNlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICBtYW5hZ2VyX3JlbC5icm93c2Uoc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLmlkKS5uYW1lLCAiR2l0IFByb2plY3QgMSIKICAgICAgICApCgogICAgICAgICMgUmVtb3ZlIGZyb20gZmlsZSB0ZW1wbGF0ZSB1c2VycywgYWRkIGFzIHByb2plY3QgbWFuYWdlcgogICAgICAgICMgc2hvdWxkIGhhdmUgcmVhZCBhY2Nlc3MKICAgICAgICBzZWxmLmZpbGVfdGVtcGxhdGVfMS53cml0ZSh7InVzZXJfaWRzIjogWygzLCBzZWxmLm1hbmFnZXIuaWQpXX0pCiAgICAgICAgc2VsZi5naXRfcHJvamVjdF8xLndyaXRlKHsibWFuYWdlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICBtYW5hZ2VyX3JlbC5icm93c2Uoc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLmlkKS5uYW1lLCAiR2l0IFByb2plY3QgMSIKICAgICAgICApCgogICAgICAgICMgUmVtb3ZlIGZyb20gcHJvamVjdCwgYWRkIGFzIGZpbGUgdGVtcGxhdGUgbWFuYWdlcgogICAgICAgICMgc2hvdWxkIGhhdmUgcmVhZCBhY2Nlc3MKICAgICAgICBzZWxmLmdpdF9wcm9qZWN0XzEud3JpdGUoeyJtYW5hZ2VyX2lkcyI6IFsoMywgc2VsZi5tYW5hZ2VyLmlkKV19KQogICAgICAgIHNlbGYuZmlsZV90ZW1wbGF0ZV8xLndyaXRlKHsibWFuYWdlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICBtYW5hZ2VyX3JlbC5icm93c2Uoc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLmlkKS5uYW1lLCAiR2l0IFByb2plY3QgMSIKICAgICAgICApCgogICAgZGVmIHRlc3RfbWFuYWdlcl93cml0ZV9hY2Nlc3Moc2VsZik6CiAgICAgICAgIiIiVGVzdCBtYW5hZ2VyIHdyaXRlL2NyZWF0ZSBhY2Nlc3MgcnVsZXMiIiIKICAgICAgICBtYW5hZ2VyX3JlbCA9IHNlbGYuR2l0UHJvamVjdEZpbGVUZW1wbGF0ZVJlbC53aXRoX3VzZXIoc2VsZi5tYW5hZ2VyKQoKICAgICAgICAjIENyZWF0ZSBuZXcgZmlsZSB0ZW1wbGF0ZSB0byBhdm9pZCB1bmlxdWUgY29uc3RyYWludCB2aW9sYXRpb24KICAgICAgICBmaWxlX3RlbXBsYXRlXzIgPSBzZWxmLkZpbGVUZW1wbGF0ZS5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogInRlc3RfZmlsZV90ZW1wbGF0ZV8yIiwKICAgICAgICAgICAgfQogICAgICAgICkKCiAgICAgICAgIyBUcnkgY3JlYXRlIHdpdGhvdXQgYmVpbmcgcHJvamVjdCBhbmQgZmlsZSB0ZW1wbGF0ZSBtYW5hZ2VyIC0gc2hvdWxkIGZhaWwKICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFjY2Vzc0Vycm9yKToKICAgICAgICAgICAgbWFuYWdlcl9yZWwuY3JlYXRlKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJnaXRfcHJvamVjdF9pZCI6IHNlbGYuZ2l0X3Byb2plY3RfMS5pZCwKICAgICAgICAgICAgICAgICAgICAiZmlsZV90ZW1wbGF0ZV9pZCI6IGZpbGVfdGVtcGxhdGVfMi5pZCwKICAgICAgICAgICAgICAgICAgICAicHJvamVjdF9mb3JtYXQiOiAiZ2l0X2FnZ3JlZ2F0b3IiLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCgogICAgICAgICMgQWRkIGFzIHByb2plY3QgbWFuYWdlciBvbmx5IC0gc2hvdWxkIHN0aWxsIGZhaWwKICAgICAgICBmaWxlX3RlbXBsYXRlXzMgPSBzZWxmLkZpbGVUZW1wbGF0ZS5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogInRlc3RfZmlsZV90ZW1wbGF0ZV8zIiwKICAgICAgICAgICAgfQogICAgICAgICkKICAgICAgICBzZWxmLmdpdF9wcm9qZWN0XzEud3JpdGUoeyJtYW5hZ2VyX2lkcyI6IFsoNCwgc2VsZi5tYW5hZ2VyLmlkKV19KQogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICBtYW5hZ2VyX3JlbC5jcmVhdGUoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImdpdF9wcm9qZWN0X2lkIjogc2VsZi5naXRfcHJvamVjdF8xLmlkLAogICAgICAgICAgICAgICAgICAgICJmaWxlX3RlbXBsYXRlX2lkIjogZmlsZV90ZW1wbGF0ZV8zLmlkLAogICAgICAgICAgICAgICAgICAgICJwcm9qZWN0X2Zvcm1hdCI6ICJnaXRfYWdncmVnYXRvciIsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkKCiAgICAgICAgIyBBZGQgYXMgZmlsZSB0ZW1wbGF0ZSBtYW5hZ2VyIC0gc2hvdWxkIHN1Y2NlZWQKICAgICAgICBmaWxlX3RlbXBsYXRlXzQgPSBzZWxmLkZpbGVUZW1wbGF0ZS5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogInRlc3RfZmlsZV90ZW1wbGF0ZV80IiwKICAgICAgICAgICAgfQogICAgICAgICkKICAgICAgICBmaWxlX3RlbXBsYXRlXzQud3JpdGUoeyJtYW5hZ2VyX2lkcyI6IFsoNCwgc2VsZi5tYW5hZ2VyLmlkKV19KQogICAgICAgIHJlbCA9IG1hbmFnZXJfcmVsLmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImdpdF9wcm9qZWN0X2lkIjogc2VsZi5naXRfcHJvamVjdF8xLmlkLAogICAgICAgICAgICAgICAgImZpbGVfdGVtcGxhdGVfaWQiOiBmaWxlX3RlbXBsYXRlXzQuaWQsCiAgICAgICAgICAgICAgICAicHJvamVjdF9mb3JtYXQiOiAiZ2l0X2FnZ3JlZ2F0b3IiLAogICAgICAgICAgICB9CiAgICAgICAgKQogICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZWwuZXhpc3RzKCkpCgogICAgICAgICMgVGVzdCB3cml0ZSBhY2Nlc3MKICAgICAgICByZWwud3JpdGUoeyJwcm9qZWN0X2Zvcm1hdCI6ICJnaXRfYWdncmVnYXRvciJ9KQoKICAgICAgICAjIFJlbW92ZSBmaWxlIHRlbXBsYXRlIG1hbmFnZXIgYWNjZXNzIC0gc2hvdWxkIGZhaWwgdG8gd3JpdGUKICAgICAgICBmaWxlX3RlbXBsYXRlXzQud3JpdGUoeyJtYW5hZ2VyX2lkcyI6IFsoMywgc2VsZi5tYW5hZ2VyLmlkKV19KQogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICByZWwud3JpdGUoeyJwcm9qZWN0X2Zvcm1hdCI6ICJnaXRfYWdncmVnYXRvciJ9KQoKICAgICAgICAjIFJlbW92ZSBwcm9qZWN0IG1hbmFnZXIgYWNjZXNzIC0gc2hvdWxkIGZhaWwgdG8gd3JpdGUKICAgICAgICBzZWxmLmdpdF9wcm9qZWN0XzEud3JpdGUoeyJtYW5hZ2VyX2lkcyI6IFsoMywgc2VsZi5tYW5hZ2VyLmlkKV19KQogICAgICAgIGZpbGVfdGVtcGxhdGVfNC53cml0ZSh7Im1hbmFnZXJfaWRzIjogWyg0LCBzZWxmLm1hbmFnZXIuaWQpXX0pCiAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBY2Nlc3NFcnJvcik6CiAgICAgICAgICAgIHJlbC53cml0ZSh7InByb2plY3RfZm9ybWF0IjogImdpdF9hZ2dyZWdhdG9yIn0pCgogICAgZGVmIHRlc3RfbWFuYWdlcl91bmxpbmtfYWNjZXNzKHNlbGYpOgogICAgICAgICIiIlRlc3QgbWFuYWdlciB1bmxpbmsgYWNjZXNzIHJ1bGVzIiIiCiAgICAgICAgbWFuYWdlcl9yZWwgPSBzZWxmLkdpdFByb2plY3RGaWxlVGVtcGxhdGVSZWwud2l0aF91c2VyKHNlbGYubWFuYWdlcikKCiAgICAgICAgIyBUcnkgZGVsZXRlIHdpdGhvdXQgYmVpbmcgcHJvamVjdCBhbmQgc2VydmVyIG1hbmFnZXIgLSBzaG91bGQgZmFpbAogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICBtYW5hZ2VyX3JlbC5icm93c2Uoc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLmlkKS51bmxpbmsoKQoKICAgICAgICAjIEFkZCBhcyBwcm9qZWN0IG1hbmFnZXIgb25seSAtIHNob3VsZCBmYWlsCiAgICAgICAgc2VsZi5naXRfcHJvamVjdF8xLndyaXRlKHsibWFuYWdlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfSkKICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFjY2Vzc0Vycm9yKToKICAgICAgICAgICAgbWFuYWdlcl9yZWwuYnJvd3NlKHNlbGYuZmlsZV90ZW1wbGF0ZV8xX3JlbC5pZCkudW5saW5rKCkKCiAgICAgICAgIyBBZGQgYXMgZmlsZSB0ZW1wbGF0ZSBtYW5hZ2VyIC0gc2hvdWxkIHN1Y2NlZWQKICAgICAgICBzZWxmLmZpbGVfdGVtcGxhdGVfMS53cml0ZSh7Im1hbmFnZXJfaWRzIjogWyg0LCBzZWxmLm1hbmFnZXIuaWQpXX0pCiAgICAgICAgc2VsZi5maWxlX3RlbXBsYXRlXzFfcmVsLnVubGluaygpCiAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmZpbGVfdGVtcGxhdGVfMV9yZWwuZXhpc3RzKCkpCgogICAgZGVmIHRlc3Rfcm9vdF9hY2Nlc3Moc2VsZik6CiAgICAgICAgIiIiVGVzdCByb290IGFjY2VzcyBydWxlcyIiIgogICAgICAgIHJvb3RfcmVsID0gc2VsZi5HaXRQcm9qZWN0RmlsZVRlbXBsYXRlUmVsLndpdGhfdXNlcihzZWxmLnJvb3QpCgogICAgICAgICMgQ3JlYXRlIG5ldyBmaWxlIHRvIGF2b2lkIHVuaXF1ZSBjb25zdHJhaW50IHZpb2xhdGlvbgogICAgICAgIGZpbGVfdGVtcGxhdGVfMyA9IHNlbGYuRmlsZVRlbXBsYXRlLmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAidGVzdF9maWxlX3RlbXBsYXRlXzMiLAogICAgICAgICAgICB9CiAgICAgICAgKQoKICAgICAgICAjIENyZWF0ZSAtIHNob3VsZCBzdWNjZWVkCiAgICAgICAgcmVsID0gcm9vdF9yZWwuY3JlYXRlKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZ2l0X3Byb2plY3RfaWQiOiBzZWxmLmdpdF9wcm9qZWN0XzEuaWQsCiAgICAgICAgICAgICAgICAiZmlsZV90ZW1wbGF0ZV9pZCI6IGZpbGVfdGVtcGxhdGVfMy5pZCwKICAgICAgICAgICAgICAgICJwcm9qZWN0X2Zvcm1hdCI6ICJnaXRfYWdncmVnYXRvciIsCiAgICAgICAgICAgIH0KICAgICAgICApCiAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlbC5leGlzdHMoKSkKCiAgICAgICAgIyBSZWFkIC0gc2hvdWxkIHN1Y2NlZWQKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvb3RfcmVsLmJyb3dzZShyZWwuaWQpLm5hbWUsICJHaXQgUHJvamVjdCAxIikKCiAgICAgICAgIyBXcml0ZSAtIHNob3VsZCBzdWNjZWVkCiAgICAgICAgcm9vdF9yZWwuYnJvd3NlKHJlbC5pZCkud3JpdGUoeyJwcm9qZWN0X2Zvcm1hdCI6ICJnaXRfYWdncmVnYXRvciJ9KQoKICAgICAgICAjIERlbGV0ZSAtIHNob3VsZCBzdWNjZWVkCiAgICAgICAgcmVsLnVubGluaygpCiAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWwuZXhpc3RzKCkpCg==