mxhero-api 0.1.11 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. data/VERSION +1 -1
  2. data/lib/communication.rb +35 -0
  3. data/lib/groups.rb +178 -0
  4. data/lib/mxhero-api.rb +288 -312
  5. data/lib/urls.rb +19 -0
  6. data/mxhero-api.gemspec +4 -4
  7. data/test/fixtures/api/account_properties.yml +12 -13
  8. data/test/fixtures/api/account_properties_not_found.yml +9 -9
  9. data/test/fixtures/api/accounts.yml +39 -0
  10. data/test/fixtures/api/accounts_filtered.yml +57 -42
  11. data/test/fixtures/api/accounts_from_domain.yml +10 -10
  12. data/test/fixtures/api/accounts_from_domain_paginated.yml +10 -10
  13. data/test/fixtures/api/accounts_without_group.yml +75 -0
  14. data/test/fixtures/api/add_an_inexistent_account_to_group.yml +39 -0
  15. data/test/fixtures/api/add_and_remove_account.yml +219 -0
  16. data/test/fixtures/api/all_groups.yml +39 -0
  17. data/test/fixtures/api/create_rule_for_domain.yml +95 -21
  18. data/test/fixtures/api/delete_group.yml +75 -0
  19. data/test/fixtures/api/delete_rule.yml +21 -61
  20. data/test/fixtures/api/domain_by_id.yml +10 -10
  21. data/test/fixtures/api/domain_by_id_not_found.yml +9 -9
  22. data/test/fixtures/api/domain_rule.yml +62 -76
  23. data/test/fixtures/api/domains.yml +10 -10
  24. data/test/fixtures/api/remove_account_from_group_twice.yml +150 -0
  25. data/test/fixtures/api/remove_inexistente_account_from_group.yml +39 -0
  26. data/test/fixtures/api/rules_for_domain.yml +11 -57
  27. data/test/fixtures/api/rules_for_domain_by_component.yml +6 -8
  28. data/test/fixtures/api/save_group.yml +119 -0
  29. data/test/fixtures/api/update_account_properties.yml +35 -33
  30. data/test/fixtures/api/update_rule.yml +35 -76
  31. data/test/helper.rb +1 -1
  32. data/test/test_groups.rb +104 -0
  33. data/test/test_mxhero_api.rb +49 -27
  34. metadata +26 -7
  35. data/test/fixtures/api/create_rule_alredy_exist.yml +0 -81
  36. data/test/fixtures/api/create_rule_success.yml +0 -41
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/test/properties
5
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/accounts/test/properties
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -19,34 +19,33 @@ http_interactions:
19
19
  message: !binary |-
20
20
  T0s=
21
21
  headers:
22
+ !binary "RGF0ZQ==":
23
+ - !binary |-
24
+ VGh1LCAxMiBTZXAgMjAxMyAyMToyMToxMyBHTVQ=
22
25
  !binary "U2VydmVy":
23
26
  - !binary |-
24
- QXBhY2hlLUNveW90ZS8xLjE=
27
+ QXBhY2hlLzIuMi4xNCAoVWJ1bnR1KQ==
28
+ !binary "Q29udGVudC1MZW5ndGg=":
29
+ - !binary |-
30
+ MzM3
25
31
  !binary "Q29udGVudC1UeXBl":
26
32
  - !binary |-
27
33
  YXBwbGljYXRpb24vanNvbg==
28
- !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
29
- - !binary |-
30
- Y2h1bmtlZA==
31
- !binary "RGF0ZQ==":
32
- - !binary |-
33
- RnJpLCAwOSBBdWcgMjAxMyAxNzozNTo1MCBHTVQ=
34
34
  body:
35
35
  encoding: US-ASCII
36
- string: ! '[{"name":"email","value":"test@tesla.com"},{"name":"fax","value":""},{"name":"lastname","value":"The
37
- user test lastname"},{"name":"mobile","value":""},{"name":"name","value":"The
38
- user test name"},{"name":"opt1","value":""},{"name":"opt2","value":"option
39
- 2"},{"name":"opt3","value":""},{"name":"telephone","value":"3333-3333"}]'
36
+ string: ! '[{"name":"email","value":""},{"name":"fax","value":null},{"name":"lastname","value":"
37
+ CHANGED CHANGED CHANGED CHANGED CHANGED"},{"name":"mobile","value":""},{"name":"name","value":"
38
+ CHANGED CHANGED CHANGED CHANGED CHANGED"},{"name":"opt1","value":""},{"name":"opt2","value":""},{"name":"opt3","value":""},{"name":"telephone","value":""}]'
40
39
  http_version:
41
- recorded_at: Wed, 14 Aug 2013 19:36:16 GMT
40
+ recorded_at: Thu, 12 Sep 2013 21:21:12 GMT
42
41
  - request:
43
42
  method: put
44
- uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/test/properties
43
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/accounts/test/properties
45
44
  body:
46
45
  encoding: UTF-8
47
- string: ! '[{"name":"email","value":"test@tesla.com"},{"name":"fax","value":null},{"name":"lastname","value":"The
48
- user test lastname CHANGED"},{"name":"name","value":"The user test name CHANGED"},{"name":"opt1","value":""},{"name":"opt2","value":"option
49
- 2"},{"name":"opt3","value":""},{"name":"telephone","value":"3333-3333"}]'
46
+ string: ! '[{"name":"email","value":""},{"name":"fax","value":null},{"name":"lastname","value":"
47
+ CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED"},{"name":"mobile","value":""},{"name":"name","value":"
48
+ CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED"},{"name":"opt1","value":""},{"name":"opt2","value":""},{"name":"opt3","value":""},{"name":"telephone","value":""}]'
50
49
  headers:
51
50
  Accept:
52
51
  - application/json
@@ -60,23 +59,26 @@ http_interactions:
60
59
  message: !binary |-
61
60
  T0s=
62
61
  headers:
62
+ !binary "RGF0ZQ==":
63
+ - !binary |-
64
+ VGh1LCAxMiBTZXAgMjAxMyAyMToyMToxMyBHTVQ=
63
65
  !binary "U2VydmVy":
64
66
  - !binary |-
65
- QXBhY2hlLUNveW90ZS8xLjE=
67
+ QXBhY2hlLzIuMi4xNCAoVWJ1bnR1KQ==
66
68
  !binary "Q29udGVudC1MZW5ndGg=":
67
69
  - !binary |-
68
70
  MA==
69
- !binary "RGF0ZQ==":
71
+ !binary "Q29udGVudC1UeXBl":
70
72
  - !binary |-
71
- RnJpLCAwOSBBdWcgMjAxMyAxNzozNTo1MCBHTVQ=
73
+ dGV4dC9wbGFpbg==
72
74
  body:
73
75
  encoding: US-ASCII
74
76
  string: ''
75
77
  http_version:
76
- recorded_at: Wed, 14 Aug 2013 19:36:16 GMT
78
+ recorded_at: Thu, 12 Sep 2013 21:21:13 GMT
77
79
  - request:
78
80
  method: get
79
- uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/accounts/test/properties
81
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/accounts/test/properties
80
82
  body:
81
83
  encoding: US-ASCII
82
84
  string: ''
@@ -93,23 +95,23 @@ http_interactions:
93
95
  message: !binary |-
94
96
  T0s=
95
97
  headers:
98
+ !binary "RGF0ZQ==":
99
+ - !binary |-
100
+ VGh1LCAxMiBTZXAgMjAxMyAyMToyMToxNCBHTVQ=
96
101
  !binary "U2VydmVy":
97
102
  - !binary |-
98
- QXBhY2hlLUNveW90ZS8xLjE=
103
+ QXBhY2hlLzIuMi4xNCAoVWJ1bnR1KQ==
104
+ !binary "Q29udGVudC1MZW5ndGg=":
105
+ - !binary |-
106
+ MzUz
99
107
  !binary "Q29udGVudC1UeXBl":
100
108
  - !binary |-
101
109
  YXBwbGljYXRpb24vanNvbg==
102
- !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
103
- - !binary |-
104
- Y2h1bmtlZA==
105
- !binary "RGF0ZQ==":
106
- - !binary |-
107
- RnJpLCAwOSBBdWcgMjAxMyAxNzozNTo1MCBHTVQ=
108
110
  body:
109
111
  encoding: US-ASCII
110
- string: ! '[{"name":"email","value":"test@tesla.com"},{"name":"fax","value":null},{"name":"lastname","value":"The
111
- user test lastname CHANGED"},{"name":"name","value":"The user test name CHANGED"},{"name":"opt1","value":""},{"name":"opt2","value":"option
112
- 2"},{"name":"opt3","value":""},{"name":"telephone","value":"3333-3333"}]'
112
+ string: ! '[{"name":"email","value":""},{"name":"fax","value":null},{"name":"lastname","value":"
113
+ CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED"},{"name":"mobile","value":""},{"name":"name","value":"
114
+ CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED"},{"name":"opt1","value":""},{"name":"opt2","value":""},{"name":"opt3","value":""},{"name":"telephone","value":""}]'
113
115
  http_version:
114
- recorded_at: Wed, 14 Aug 2013 19:36:16 GMT
116
+ recorded_at: Thu, 12 Sep 2013 21:21:13 GMT
115
117
  recorded_with: VCR 2.5.0
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/rules
5
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/rules
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -19,71 +19,33 @@ http_interactions:
19
19
  message: !binary |-
20
20
  T0s=
21
21
  headers:
22
+ !binary "RGF0ZQ==":
23
+ - !binary |-
24
+ VGh1LCAxMiBTZXAgMjAxMyAyMToyMToxNyBHTVQ=
22
25
  !binary "U2VydmVy":
23
26
  - !binary |-
24
- QXBhY2hlLUNveW90ZS8xLjE=
27
+ QXBhY2hlLzIuMi4xNCAoVWJ1bnR1KQ==
28
+ !binary "Q29udGVudC1MZW5ndGg=":
29
+ - !binary |-
30
+ Nzg3
25
31
  !binary "Q29udGVudC1UeXBl":
26
32
  - !binary |-
27
33
  YXBwbGljYXRpb24vanNvbg==
28
- !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
29
- - !binary |-
30
- Y2h1bmtlZA==
31
- !binary "RGF0ZQ==":
32
- - !binary |-
33
- RnJpLCAwOSBBdWcgMjAxMyAwNjozNDowNCBHTVQ=
34
34
  body:
35
35
  encoding: US-ASCII
36
- string: ! '[{"id":115,"domain":"tesla.com","name":"another rule ","created":1376029963000,"updated":1376029963000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":215,"directionType":"group","freeValue":"development","domain":"tesla.com","account":null,"group":"development"},"toDirection":{"id":216,"directionType":"anyone","freeValue":"anyone","domain":null,"account":null,"group":null},"properties":[{"propertyKey":"return.message","propertyValue":"<BODY>\n <P
37
- STYLE=\"text-align:left;\">\n <SPAN STYLE=\"letter-spacing:0px;color:#000000;font-size:12px;font-family:''Arial'';\">This
38
- message is intended only for ${mxrecipient}. If you are not the intended recipient
39
- you are notified that disclosing, copying, distributing or taking any action
40
- in reliance on the contents of this information is strictly prohibited.</SPAN>\n </P>\n</BODY>"},{"propertyKey":"return.message.plain","propertyValue":"This
41
- message is intended only for ${mxrecipient}. If you are not the intended recipient
42
- you are notified that disclosing, copying, distributing or taking any action
43
- in reliance on the contents of this information is strictly prohibited."},{"propertyKey":"return.message.rte","propertyValue":"<TextFlow
44
- whiteSpaceCollapse=\"preserve\" version=\"2.0.0\" xmlns=\"http://ns.adobe.com/textLayout/2008\"><p><span>This
45
- message is intended only for ${mxrecipient}. If you are not the intended recipient
46
- you are notified that disclosing, copying, distributing or taking any action
47
- in reliance on the contents of this information is strictly prohibited.</span></p></TextFlow>"}]},{"id":116,"domain":"tesla.com","name":"marketing
48
- rule","created":1376029996000,"updated":1376029996000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":217,"directionType":"domain","freeValue":"tesla.com","domain":"tesla.com","account":null,"group":null},"toDirection":{"id":218,"directionType":"group","freeValue":"marketing","domain":"tesla.com","account":null,"group":"marketing"},"properties":[{"propertyKey":"return.message","propertyValue":"<BODY>\n <P
49
- STYLE=\"text-align:left;\">\n <SPAN STYLE=\"letter-spacing:0px;color:#000000;font-size:12px;font-family:''Arial'';\">This
50
- message is intended only for ${mxrecipient}. If you are not the intended recipient
51
- you are notified that disclosing, copying, distributing or taking any action
52
- in reliance on the contents of this information is strictly prohibited.</SPAN>\n </P>\n</BODY>"},{"propertyKey":"return.message.plain","propertyValue":"This
53
- message is intended only for ${mxrecipient}. If you are not the intended recipient
54
- you are notified that disclosing, copying, distributing or taking any action
55
- in reliance on the contents of this information is strictly prohibited."},{"propertyKey":"return.message.rte","propertyValue":"<TextFlow
56
- whiteSpaceCollapse=\"preserve\" version=\"2.0.0\" xmlns=\"http://ns.adobe.com/textLayout/2008\"><p><span>This
57
- message is intended only for ${mxrecipient}. If you are not the intended recipient
58
- you are notified that disclosing, copying, distributing or taking any action
59
- in reliance on the contents of this information is strictly prohibited.</span></p></TextFlow>"}]},{"id":117,"domain":"tesla.com","name":"marketing","created":1376030034000,"updated":1376030034000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":219,"directionType":"group","freeValue":"marketing","domain":"tesla.com","account":null,"group":"marketing"},"toDirection":{"id":220,"directionType":"anyoneelse","freeValue":"anyoneelse","domain":null,"account":null,"group":null},"properties":[{"propertyKey":"return.message","propertyValue":"<BODY>\n <P
60
- STYLE=\"text-align:left;\">\n <SPAN STYLE=\"letter-spacing:0px;color:#000000;font-size:12px;font-family:''Arial'';\">This
61
- message is intended only for ${mxrecipient}. If you are not the intended recipient
62
- you are notified that disclosing, copying, distributing or taking any action
63
- in reliance on the contents of this information is strictly prohibited.</SPAN>\n </P>\n</BODY>"},{"propertyKey":"return.message.plain","propertyValue":"This
64
- message is intended only for ${mxrecipient}. If you are not the intended recipient
65
- you are notified that disclosing, copying, distributing or taking any action
66
- in reliance on the contents of this information is strictly prohibited."},{"propertyKey":"return.message.rte","propertyValue":"<TextFlow
67
- whiteSpaceCollapse=\"preserve\" version=\"2.0.0\" xmlns=\"http://ns.adobe.com/textLayout/2008\"><p><span>This
68
- message is intended only for ${mxrecipient}. If you are not the intended recipient
69
- you are notified that disclosing, copying, distributing or taking any action
70
- in reliance on the contents of this information is strictly prohibited.</span></p></TextFlow>"}]}]'
36
+ string: ! '[{"id":195,"domain":"tesla.com","name":"The rules for sales","created":1379020876000,"updated":1379020876000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":378,"directionType":"domain","freeValue":"tesla.com","domain":"tesla.com","account":null,"group":null},"toDirection":{"id":379,"directionType":"anyone","freeValue":"Anyone","domain":"tesla.com","account":null,"group":null},"properties":[{"propertyKey":"return.message","propertyValue":"<hr
37
+ /><p><em><span style=\"color:green\">Think before you print and save a tree.</span></em></p>"},{"propertyKey":"return.message.plain","propertyValue":"\n----------------\nThink
38
+ before you print and save a tree.r\n\n"},{"propertyKey":"interParsing","propertyValue":"true"}]}]'
71
39
  http_version:
72
- recorded_at: Tue, 13 Aug 2013 16:33:59 GMT
40
+ recorded_at: Thu, 12 Sep 2013 21:21:16 GMT
73
41
  - request:
74
42
  method: put
75
- uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/rules/115
43
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/rules/195
76
44
  body:
77
45
  encoding: UTF-8
78
- string: ! '{"id":115,"domain":"tesla.com","name":"another rule more name","created":1376029963000,"updated":1376029963000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":215,"directionType":"group","freeValue":"development","domain":"tesla.com","account":null,"group":"development"},"toDirection":{"id":216,"directionType":"anyone","freeValue":"anyone","domain":null,"account":null,"group":null},"properties":[{"propertyKey":"return.message","propertyValue":"another
79
- content"},{"propertyKey":"return.message.plain","propertyValue":"This message
80
- is intended only for ${mxrecipient}. If you are not the intended recipient
81
- you are notified that disclosing, copying, distributing or taking any action
82
- in reliance on the contents of this information is strictly prohibited."},{"propertyKey":"return.message.rte","propertyValue":"<TextFlow
83
- whiteSpaceCollapse=\"preserve\" version=\"2.0.0\" xmlns=\"http://ns.adobe.com/textLayout/2008\"><p><span>This
84
- message is intended only for ${mxrecipient}. If you are not the intended recipient
85
- you are notified that disclosing, copying, distributing or taking any action
86
- in reliance on the contents of this information is strictly prohibited.</span></p></TextFlow>"}]}'
46
+ string: ! '{"id":195,"domain":"tesla.com","name":"The rules for sales more name","created":1379020876000,"updated":1379020876000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":378,"directionType":"domain","freeValue":"tesla.com","domain":"tesla.com","account":null,"group":null},"toDirection":{"id":379,"directionType":"anyone","freeValue":"Anyone","domain":"tesla.com","account":null,"group":null},"properties":[{"propertyKey":"return.message","propertyValue":"another
47
+ content"},{"propertyKey":"return.message.plain","propertyValue":"\n----------------\nThink
48
+ before you print and save a tree.r\n\n"},{"propertyKey":"interParsing","propertyValue":"true"}]}'
87
49
  headers:
88
50
  Accept:
89
51
  - application/json
@@ -97,23 +59,26 @@ http_interactions:
97
59
  message: !binary |-
98
60
  T0s=
99
61
  headers:
62
+ !binary "RGF0ZQ==":
63
+ - !binary |-
64
+ VGh1LCAxMiBTZXAgMjAxMyAyMToyMToxNyBHTVQ=
100
65
  !binary "U2VydmVy":
101
66
  - !binary |-
102
- QXBhY2hlLUNveW90ZS8xLjE=
67
+ QXBhY2hlLzIuMi4xNCAoVWJ1bnR1KQ==
103
68
  !binary "Q29udGVudC1MZW5ndGg=":
104
69
  - !binary |-
105
70
  MA==
106
- !binary "RGF0ZQ==":
71
+ !binary "Q29udGVudC1UeXBl":
107
72
  - !binary |-
108
- RnJpLCAwOSBBdWcgMjAxMyAwNjozNDowNCBHTVQ=
73
+ dGV4dC9wbGFpbg==
109
74
  body:
110
75
  encoding: US-ASCII
111
76
  string: ''
112
77
  http_version:
113
- recorded_at: Tue, 13 Aug 2013 16:33:59 GMT
78
+ recorded_at: Thu, 12 Sep 2013 21:21:17 GMT
114
79
  - request:
115
80
  method: get
116
- uri: http://admin:password@localhost:8080/webapi/api/v1/domains/tesla.com/rules/115
81
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/rules/195
117
82
  body:
118
83
  encoding: US-ASCII
119
84
  string: ''
@@ -130,29 +95,23 @@ http_interactions:
130
95
  message: !binary |-
131
96
  T0s=
132
97
  headers:
98
+ !binary "RGF0ZQ==":
99
+ - !binary |-
100
+ VGh1LCAxMiBTZXAgMjAxMyAyMToyMToxOCBHTVQ=
133
101
  !binary "U2VydmVy":
134
102
  - !binary |-
135
- QXBhY2hlLUNveW90ZS8xLjE=
103
+ QXBhY2hlLzIuMi4xNCAoVWJ1bnR1KQ==
104
+ !binary "Q29udGVudC1MZW5ndGg=":
105
+ - !binary |-
106
+ NzE0
136
107
  !binary "Q29udGVudC1UeXBl":
137
108
  - !binary |-
138
109
  YXBwbGljYXRpb24vanNvbg==
139
- !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
140
- - !binary |-
141
- Y2h1bmtlZA==
142
- !binary "RGF0ZQ==":
143
- - !binary |-
144
- RnJpLCAwOSBBdWcgMjAxMyAwNjozNDowNCBHTVQ=
145
110
  body:
146
111
  encoding: US-ASCII
147
- string: ! '{"id":115,"domain":"tesla.com","name":"another rule more name","created":1376029963000,"updated":1376030045000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":215,"directionType":"group","freeValue":"development","domain":"tesla.com","account":null,"group":"development"},"toDirection":{"id":216,"directionType":"anyone","freeValue":"anyone","domain":null,"account":null,"group":null},"properties":[{"propertyKey":"return.message","propertyValue":"another
148
- content"},{"propertyKey":"return.message.plain","propertyValue":"This message
149
- is intended only for ${mxrecipient}. If you are not the intended recipient
150
- you are notified that disclosing, copying, distributing or taking any action
151
- in reliance on the contents of this information is strictly prohibited."},{"propertyKey":"return.message.rte","propertyValue":"<TextFlow
152
- whiteSpaceCollapse=\"preserve\" version=\"2.0.0\" xmlns=\"http://ns.adobe.com/textLayout/2008\"><p><span>This
153
- message is intended only for ${mxrecipient}. If you are not the intended recipient
154
- you are notified that disclosing, copying, distributing or taking any action
155
- in reliance on the contents of this information is strictly prohibited.</span></p></TextFlow>"}]}'
112
+ string: ! '{"id":195,"domain":"tesla.com","name":"The rules for sales more name","created":1379020876000,"updated":1379020877000,"enabled":true,"twoWays":false,"adminOrder":null,"component":"org.mxhero.feature.disclaimer","fromDirection":{"id":378,"directionType":"domain","freeValue":"tesla.com","domain":"tesla.com","account":null,"group":null},"toDirection":{"id":379,"directionType":"anyone","freeValue":"Anyone","domain":"tesla.com","account":null,"group":null},"properties":[{"propertyKey":"return.message","propertyValue":"another
113
+ content"},{"propertyKey":"return.message.plain","propertyValue":"\n----------------\nThink
114
+ before you print and save a tree.r\n\n"},{"propertyKey":"interParsing","propertyValue":"true"}]}'
156
115
  http_version:
157
- recorded_at: Tue, 13 Aug 2013 16:33:59 GMT
116
+ recorded_at: Thu, 12 Sep 2013 21:21:17 GMT
158
117
  recorded_with: VCR 2.5.0
data/test/helper.rb CHANGED
@@ -10,7 +10,7 @@ require 'minitest/pride'
10
10
  Dir['./lib/**/*.rb'].each { |rb| require rb }
11
11
 
12
12
  TEST_API_DOMAIN = 'tesla.com'
13
- TEST_API_URL = ENV['TEST_API_URL'] || 'http://localhost:8080/webapi/api/v1'
13
+ TEST_API_URL = ENV['TEST_API_URL'] || 'http://test.mxhero.com/webapi/api/v1'
14
14
  TEST_API_USER = 'admin'
15
15
  TEST_API_PASSWORD = 'password'
16
16
 
@@ -0,0 +1,104 @@
1
+ require_relative 'helper'
2
+
3
+ class GroupsTest < MiniTest::Unit::TestCase
4
+ def setup
5
+ @groups = MxHero::API::Groups.new(domain,
6
+ username: TEST_API_USER,
7
+ password: TEST_API_PASSWORD,
8
+ verbose: false, api_url: TEST_API_URL)
9
+ end
10
+
11
+ def domain
12
+ TEST_API_DOMAIN
13
+ end
14
+
15
+ def test_all
16
+ VCR.use_cassette('all_groups') do
17
+ groups = @groups.all
18
+ [:total_elements, :total_pages, :actual_page].each do |property|
19
+ assert groups.respond_to?(property), "Must be contain #{property}"
20
+ end
21
+ groups.first.is_a? MxHero::API::Group
22
+ groups.any? { |group| group.name == 'development' }
23
+ end
24
+ end
25
+
26
+ def test_save
27
+ VCR.use_cassette('save_group') do
28
+ delete_all_groups
29
+ group = MxHero::API::Group.new(name: 'test')
30
+ response = @groups.save(group)
31
+ assert response.is_a? MxHero::API::Response
32
+ assert response.success?
33
+ assert response.content.is_a? MxHero::API::Group
34
+ assert 'test', response.content.name
35
+
36
+ response = @groups.save(group)
37
+ refute response.success?
38
+ end
39
+ end
40
+
41
+ def delete_all_groups
42
+ @groups.all.each { |group| @groups.delete(group.name) }
43
+ end
44
+
45
+ def test_delete
46
+ VCR.use_cassette('delete_group') do
47
+ assert @groups.delete('test')
48
+ groups = @groups.all
49
+ refute groups.any? { |group| group.name == 'test' }
50
+ end
51
+ end
52
+
53
+ def test_accounts
54
+ VCR.use_cassette('accounts') do
55
+ accounts = @groups.accounts('development')
56
+ assert accounts.first.is_a? MxHero::API::Account
57
+ end
58
+ end
59
+
60
+ def test_add_and_remove_account
61
+ VCR.use_cassette('add_and_remove_account') do
62
+ account_name = 'john.doe'
63
+ group = 'development'
64
+ if @groups.accounts(group).any? { |account| account.account == account_name }
65
+ @groups.remove_account(group, account_name)
66
+ end
67
+ assert @groups.add_account(group, account_name).success?
68
+ assert @groups.accounts(group).any? { |account| account.account == account_name }
69
+ assert @groups.remove_account(group, account_name).success?
70
+ refute @groups.accounts(group).any? { |account| account.account == account_name }
71
+ end
72
+ end
73
+
74
+ def test_try_to_add_an_inexistent_account_to_group
75
+ VCR.use_cassette('add_an_inexistent_account_to_group') do
76
+ refute @groups.add_account('development', 'account.is.not.exist').success?
77
+ end
78
+ end
79
+
80
+ def test_try_to_remove_account_from_group_twice
81
+ VCR.use_cassette('remove_account_from_group_twice') do
82
+ account = @groups.accounts('development').first
83
+ unless account
84
+ account = 'john.doe'
85
+ @groups.add_account('development', 'john.doe')
86
+ end
87
+ assert @groups.remove_account('development', account.account).success?
88
+ remove_again = @groups.remove_account('development', account.account)
89
+ refute remove_again.success?
90
+ assert_equal 'domain.group.account.not.in.group', remove_again.content[:developerMessage]
91
+ @groups.add_account('development', account.account)
92
+ end
93
+ end
94
+
95
+ def test_try_to_remove_inexistent_account
96
+ VCR.use_cassette('remove_inexistente_account_from_group') do
97
+ response = @groups.remove_account('development', 'non.existent.account')
98
+ refute response.success?
99
+ assert_equal 'domain.account.not.found', response.content[:developerMessage]
100
+ end
101
+ end
102
+
103
+ end
104
+
@@ -28,7 +28,7 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
28
28
  property[:propertyValue] = 'another content'
29
29
  updated_rule[:name] = updated_rule[:name] + ' more name'
30
30
 
31
- assert @api.update_rule(updated_rule)
31
+ assert @api.update_rule(updated_rule), 'the rule not must be updated'
32
32
 
33
33
  rule = @api.domain_rule(updated_rule[:domain], updated_rule[:id])
34
34
  assert updated_rule, rule
@@ -51,7 +51,7 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
51
51
  response = @api.rules_for_domain(domain)
52
52
  assert response.code == 200
53
53
  rules = response.msg
54
- assert_equal domain, rules.first[:domain]
54
+ assert rules.is_a? Array
55
55
  end
56
56
  end
57
57
 
@@ -110,15 +110,29 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
110
110
  end
111
111
  end
112
112
 
113
+ def test_accounts_without_group
114
+ VCR.use_cassette('accounts_without_group') do
115
+ response = @api.accounts_by_domain(domain, without_group: true)
116
+ assert response.key? :elements
117
+ account = response[:elements].first
118
+ start_with = account[:account][0..2]
119
+
120
+ response = @api.accounts_by_domain(domain, without_group: true, account: start_with)
121
+ assert response[:totalElements] >= 1
122
+ find_account = response[:elements].first
123
+ assert_equal start_with, find_account[:account][0..2]
124
+ end
125
+ end
126
+
113
127
  def test_accounts_by_domain_filtered
114
128
  VCR.use_cassette('accounts_filtered') do
115
129
  # The test environment have 4 accounts:
116
- # user_1, user_2, user_3 and test
117
- response = @api.accounts_by_domain(domain, account: 'user')
118
- assert_equal 3, response[:elements].count
130
+ # agent.smith, john.doe, test, test1, test2
119
131
  response = @api.accounts_by_domain(domain, account: 'test')
132
+ assert_equal 3, response[:elements].count
133
+ response = @api.accounts_by_domain(domain, account: 'john.doe')
120
134
  assert_equal 1, response[:elements].count
121
- response = @api.accounts_by_domain(domain, account: 'user_2')
135
+ response = @api.accounts_by_domain(domain, account: 'test1')
122
136
  assert_equal 1, response[:elements].count
123
137
  end
124
138
  end
@@ -140,27 +154,20 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
140
154
  assert response
141
155
  end
142
156
  end
143
-
144
157
 
145
- def test_create_rule
146
- VCR.use_cassette('create_rule_success') do
147
- response = @api.create_rule(create_rule_msg)
148
- assert response.code == 201
149
- end
150
- end
151
-
152
- def test_try_to_create_rule_that_alredy_exist
153
- VCR.use_cassette('create_rule_alredy_exist') do
154
- response = @api.create_rule(create_rule_msg)
155
- assert_equal 201, response.code
156
- new_response = @api.create_rule(create_rule_msg)
157
- assert_equal 500, new_response.code
158
- assert_equal "rules.already.exists.for.component", new_response.msg[:developerMessage]
159
- end
160
- end
158
+ #def test_try_to_create_rule_that_alredy_exist
159
+ # VCR.use_cassette('create_rule_alredy_exist') do
160
+ # response = @api.create_rule(create_rule_msg)
161
+ # #assert_equal 201, response.code
162
+ # new_response = @api.create_rule(create_rule_msg)
163
+ # assert_equal 500, new_response.code
164
+ # assert_equal "rules.already.exists.for.component", new_response.msg[:developerMessage]
165
+ # end
166
+ #end
161
167
 
162
168
  def test_create_rule_for_domain
163
169
  VCR.use_cassette('create_rule_for_domain') do
170
+ delete_all_rules
164
171
  response = @api.create_rule_for_domain(domain, rule)
165
172
  assert response.code == 201
166
173
  new_response = @api.create_rule_for_domain(domain, rule)
@@ -200,8 +207,8 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
200
207
  account = 'test'
201
208
  response = @api.account_properties(domain, account)
202
209
  properties = response.msg
203
- properties['lastname'] = properties['lastname'] + ' CHANGED'
204
- properties['name'] = properties['name'] + ' CHANGED'
210
+ properties['lastname'] = ( properties['lastname'] || '' ) + ' CHANGED'
211
+ properties['name'] = ( properties['name'] || '' ) + ' CHANGED'
205
212
  properties['fax'] = nil
206
213
  response = @api.update_account_properties(domain, account, properties)
207
214
  assert_equal 200, response.code
@@ -214,9 +221,20 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
214
221
  end
215
222
 
216
223
  private
224
+
225
+ def delete_all_rules
226
+ response = @api.rules_for_domain(domain)
227
+ response.msg.each do |rule|
228
+ @api.delete_rule(domain, rule[:id])
229
+ end
230
+ end
217
231
 
218
232
  def obtain_rules(domain)
219
233
  response = @api.rules_for_domain(domain)
234
+ if response.msg.nil? || response.msg.empty?
235
+ created = @api.create_rule_for_domain(domain, rule)
236
+ return [ created.msg ]
237
+ end
220
238
  response.msg
221
239
  end
222
240
 
@@ -232,12 +250,16 @@ class MxHeroAPITest < MiniTest::Unit::TestCase
232
250
  msg
233
251
  end
234
252
 
235
- def create_rule_msg
253
+ def random_name
254
+ (0...15).map{ ('a'..'z').to_a[rand(26)] }.join
255
+ end
256
+
257
+ def create_rule_msg(name = nil)
236
258
  {
237
259
  #"domain" => "tesla.com",
238
260
  twoWays: false,
239
261
  enabled: true,
240
- name: "Email footer",
262
+ name: name || "Email footer",
241
263
  created: 1369682598000,
242
264
  fromDirection: { directionType: "domain", domain: domain, freeValue: domain },
243
265
  toDirection: { directionType: "domain", domain: domain, freeValue: domain },