diff --git a/addons/cetmix_tower_server/tests/test_tag_mixin.py b/addons/cetmix_tower_server/tests/test_tag_mixin.py new file mode 100644 index 0000000..3d5e08b --- /dev/null +++ b/addons/cetmix_tower_server/tests/test_tag_mixin.py @@ -0,0 +1 @@ +ZnJvbSAuY29tbW9uIGltcG9ydCBUZXN0VG93ZXJDb21tb24KCgpjbGFzcyBUZXN0VG93ZXJUYWdNaXhpbihUZXN0VG93ZXJDb21tb24pOgogICAgIiIiVGVzdCBjbGFzcyBmb3IgdG93ZXIgdGFnIG1peGluLiIiIgoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICBzdXBlcigpLnNldFVwQ2xhc3MoKQogICAgICAgICMgQ3JlYXRlIDMgdGFncyB0byB0ZXN0IHRhZyBtaXhpbgogICAgICAgIGNscy50YWdfdGVzdF8xID0gY2xzLlRhZy5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlRlc3QgVGFnIDEiLAogICAgICAgICAgICB9CiAgICAgICAgKQogICAgICAgIGNscy50YWdfdGVzdF8yID0gY2xzLlRhZy5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlRlc3QgVGFnIDIiLAogICAgICAgICAgICB9CiAgICAgICAgKQogICAgICAgIGNscy50YWdfdGVzdF8zID0gY2xzLlRhZy5jcmVhdGUoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlRlc3QgVGFnIDMiLAogICAgICAgICAgICB9CiAgICAgICAgKQoKICAgICAgICAjIENyZWF0ZSAzIGNvbW1hbmRzIHRvIHRlc3QgdGFnIG1peGluCiAgICAgICAgY2xzLmNvbW1hbmRfdGVzdF8xID0gY2xzLkNvbW1hbmQuY3JlYXRlKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJUZXN0IENvbW1hbmQgMSIsCiAgICAgICAgICAgIH0KICAgICAgICApCiAgICAgICAgY2xzLmNvbW1hbmRfdGVzdF8yID0gY2xzLkNvbW1hbmQuY3JlYXRlKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJUZXN0IENvbW1hbmQgMiIsCiAgICAgICAgICAgIH0KICAgICAgICApCiAgICAgICAgY2xzLmNvbW1hbmRfdGVzdF8zID0gY2xzLkNvbW1hbmQuY3JlYXRlKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJUZXN0IENvbW1hbmQgMyIsCiAgICAgICAgICAgIH0KICAgICAgICApCgogICAgICAgIGNscy5hbGxfY29tbWFuZHMgPSBjbHMuY29tbWFuZF90ZXN0XzEgfCBjbHMuY29tbWFuZF90ZXN0XzIgfCBjbHMuY29tbWFuZF90ZXN0XzMKCiAgICAgICAgIyBBZGQgdGFncyB0byBjb21tYW5kcwogICAgICAgICMgLSBDb21tYW5kIDE6IFRlc3QgVGFnIDEsIFRlc3QgVGFnIDIKICAgICAgICBjbHMuY29tbWFuZF90ZXN0XzEuYWRkX3RhZ3MoWyJUZXN0IFRhZyAxIiwgIlRlc3QgVGFnIDIiLCAiVGVzdCBUYWcgMyJdKQogICAgICAgICMgLSBDb21tYW5kIDI6IFRlc3QgVGFnIDIsIFRlc3QgVGFnIDMKICAgICAgICBjbHMuY29tbWFuZF90ZXN0XzIuYWRkX3RhZ3MoWyJUZXN0IFRhZyAyIiwgIlRlc3QgVGFnIDMiXSkKICAgICAgICAjIC0gQ29tbWFuZCAzOiBUZXN0IFRhZyAzCiAgICAgICAgY2xzLmNvbW1hbmRfdGVzdF8zLmFkZF90YWdzKFsiVGVzdCBUYWcgMyJdKQoKICAgIGRlZiB0ZXN0XzAxX2FkZF90YWdzKHNlbGYpOgogICAgICAgICIiIlRlc3QgdGhhdCB0YWdzIGFyZSBhZGRlZCB0byB0aGUgcmVjb3JkIiIiCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKSwgMykKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmNvbW1hbmRfdGVzdF8yLnRhZ19pZHMpLCAyKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuY29tbWFuZF90ZXN0XzMudGFnX2lkcyksIDEpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRhZ190ZXN0XzEsIHNlbGYuY29tbWFuZF90ZXN0XzEudGFnX2lkcykKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYudGFnX3Rlc3RfMiwgc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKQogICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi50YWdfdGVzdF8zLCBzZWxmLmNvbW1hbmRfdGVzdF8xLnRhZ19pZHMpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRhZ190ZXN0XzIsIHNlbGYuY29tbWFuZF90ZXN0XzIudGFnX2lkcykKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYudGFnX3Rlc3RfMywgc2VsZi5jb21tYW5kX3Rlc3RfMi50YWdfaWRzKQogICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi50YWdfdGVzdF8zLCBzZWxmLmNvbW1hbmRfdGVzdF8zLnRhZ19pZHMpCgogICAgICAgICMgVGVzdCBhZGRpbmcgZHVwbGljYXRlIHRhZ3MgKHNob3VsZCBiZSBpZGVtcG90ZW50KQogICAgICAgIHNlbGYuY29tbWFuZF90ZXN0XzEuYWRkX3RhZ3MoWyJUZXN0IFRhZyAxIl0pCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKSwgMykKCiAgICAgICAgIyBUZXN0IGFkZGluZyBzaW5nbGUgdGFnIG5hbWUKICAgICAgICBzZWxmLmNvbW1hbmRfdGVzdF8xLmFkZF90YWdzKCJUZXN0IFRhZyAxIikKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmNvbW1hbmRfdGVzdF8xLnRhZ19pZHMpLCAzKQogICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi50YWdfdGVzdF8xLCBzZWxmLmNvbW1hbmRfdGVzdF8xLnRhZ19pZHMpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRhZ190ZXN0XzIsIHNlbGYuY29tbWFuZF90ZXN0XzEudGFnX2lkcykKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYudGFnX3Rlc3RfMywgc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKQoKICAgICAgICAjIFRlc3QgYWRkaW5nIGludmFsaWQgdHlwZSAoc2hvdWxkIHJldHVybiBUcnVlKQogICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmNvbW1hbmRfdGVzdF8xLmFkZF90YWdzKDEyMykpCiAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuY29tbWFuZF90ZXN0XzEuYWRkX3RhZ3MoW10pKQogICAgICAgICMgVGVzdCBhZGRpbmcgaW52YWxpZCB0eXBlIChzaG91bGQgcmV0dXJuIFRydWUpCiAgICAgICAgIyBFbXB0eSBsaXN0IGlzIGEgbm8tb3AKICAgICAgICBiZWZvcmUgPSBsZW4oc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKQogICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmNvbW1hbmRfdGVzdF8xLmFkZF90YWdzKFtdKSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmNvbW1hbmRfdGVzdF8xLnRhZ19pZHMpLCBiZWZvcmUpCgogICAgICAgICMgVGVzdCBhZGRpbmcgbm9uLWV4aXN0ZW50IHRhZ3MgKHNob3VsZCBiZSBpZ25vcmVkKQogICAgICAgIGluaXRpYWxfY291bnQgPSBsZW4oc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKQogICAgICAgIHNlbGYuY29tbWFuZF90ZXN0XzEuYWRkX3RhZ3MoWyJOb24gRXhpc3RlbnQgVGFnIl0pCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKSwgaW5pdGlhbF9jb3VudCkKCiAgICBkZWYgdGVzdF8wMl9yZW1vdmVfdGFncyhzZWxmKToKICAgICAgICAiIiJUZXN0IHRoYXQgdGFncyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSByZWNvcmQiIiIKICAgICAgICBzZWxmLmNvbW1hbmRfdGVzdF8xLnJlbW92ZV90YWdzKFsiVGVzdCBUYWcgMSIsICJUZXN0IFRhZyAyIl0pCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5jb21tYW5kX3Rlc3RfMS50YWdfaWRzKSwgMSkKCiAgICAgICAgIyBUZXN0IHJlbW92aW5nIHNpbmdsZSB0YWcgbmFtZQogICAgICAgIHNlbGYuY29tbWFuZF90ZXN0XzIucmVtb3ZlX3RhZ3MoIlRlc3QgVGFnIDIiKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuY29tbWFuZF90ZXN0XzIudGFnX2lkcyksIDEpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRhZ190ZXN0XzMsIHNlbGYuY29tbWFuZF90ZXN0XzIudGFnX2lkcykKCiAgICAgICAgIyBUZXN0IHJlbW92aW5nIGludmFsaWQgdHlwZSAoc2hvdWxkIHJldHVybiBUcnVlKQogICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmNvbW1hbmRfdGVzdF8xLnJlbW92ZV90YWdzKDEyMykpCiAgICAgICAgIyBUZXN0IHJlbW92aW5nIG5vIHRhZ3MgKHNob3VsZCByZXR1cm4gVHJ1ZSkKICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5jb21tYW5kX3Rlc3RfMS5yZW1vdmVfdGFncyhbXSkpCgogICAgZGVmIHRlc3RfMDNfaGFzX3RhZ3Moc2VsZik6CiAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSByZWNvcmQgaGFzIGFueSBvZiB0aGUgZ2l2ZW4gdGFncyIiIgoKICAgICAgICAjIFNlYXJjaCBzZWxlY3RlZCByZWNvcmRzCiAgICAgICAgY29tbWFuZHNfd2l0aF9hbnlfdGFncyA9IHNlbGYuYWxsX2NvbW1hbmRzLmhhc190YWdzKAogICAgICAgICAgICBbIlRlc3QgVGFnIDEiLCAiVGVzdCBUYWcgMiJdCiAgICAgICAgKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbW1hbmRzX3dpdGhfYW55X3RhZ3MpLCAyKQogICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5jb21tYW5kX3Rlc3RfMSwgY29tbWFuZHNfd2l0aF9hbnlfdGFncykKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY29tbWFuZF90ZXN0XzIsIGNvbW1hbmRzX3dpdGhfYW55X3RhZ3MpCgogICAgICAgICMgU2VhcmNoIGFsbCByZWNvcmRzIGluIHRoZSBtb2RlbAogICAgICAgIGNvbW1hbmRzX3dpdGhfYW55X3RhZ3MgPSBzZWxmLkNvbW1hbmQuaGFzX3RhZ3MoCiAgICAgICAgICAgIFsiVGVzdCBUYWcgMSIsICJUZXN0IFRhZyAyIl0sIHNlYXJjaF9hbGw9VHJ1ZQogICAgICAgICkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb21tYW5kc193aXRoX2FueV90YWdzKSwgMikKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY29tbWFuZF90ZXN0XzEsIGNvbW1hbmRzX3dpdGhfYW55X3RhZ3MpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmNvbW1hbmRfdGVzdF8yLCBjb21tYW5kc193aXRoX2FueV90YWdzKQoKICAgICAgICAjIFNlYXJjaCB3aXRoIHNpbmdsZSB0YWcgbmFtZQogICAgICAgIGNvbW1hbmRzX3dpdGhfYW55X3RhZ3MgPSBzZWxmLmFsbF9jb21tYW5kcy5oYXNfdGFncygiVGVzdCBUYWcgMiIpCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29tbWFuZHNfd2l0aF9hbnlfdGFncyksIDIpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmNvbW1hbmRfdGVzdF8xLCBjb21tYW5kc193aXRoX2FueV90YWdzKQogICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5jb21tYW5kX3Rlc3RfMiwgY29tbWFuZHNfd2l0aF9hbnlfdGFncykKCiAgICAgICAgY29tbWFuZHNfd2l0aF9hbnlfdGFncyA9IHNlbGYuQ29tbWFuZC5oYXNfdGFncygiVGVzdCBUYWcgMiIsIHNlYXJjaF9hbGw9VHJ1ZSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb21tYW5kc193aXRoX2FueV90YWdzKSwgMikKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY29tbWFuZF90ZXN0XzEsIGNvbW1hbmRzX3dpdGhfYW55X3RhZ3MpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmNvbW1hbmRfdGVzdF8yLCBjb21tYW5kc193aXRoX2FueV90YWdzKQoKICAgICAgICAjIFNlYXJjaCB3aXRoIGludmFsaWQgdHlwZSAoc2hvdWxkIHJldHVybiBlbXB0eSByZWNvcmRzZXQpCiAgICAgICAgY29tbWFuZHNfd2l0aF9hbnlfdGFncyA9IHNlbGYuQ29tbWFuZC5oYXNfdGFncygxMjMpCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29tbWFuZHNfd2l0aF9hbnlfdGFncyksIDApCgogICAgICAgICMgU2VhcmNoIHdpdGggbm8gdGFncyAoc2hvdWxkIHJldHVybiBlbXB0eSByZWNvcmRzZXQpCiAgICAgICAgY29tbWFuZHNfd2l0aF9hbnlfdGFncyA9IHNlbGYuQ29tbWFuZC5oYXNfdGFncyhbXSkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb21tYW5kc193aXRoX2FueV90YWdzKSwgMCkKCiAgICBkZWYgdGVzdF8wNF9oYXNfYWxsX3RhZ3Moc2VsZik6CiAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSByZWNvcmQgaGFzIGFsbCBvZiB0aGUgZ2l2ZW4gdGFncyIiIgoKICAgICAgICAjIFNlYXJjaCBzZWxlY3RlZCByZWNvcmRzCiAgICAgICAgY29tbWFuZHNfd2l0aF9hbGxfdGFncyA9IHNlbGYuYWxsX2NvbW1hbmRzLmhhc19hbGxfdGFncygKICAgICAgICAgICAgWyJUZXN0IFRhZyAxIiwgIlRlc3QgVGFnIDIiXQogICAgICAgICkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb21tYW5kc193aXRoX2FsbF90YWdzKSwgMSkKICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY29tbWFuZF90ZXN0XzEsIGNvbW1hbmRzX3dpdGhfYWxsX3RhZ3MpCgogICAgICAgICMgU2VhcmNoIGFsbCByZWNvcmRzIGluIHRoZSBtb2RlbAogICAgICAgIGNvbW1hbmRzX3dpdGhfYWxsX3RhZ3MgPSBzZWxmLkNvbW1hbmQuaGFzX2FsbF90YWdzKAogICAgICAgICAgICBbIlRlc3QgVGFnIDEiLCAiVGVzdCBUYWcgMiJdLCBzZWFyY2hfYWxsPVRydWUKICAgICAgICApCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29tbWFuZHNfd2l0aF9hbGxfdGFncyksIDEpCiAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmNvbW1hbmRfdGVzdF8xLCBjb21tYW5kc193aXRoX2FsbF90YWdzKQoKICAgICAgICAjIFNlYXJjaCB3aXRoIGludmFsaWQgdHlwZSAoc2hvdWxkIHJldHVybiBlbXB0eSByZWNvcmRzZXQpCiAgICAgICAgY29tbWFuZHNfd2l0aF9hbGxfdGFncyA9IHNlbGYuQ29tbWFuZC5oYXNfYWxsX3RhZ3MoMTIzKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbW1hbmRzX3dpdGhfYWxsX3RhZ3MpLCAwKQoKICAgICAgICAjIFNlYXJjaCB3aXRoIG5vIHRhZ3MgKHNob3VsZCByZXR1cm4gZW1wdHkgcmVjb3Jkc2V0KQogICAgICAgIGNvbW1hbmRzX3dpdGhfYWxsX3RhZ3MgPSBzZWxmLkNvbW1hbmQuaGFzX2FsbF90YWdzKFtdKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbW1hbmRzX3dpdGhfYWxsX3RhZ3MpLCAwKQo= \ No newline at end of file