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

1 line
16 KiB
Python

ZnJvbSBvZG9vLmV4Y2VwdGlvbnMgaW1wb3J0IEFjY2Vzc0Vycm9yCgpmcm9tIC5jb21tb24gaW1wb3J0IENvbW1vblRlc3QKCgpjbGFzcyBUZXN0UHJvamVjdChDb21tb25UZXN0KToKICAgICIiIlRlc3QgY2xhc3MgZm9yIGdpdCBwcm9qZWN0LiIiIgoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICBzdXBlcigpLnNldFVwQ2xhc3MoKQogICAgICAgICMgUmVtb3ZlIHVzZXIgYm9iIGZyb20gYWxsIGdyb3VwcwogICAgICAgIGNscy5yZW1vdmVfZnJvbV9ncm91cCgKICAgICAgICAgICAgY2xzLnVzZXJfYm9iLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAiY2V0bWl4X3Rvd2VyX3NlcnZlci5ncm91cF91c2VyIiwKICAgICAgICAgICAgICAgICJjZXRtaXhfdG93ZXJfc2VydmVyLmdyb3VwX21hbmFnZXIiLAogICAgICAgICAgICAgICAgImNldG1peF90b3dlcl9zZXJ2ZXIuZ3JvdXBfcm9vdCIsCiAgICAgICAgICAgIF0sCiAgICAgICAgKQoKICAgICAgICAjIENyZWF0ZSBhbm90aGVyIG1hbmFnZXIgZm9yIHRlc3RpbmcKICAgICAgICBjbHMubWFuYWdlcl8yID0gY2xzLlVzZXJzLmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiU2Vjb25kIE1hbmFnZXIiLAogICAgICAgICAgICAgICAgImxvZ2luIjogIm1hbmFnZXIyIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtYW5hZ2VyMkB0ZXN0LmNvbSIsCiAgICAgICAgICAgICAgICAiZ3JvdXBzX2lkIjogWyg0LCBjbHMuZW52LnJlZigiY2V0bWl4X3Rvd2VyX3NlcnZlci5ncm91cF9tYW5hZ2VyIikuaWQpXSwKICAgICAgICAgICAgfQogICAgICAgICkKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBwcm9qZWN0IGFzIHJvb3QKICAgICAgICBjbHMucHJvamVjdCA9IGNscy5HaXRQcm9qZWN0LmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiVGVzdCBQcm9qZWN0IiwKICAgICAgICAgICAgfQogICAgICAgICkKCiAgICBkZWYgdGVzdF91c2VyX2FjY2VzcyhzZWxmKToKICAgICAgICAiIiJUZXN0IHRoYXQgcmVndWxhciB1c2VycyBoYXZlIG5vIGFjY2VzcyB0byBnaXQgcHJvamVjdHMiIiIKICAgICAgICB1c2VyX3Byb2plY3QgPSBzZWxmLkdpdFByb2plY3Qud2l0aF91c2VyKHNlbGYudXNlcikKCiAgICAgICAgIyBUZXN0IENSVUQgb3BlcmF0aW9ucwogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICB1c2VyX3Byb2plY3QuY3JlYXRlKHsibmFtZSI6ICJOZXcgUHJvamVjdCJ9KQogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICB1c2VyX3Byb2plY3QuYnJvd3NlKHNlbGYucHJvamVjdC5pZCkucmVhZChbIm5hbWUiXSkKICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFjY2Vzc0Vycm9yKToKICAgICAgICAgICAgdXNlcl9wcm9qZWN0LmJyb3dzZShzZWxmLnByb2plY3QuaWQpLndyaXRlKHsibmFtZSI6ICJVcGRhdGVkIE5hbWUifSkKICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFjY2Vzc0Vycm9yKToKICAgICAgICAgICAgdXNlcl9wcm9qZWN0LmJyb3dzZShzZWxmLnByb2plY3QuaWQpLnVubGluaygpCgogICAgZGVmIHRlc3RfbWFuYWdlcl9yZWFkX2FjY2VzcyhzZWxmKToKICAgICAgICAiIiJUZXN0IG1hbmFnZXIgcmVhZCBhY2Nlc3MgcnVsZXMiIiIKICAgICAgICBtYW5hZ2VyX3Byb2plY3QgPSBzZWxmLkdpdFByb2plY3Qud2l0aF91c2VyKHNlbGYubWFuYWdlcikKCiAgICAgICAgIyBNYW5hZ2VyIG5vdCBpbiB1c2VyX2lkcyBvciBtYW5hZ2VyX2lkcyAtIHNob3VsZCBub3QgcmVhZAogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICBtYW5hZ2VyX3Byb2plY3QuYnJvd3NlKHNlbGYucHJvamVjdC5pZCkucmVhZChbIm5hbWUiXSkKCiAgICAgICAgIyBBZGQgbWFuYWdlciB0byB1c2VyX2lkcyAtIHNob3VsZCByZWFkCiAgICAgICAgc2VsZi5wcm9qZWN0LndyaXRlKHsidXNlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXJfcHJvamVjdC5icm93c2Uoc2VsZi5wcm9qZWN0LmlkKS5uYW1lLCAiVGVzdCBQcm9qZWN0IikKCiAgICAgICAgIyBSZW1vdmUgZnJvbSB1c2VyX2lkcywgYWRkIHRvIG1hbmFnZXJfaWRzIC0gc2hvdWxkIHJlYWQKICAgICAgICBzZWxmLnByb2plY3Qud3JpdGUoCiAgICAgICAgICAgIHsidXNlcl9pZHMiOiBbKDMsIHNlbGYubWFuYWdlci5pZCldLCAibWFuYWdlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfQogICAgICAgICkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXJfcHJvamVjdC5icm93c2Uoc2VsZi5wcm9qZWN0LmlkKS5uYW1lLCAiVGVzdCBQcm9qZWN0IikKCiAgICBkZWYgdGVzdF9tYW5hZ2VyX3dyaXRlX2FjY2VzcyhzZWxmKToKICAgICAgICAiIiJUZXN0IG1hbmFnZXIgd3JpdGUvY3JlYXRlIGFjY2VzcyBydWxlcyIiIgogICAgICAgIG1hbmFnZXJfcHJvamVjdCA9IHNlbGYuR2l0UHJvamVjdC53aXRoX3VzZXIoc2VsZi5tYW5hZ2VyKQoKICAgICAgICAjIENyZWF0ZSAtIHNob3VsZCBzdWNjZWVkIGFzIG1hbmFnZXIgaXMgYWRkZWQgYnkgZGVmYXVsdAogICAgICAgIG5ld19wcm9qZWN0ID0gbWFuYWdlcl9wcm9qZWN0LmNyZWF0ZSh7Im5hbWUiOiAiTmV3IFByb2plY3QifSkKICAgICAgICBzZWxmLmFzc2VydFRydWUobmV3X3Byb2plY3QuZXhpc3RzKCkpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1hbmFnZXIsIG5ld19wcm9qZWN0Lm1hbmFnZXJfaWRzKQoKICAgICAgICAjIFdyaXRlIC0gbm90IGluIG1hbmFnZXJfaWRzLCBzaG91bGQgZmFpbAogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICBtYW5hZ2VyX3Byb2plY3QuYnJvd3NlKHNlbGYucHJvamVjdC5pZCkud3JpdGUoeyJuYW1lIjogIlVwZGF0ZWQgTmFtZSJ9KQoKICAgICAgICAjIEFkZCB0byBtYW5hZ2VyX2lkcyAtIHNob3VsZCB3cml0ZQogICAgICAgIHNlbGYucHJvamVjdC53cml0ZSh7Im1hbmFnZXJfaWRzIjogWyg0LCBzZWxmLm1hbmFnZXIuaWQpXX0pCiAgICAgICAgbWFuYWdlcl9wcm9qZWN0LmJyb3dzZShzZWxmLnByb2plY3QuaWQpLndyaXRlKHsibmFtZSI6ICJVcGRhdGVkIE5hbWUifSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvamVjdC5uYW1lLCAiVXBkYXRlZCBOYW1lIikKCiAgICBkZWYgdGVzdF9tYW5hZ2VyX3VubGlua19hY2Nlc3Moc2VsZik6CiAgICAgICAgIiIiVGVzdCBtYW5hZ2VyIHVubGluayBhY2Nlc3MgcnVsZXMiIiIKICAgICAgICAjIENyZWF0ZSBwcm9qZWN0IGFzIG1hbmFnZXJfMgogICAgICAgIHByb2plY3QgPSBzZWxmLkdpdFByb2plY3Qud2l0aF91c2VyKHNlbGYubWFuYWdlcl8yKS5jcmVhdGUoCiAgICAgICAgICAgIHsibmFtZSI6ICJQcm9qZWN0IHRvIERlbGV0ZSJ9CiAgICAgICAgKQogICAgICAgIG1hbmFnZXJfcHJvamVjdCA9IHNlbGYuR2l0UHJvamVjdC53aXRoX3VzZXIoc2VsZi5tYW5hZ2VyKQoKICAgICAgICAjIFRyeSBkZWxldGUgYXMgZGlmZmVyZW50IG1hbmFnZXIgLSBzaG91bGQgZmFpbAogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQWNjZXNzRXJyb3IpOgogICAgICAgICAgICBtYW5hZ2VyX3Byb2plY3QuYnJvd3NlKHByb2plY3QuaWQpLnVubGluaygpCgogICAgICAgICMgQWRkIHRvIG1hbmFnZXJfaWRzIGJ1dCBub3QgY3JlYXRvciAtIHNob3VsZCBmYWlsCiAgICAgICAgcHJvamVjdC53cml0ZSh7Im1hbmFnZXJfaWRzIjogWyg0LCBzZWxmLm1hbmFnZXIuaWQpXX0pCiAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBY2Nlc3NFcnJvcik6CiAgICAgICAgICAgIG1hbmFnZXJfcHJvamVjdC5icm93c2UocHJvamVjdC5pZCkudW5saW5rKCkKCiAgICAgICAgIyBDcmVhdGUgYXMgbWFuYWdlciBhbmQgdHJ5IGRlbGV0ZSAtIHNob3VsZCBzdWNjZWVkCiAgICAgICAgb3duX3Byb2plY3QgPSBtYW5hZ2VyX3Byb2plY3QuY3JlYXRlKHsibmFtZSI6ICJPd24gUHJvamVjdCJ9KQogICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvd25fcHJvamVjdC5leGlzdHMoKSkKICAgICAgICBvd25fcHJvamVjdC51bmxpbmsoKQogICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3duX3Byb2plY3QuZXhpc3RzKCkpCgogICAgZGVmIHRlc3Rfcm9vdF9hY2Nlc3Moc2VsZik6CiAgICAgICAgIiIiVGVzdCByb290IGFjY2VzcyBydWxlcyIiIgogICAgICAgIHJvb3RfcHJvamVjdCA9IHNlbGYuR2l0UHJvamVjdC53aXRoX3VzZXIoc2VsZi5yb290KQoKICAgICAgICAjIENyZWF0ZQogICAgICAgIG5ld19wcm9qZWN0ID0gcm9vdF9wcm9qZWN0LmNyZWF0ZSh7Im5hbWUiOiAiUm9vdCBQcm9qZWN0In0pCiAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld19wcm9qZWN0LmV4aXN0cygpKQoKICAgICAgICAjIFJlYWQKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvb3RfcHJvamVjdC5icm93c2Uoc2VsZi5wcm9qZWN0LmlkKS5uYW1lLCAiVGVzdCBQcm9qZWN0IikKCiAgICAgICAgIyBXcml0ZQogICAgICAgIHJvb3RfcHJvamVjdC5icm93c2Uoc2VsZi5wcm9qZWN0LmlkKS53cml0ZSh7Im5hbWUiOiAiVXBkYXRlZCBieSBSb290In0pCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QubmFtZSwgIlVwZGF0ZWQgYnkgUm9vdCIpCgogICAgICAgICMgRGVsZXRlCiAgICAgICAgbmV3X3Byb2plY3QudW5saW5rKCkKICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld19wcm9qZWN0LmV4aXN0cygpKQoKICAgIGRlZiB0ZXN0X2NvbXB1dGVfdXNlcl9pZHMoc2VsZik6CiAgICAgICAgIiIiVGVzdCBjb21wdXRhdGlvbiBvZiB1c2VyX2lkcyBhbmQgbWFuYWdlcl9pZHMgZm9yIGdpdCBwcm9qZWN0cyIiIgogICAgICAgICMgQWRkIHVzZXJzICJCb2IiIGFuZCAidXNlciIgdG8gdGhlIGdyb3VwICJjZXRtaXhfdG93ZXJfc2VydmVyLmdyb3VwX21hbmFnZXIiCiAgICAgICAgc2VsZi5hZGRfdG9fZ3JvdXAoc2VsZi51c2VyX2JvYiwgImNldG1peF90b3dlcl9zZXJ2ZXIuZ3JvdXBfbWFuYWdlciIpCiAgICAgICAgc2VsZi5hZGRfdG9fZ3JvdXAoc2VsZi51c2VyLCAiY2V0bWl4X3Rvd2VyX3NlcnZlci5ncm91cF9tYW5hZ2VyIikKCiAgICAgICAgIyAtLSAxIC0tCiAgICAgICAgIyBDcmVhdGUgcHJvamVjdCBhcyBtYW5hZ2VyCiAgICAgICAgcHJvamVjdF9hc19tYW5hZ2VyID0gc2VsZi5HaXRQcm9qZWN0LndpdGhfdXNlcihzZWxmLm1hbmFnZXIpLmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiUHJvamVjdCBBcyBNYW5hZ2VyIiwKICAgICAgICAgICAgfQogICAgICAgICkKICAgICAgICAjIENoZWNrIHRoYXQgbWFuYWdlciBpcyBhZGRlZCB0byBib3RoIHVzZXJfaWRzIGFuZCBtYW5hZ2VyX2lkcyBieSBkZWZhdWx0CiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocHJvamVjdF9hc19tYW5hZ2VyLnVzZXJfaWRzKSwgMSkKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubWFuYWdlciwgcHJvamVjdF9hc19tYW5hZ2VyLnVzZXJfaWRzKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHByb2plY3RfYXNfbWFuYWdlci5tYW5hZ2VyX2lkcyksIDEpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1hbmFnZXIsIHByb2plY3RfYXNfbWFuYWdlci5tYW5hZ2VyX2lkcykKCiAgICAgICAgIyAtLSAyIC0tCiAgICAgICAgIyBDcmVhdGUgc2VydmVycyB3aXRoIG11bHRpcGxlIHVzZXJzIGFuZCBtYW5hZ2VycwogICAgICAgIHNlcnZlcl8xID0gc2VsZi5TZXJ2ZXIuY3JlYXRlKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJUZXN0IFNlcnZlciAxIiwKICAgICAgICAgICAgICAgICJpcF92NF9hZGRyZXNzIjogImxvY2FsaG9zdCIsCiAgICAgICAgICAgICAgICAic3NoX3VzZXJuYW1lIjogImFkbWluIiwKICAgICAgICAgICAgICAgICJzc2hfcGFzc3dvcmQiOiAicGFzc3dvcmQiLAogICAgICAgICAgICAgICAgIm9zX2lkIjogc2VsZi5vc19kZWJpYW5fMTAuaWQsCiAgICAgICAgICAgICAgICAidXNlcl9pZHMiOiBbKDYsIDAsIFtzZWxmLnVzZXJfYm9iLmlkLCBzZWxmLnVzZXIuaWRdKV0sICAjIFR3byB1c2VycwogICAgICAgICAgICAgICAgIm1hbmFnZXJfaWRzIjogWwogICAgICAgICAgICAgICAgICAgICg2LCAwLCBbc2VsZi5tYW5hZ2VyLmlkLCBzZWxmLm1hbmFnZXJfMi5pZF0pCiAgICAgICAgICAgICAgICBdLCAgIyBUd28gbWFuYWdlcnMKICAgICAgICAgICAgfQogICAgICAgICkKCiAgICAgICAgc2VydmVyXzIgPSBzZWxmLlNlcnZlci5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlRlc3QgU2VydmVyIDIiLAogICAgICAgICAgICAgICAgImlwX3Y0X2FkZHJlc3MiOiAibG9jYWxob3N0IiwKICAgICAgICAgICAgICAgICJzc2hfdXNlcm5hbWUiOiAiYWRtaW4iLAogICAgICAgICAgICAgICAgInNzaF9wYXNzd29yZCI6ICJwYXNzd29yZCIsCiAgICAgICAgICAgICAgICAib3NfaWQiOiBzZWxmLm9zX2RlYmlhbl8xMC5pZCwKICAgICAgICAgICAgICAgICJ1c2VyX2lkcyI6IFsKICAgICAgICAgICAgICAgICAgICAoNiwgMCwgW3NlbGYudXNlcl9ib2IuaWQsIHNlbGYudXNlci5pZF0pCiAgICAgICAgICAgICAgICBdLCAgIyBTYW1lIHR3byB1c2VycwogICAgICAgICAgICAgICAgIm1hbmFnZXJfaWRzIjogWwogICAgICAgICAgICAgICAgICAgICg2LCAwLCBbc2VsZi5tYW5hZ2VyLmlkLCBzZWxmLm1hbmFnZXJfMi5pZF0pCiAgICAgICAgICAgICAgICBdLCAgIyBTYW1lIHR3byBtYW5hZ2VycwogICAgICAgICAgICB9CiAgICAgICAgKQoKICAgICAgICAjIENyZWF0ZSBwcm9qZWN0IGFuZCBsaW5rIHNlcnZlcnMKICAgICAgICBwcm9qZWN0ID0gc2VsZi5HaXRQcm9qZWN0LmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiVGVzdCBQcm9qZWN0IiwKICAgICAgICAgICAgfQogICAgICAgICkKCiAgICAgICAgIyBDcmVhdGUgZmlsZXMgYW5kIGxpbmsgdGhlbSB0byB0aGUgcHJvamVjdAogICAgICAgIGZvciBzZXJ2ZXIgaW4gW3NlcnZlcl8xLCBzZXJ2ZXJfMl06CiAgICAgICAgICAgIGZpbGUgPSBzZWxmLkZpbGUuY3JlYXRlKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogZiJ0ZXN0X2ZpbGVfe3NlcnZlci5uYW1lfSIsCiAgICAgICAgICAgICAgICAgICAgInNlcnZlcl9pZCI6IHNlcnZlci5pZCwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLkdpdFByb2plY3RSZWwuY3JlYXRlKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJzZXJ2ZXJfaWQiOiBzZXJ2ZXIuaWQsCiAgICAgICAgICAgICAgICAgICAgImZpbGVfaWQiOiBmaWxlLmlkLAogICAgICAgICAgICAgICAgICAgICJnaXRfcHJvamVjdF9pZCI6IHByb2plY3QuaWQsCiAgICAgICAgICAgICAgICAgICAgInByb2plY3RfZm9ybWF0IjogImdpdF9hZ2dyZWdhdG9yIiwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKQoKICAgICAgICAjIEludmFsaWRhdGUgY2FjaGUgdG8gZW5zdXJlIGNvbXB1dGVkIGZpZWxkcyBhcmUgdXBkYXRlZAogICAgICAgIHByb2plY3QuaW52YWxpZGF0ZV9yZWNvcmRzZXQoWyJzZXJ2ZXJfaWRzIiwgInVzZXJfaWRzIiwgIm1hbmFnZXJfaWRzIl0pCgogICAgICAgICMgLS0gMyAtLQogICAgICAgICMgVGVzdCBjb21wdXRlZCB2YWx1ZXMgd2l0aCBsaW5rZWQgc2VydmVycwogICAgICAgICMgRWFjaCB1c2VyL21hbmFnZXIgc2hvdWxkIGJlIGNvdW50ZWQgb25seSBvbmNlIGV2ZW4gaWYgcHJlc2VudCBpbiBib3RoIHNlcnZlcnMKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwcm9qZWN0LnNlcnZlcl9pZHMpLCAyKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHByb2plY3QudXNlcl9pZHMpLCAyKSAgIyBUd28gdW5pcXVlIHVzZXJzCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnVzZXJfYm9iLCBwcm9qZWN0LnVzZXJfaWRzKQogICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi51c2VyLCBwcm9qZWN0LnVzZXJfaWRzKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHByb2plY3QubWFuYWdlcl9pZHMpLCAyKSAgIyBUd28gdW5pcXVlIG1hbmFnZXJzCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1hbmFnZXIsIHByb2plY3QubWFuYWdlcl9pZHMpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1hbmFnZXJfMiwgcHJvamVjdC5tYW5hZ2VyX2lkcykKCiAgICAgICAgIyAtLSA0IC0tCiAgICAgICAgIyBBZGQgc2VydmVyIHdpdGggZGlmZmVyZW50IHVzZXJzL21hbmFnZXJzCiAgICAgICAgc2VydmVyXzMgPSBzZWxmLlNlcnZlci5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlRlc3QgU2VydmVyIDMiLAogICAgICAgICAgICAgICAgImlwX3Y0X2FkZHJlc3MiOiAibG9jYWxob3N0IiwKICAgICAgICAgICAgICAgICJzc2hfdXNlcm5hbWUiOiAiYWRtaW4iLAogICAgICAgICAgICAgICAgInNzaF9wYXNzd29yZCI6ICJwYXNzd29yZCIsCiAgICAgICAgICAgICAgICAib3NfaWQiOiBzZWxmLm9zX2RlYmlhbl8xMC5pZCwKICAgICAgICAgICAgICAgICJ1c2VyX2lkcyI6IFsoNiwgMCwgW3NlbGYudXNlcl9ib2IuaWRdKV0sICAjIE9ubHkgb25lIHVzZXIKICAgICAgICAgICAgICAgICJtYW5hZ2VyX2lkcyI6IFsoNiwgMCwgW3NlbGYubWFuYWdlcl8yLmlkXSldLCAgIyBPbmx5IHNlY29uZCBtYW5hZ2VyCiAgICAgICAgICAgIH0KICAgICAgICApCiAgICAgICAgZmlsZV8zID0gc2VsZi5GaWxlLmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAidGVzdF9maWxlXzMiLAogICAgICAgICAgICAgICAgInNlcnZlcl9pZCI6IHNlcnZlcl8zLmlkLAogICAgICAgICAgICB9CiAgICAgICAgKQogICAgICAgIHNlbGYuR2l0UHJvamVjdFJlbC5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJzZXJ2ZXJfaWQiOiBzZXJ2ZXJfMy5pZCwKICAgICAgICAgICAgICAgICJmaWxlX2lkIjogZmlsZV8zLmlkLAogICAgICAgICAgICAgICAgImdpdF9wcm9qZWN0X2lkIjogcHJvamVjdC5pZCwKICAgICAgICAgICAgICAgICJwcm9qZWN0X2Zvcm1hdCI6ICJnaXRfYWdncmVnYXRvciIsCiAgICAgICAgICAgIH0KICAgICAgICApCgogICAgICAgICMgSW52YWxpZGF0ZSBjYWNoZSB0byBlbnN1cmUgY29tcHV0ZWQgZmllbGRzIGFyZSB1cGRhdGVkCiAgICAgICAgcHJvamVjdC5pbnZhbGlkYXRlX3JlY29yZHNldChbInNlcnZlcl9pZHMiLCAidXNlcl9pZHMiLCAibWFuYWdlcl9pZHMiXSkKCiAgICAgICAgIyBUZXN0IHRoYXQgY29tcHV0ZWQgdmFsdWVzIGFyZSB1cGRhdGVkIGNvcnJlY3RseQogICAgICAgICMgT25seSB1c2Vycy9tYW5hZ2VycyBwcmVzZW50IGluIGFsbCBzZXJ2ZXJzIHNob3VsZCByZW1haW4KICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwcm9qZWN0LnNlcnZlcl9pZHMpLCAzKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHByb2plY3QudXNlcl9pZHMpLCAxKSAgIyBPbmx5IGJvYiBpcyBpbiBhbGwgc2VydmVycwogICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi51c2VyX2JvYiwgcHJvamVjdC51c2VyX2lkcykKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICBsZW4ocHJvamVjdC5tYW5hZ2VyX2lkcyksIDEKICAgICAgICApICAjIE9ubHkgbWFuYWdlcl8yIGlzIGluIGFsbCBzZXJ2ZXJzCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1hbmFnZXJfMiwgcHJvamVjdC5tYW5hZ2VyX2lkcykKCiAgICAgICAgIyAtLSA1IC0tCiAgICAgICAgIyBWZXJpZnkgdGhhdCBmaXJzdCBtYW5hZ2VyIGNhbiBzdGlsbCBhY2Nlc3MgdGhlIHByb2plY3QKICAgICAgICBwcm9qZWN0X2FzX21hbmFnZXJfMSA9IHNlbGYuR2l0UHJvamVjdC53aXRoX3VzZXIoc2VsZi5tYW5hZ2VyKS5icm93c2UoCiAgICAgICAgICAgIHByb2plY3QuaWQKICAgICAgICApCiAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2plY3RfYXNfbWFuYWdlcl8xLmV4aXN0cygpKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvamVjdF9hc19tYW5hZ2VyXzEubmFtZSwgIlRlc3QgUHJvamVjdCIpCgogICAgZGVmIHRlc3RfbWFuYWdlcl9zZXJ2ZXJfYmFzZWRfYWNjZXNzKHNlbGYpOgogICAgICAgICIiIlRlc3QgbWFuYWdlciBhY2Nlc3MgdGhyb3VnaCBzZXJ2ZXIgcmVsYXRpb25zaGlwcyIiIgogICAgICAgIG1hbmFnZXJfcHJvamVjdCA9IHNlbGYuR2l0UHJvamVjdC53aXRoX3VzZXIoc2VsZi5tYW5hZ2VyKQoKICAgICAgICAjIENyZWF0ZSBhIHNlcnZlciB3aGVyZSBtYW5hZ2VyIGlzIGEgdXNlcgogICAgICAgIHNlcnZlciA9IHNlbGYuU2VydmVyLmNyZWF0ZSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiVGVzdCBTZXJ2ZXIiLAogICAgICAgICAgICAgICAgImlwX3Y0X2FkZHJlc3MiOiAibG9jYWxob3N0IiwKICAgICAgICAgICAgICAgICJzc2hfdXNlcm5hbWUiOiAiYWRtaW4iLAogICAgICAgICAgICAgICAgInNzaF9wYXNzd29yZCI6ICJwYXNzd29yZCIsCiAgICAgICAgICAgICAgICAib3NfaWQiOiBzZWxmLm9zX2RlYmlhbl8xMC5pZCwKICAgICAgICAgICAgICAgICJ1c2VyX2lkcyI6IFsoNCwgc2VsZi5tYW5hZ2VyLmlkKV0sCiAgICAgICAgICAgIH0KICAgICAgICApCgogICAgICAgICMgQ3JlYXRlIGEgZmlsZSBhbmQgbGluayBwcm9qZWN0IHRvIHNlcnZlcgogICAgICAgIGZpbGUgPSBzZWxmLkZpbGUuY3JlYXRlKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJ0ZXN0X2ZpbGUiLAogICAgICAgICAgICAgICAgInNlcnZlcl9pZCI6IHNlcnZlci5pZCwKICAgICAgICAgICAgfQogICAgICAgICkKICAgICAgICBzZWxmLkdpdFByb2plY3RSZWwuY3JlYXRlKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAic2VydmVyX2lkIjogc2VydmVyLmlkLAogICAgICAgICAgICAgICAgImZpbGVfaWQiOiBmaWxlLmlkLAogICAgICAgICAgICAgICAgImdpdF9wcm9qZWN0X2lkIjogc2VsZi5wcm9qZWN0LmlkLAogICAgICAgICAgICAgICAgInByb2plY3RfZm9ybWF0IjogImdpdF9hZ2dyZWdhdG9yIiwKICAgICAgICAgICAgfQogICAgICAgICkKCiAgICAgICAgIyBNYW5hZ2VyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgcHJvamVjdCB0aHJvdWdoIHNlcnZlciByZWxhdGlvbnNoaXAKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXJfcHJvamVjdC5icm93c2Uoc2VsZi5wcm9qZWN0LmlkKS5uYW1lLCAiVGVzdCBQcm9qZWN0IikKCiAgICAgICAgIyBSZW1vdmUgbWFuYWdlciBmcm9tIHNlcnZlciB1c2VycwogICAgICAgIHNlcnZlci53cml0ZSh7InVzZXJfaWRzIjogWygzLCBzZWxmLm1hbmFnZXIuaWQpXX0pCgogICAgICAgICMgTWFuYWdlciBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhZCBwcm9qZWN0IGFueW1vcmUKICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFjY2Vzc0Vycm9yKToKICAgICAgICAgICAgbWFuYWdlcl9wcm9qZWN0LmJyb3dzZShzZWxmLnByb2plY3QuaWQpLnJlYWQoWyJuYW1lIl0pCgogICAgICAgICMgQWRkIG1hbmFnZXIgdG8gc2VydmVyIG1hbmFnZXJzCiAgICAgICAgc2VydmVyLndyaXRlKHsibWFuYWdlcl9pZHMiOiBbKDQsIHNlbGYubWFuYWdlci5pZCldfSkKCiAgICAgICAgIyBNYW5hZ2VyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgcHJvamVjdCBhZ2FpbgogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlcl9wcm9qZWN0LmJyb3dzZShzZWxmLnByb2plY3QuaWQpLm5hbWUsICJUZXN0IFByb2plY3QiKQo=