27
45
self.addCleanup(os.environ.pop, "SOFTWARE_CENTER_RECOMMENDER_HOST")
28
46
server = "https://rec.staging.ubuntu.com"
29
47
os.environ["SOFTWARE_CENTER_RECOMMENDER_HOST"] = server
31
@patch('softwarecenter.backend.recagent.SpawnHelper'
32
'.run_generic_piston_helper')
33
def test_mocked_recagent_post_submit_profile(self, mock_spawn_helper_run):
34
def _patched_on_submit_profile_data(*args, **kwargs):
35
piston_submit_profile = {}
36
recommender_agent.emit("submit-profile-finished",
37
piston_submit_profile)
38
mock_spawn_helper_run.side_effect = _patched_on_submit_profile_data
39
recommender_agent = RecommenderAgent()
40
recommender_agent.connect("submit-profile-finished", self.on_query_done)
41
recommender_agent.connect("error", self.on_query_error)
42
recommender_agent._calc_profile_id = lambda profile: "i-am-random"
44
recommender_agent.post_submit_profile(db)
45
self.assertFalse(self.error)
46
args, kwargs = mock_spawn_helper_run.call_args
47
self.assertNotEqual(kwargs['data'][0]['package_list'], [])
49
self.recommender_agent = RecommenderAgent()
50
self.recommender_agent.connect("error", self.on_query_error)
49
52
def on_query_done(self, recagent, data):
50
# print "query done, data: '%s'" % data
53
#print "query done, data: '%s'" % data
53
58
def on_query_error(self, recagent, error):
54
# print "query error received: ", error
59
#print "query error received: ", error
62
self.error_msg = error
64
def assertServerReturnsWithNoError(self):
66
self.assertFalse(self.error, "got error: '%s'" % self.error_msg)
58
68
def test_recagent_query_server_status(self):
59
# NOTE: This requires a working recommender host that is reachable
60
recommender_agent = RecommenderAgent()
61
recommender_agent.connect("server-status", self.on_query_done)
62
recommender_agent.connect("error", self.on_query_error)
63
recommender_agent.query_server_status()
65
self.assertFalse(self.error)
69
self.recommender_agent.connect("server-status", self.on_query_done)
70
self.recommender_agent.query_server_status()
71
self.assertServerReturnsWithNoError()
67
# FIXME: disabled for now as the server is not quite working
68
def disabled_test_recagent_post_submit_profile(self):
73
@unittest.skip("server returns 401")
74
def test_recagent_post_submit_profile(self):
69
75
# NOTE: This requires a working recommender host that is reachable
70
recommender_agent = RecommenderAgent()
71
recommender_agent.connect("submit-profile-finished", self.on_query_done)
72
recommender_agent.connect("error", self.on_query_error)
74
recommender_agent.post_submit_profile(db)
76
self.assertFalse(self.error)
77
self.recommender_agent.connect(
78
"submit-profile-finished", self.on_query_done)
79
self.recommender_agent.post_submit_profile(db)
80
self.assertServerReturnsWithNoError()
77
81
#print mock_request._post
79
# NOTE: this server call is currently not needed and not used
80
# def disabled_test_recagent_query_submit_anon_profile(self):
81
# # NOTE: This requires a working recommender host that is reachable
82
# recommender_agent = RecommenderAgent()
83
# recommender_agent.connect("submit-anon-profile", self.on_query_done)
84
# recommender_agent.connect("error", self.on_query_error)
85
# recommender_agent.query_submit_anon_profile(
86
# uuid=recommender_uuid,
87
# installed_packages=["pitivi", "fretsonfire"],
90
# self.assertFalse(self.error)
92
# FIXME: disabled for now as the server is not quite working
93
def disabled_test_recagent_query_profile(self):
94
# NOTE: This requires a working recommender host that is reachable
95
recommender_agent = RecommenderAgent()
96
recommender_agent.connect("profile", self.on_query_done)
97
recommender_agent.connect("error", self.on_query_error)
98
recommender_agent.query_profile(pkgnames=["pitivi", "fretsonfire"])
100
self.assertFalse(self.error)
102
# FIXME: disabled for now as the server is not quite working
103
def disabled_test_recagent_query_recommend_me(self):
104
# NOTE: This requires a working recommender host that is reachable
105
recommender_agent = RecommenderAgent()
106
recommender_agent.connect("recommend-me", self.on_query_done)
107
recommender_agent.connect("error", self.on_query_error)
108
recommender_agent.query_recommend_me()
110
self.assertFalse(self.error)
83
@unittest.skip("server returns 401")
84
def test_recagent_query_submit_anon_profile(self):
85
self.recommender_agent.connect(
86
"submit-anon-profile-finished", self.on_query_done)
87
self.recommender_agent.post_submit_anon_profile(
89
installed_packages=["pitivi", "fretsonfire"],
91
self.assertServerReturnsWithNoError()
93
@unittest.skip("server returns 401")
94
def test_recagent_query_profile(self):
95
self.recommender_agent.connect("profile", self.on_query_done)
96
self.recommender_agent.query_profile(pkgnames=["pitivi", "fretsonfire"])
97
self.assertServerReturnsWithNoError()
99
@unittest.skip("server returns 401")
100
def test_recagent_query_recommend_me(self):
101
self.recommender_agent.connect("recommend-me", self.on_query_done)
102
self.recommender_agent.query_recommend_me()
103
self.assertServerReturnsWithNoError()
112
105
def test_recagent_query_recommend_app(self):
113
# NOTE: This requires a working recommender host that is reachable
114
recommender_agent = RecommenderAgent()
115
recommender_agent.connect("recommend-app", self.on_query_done)
116
recommender_agent.connect("error", self.on_query_error)
117
recommender_agent.query_recommend_app("pitivi")
119
self.assertFalse(self.error)
106
self.recommender_agent.connect("recommend-app", self.on_query_done)
107
self.recommender_agent.query_recommend_app("pitivi")
108
self.assertServerReturnsWithNoError()
121
# disabled for now (2012-03-20) as the server is returning 504
122
def disabled_test_recagent_query_recommend_all_apps(self):
123
# NOTE: This requires a working recommender host that is reachable
124
recommender_agent = RecommenderAgent()
125
recommender_agent.connect("recommend-all-apps", self.on_query_done)
126
recommender_agent.connect("error", self.on_query_error)
127
recommender_agent.query_recommend_all_apps()
129
self.assertFalse(self.error)
110
def test_recagent_query_recommend_all_apps(self):
111
self.recommender_agent.connect("recommend-all-apps", self.on_query_done)
112
self.recommender_agent.query_recommend_all_apps()
113
self.assertServerReturnsWithNoError()
131
115
def test_recagent_query_recommend_top(self):
132
# NOTE: This requires a working recommender host that is reachable
133
recommender_agent = RecommenderAgent()
134
recommender_agent.connect("recommend-top", self.on_query_done)
135
recommender_agent.connect("error", self.on_query_error)
136
recommender_agent.query_recommend_top()
138
self.assertFalse(self.error)
116
self.recommender_agent.connect("recommend-top", self.on_query_done)
117
self.recommender_agent.query_recommend_top()
118
self.assertServerReturnsWithNoError()
140
@unittest.skip('Disabled, should be re-enabled ASAP')
141
120
def test_recagent_query_error(self):
142
121
# NOTE: This tests the error condition itself! it simply forces an error
143
122
# 'cuz there definitely isn't a server here :)