def test_adding_project_default(self): ud = UserData(target="target") ud.set_default(project="project-blah") expect(hasattr(ud, "project")).to_be_true() expect(ud.project).to_equal("project-blah") expect(hasattr(ud, "team")).to_be_false()
def setUp(self): self.ctrl = self.make_controller(self.controller_class, conf=self.fixture_for('test.conf'), **self.controller_kwargs) self.ctrl.app.user_data = UserData(target="Target") self.ctrl.app.user_data.token = "token-value" self.get_mock = patch('requests.get') self.get_mock.start()
def test_saving_with_project(self): ud = UserData(target="target") ud.set_default(project="project-blah") ud.save() loaded = UserData.load() expect(hasattr(loaded, "project")).to_be_true() expect(loaded.project).to_equal("project-blah") expect(hasattr(loaded, "team")).to_be_false()
def test_authenticated_decorator_works_when_all_values_correct(self): ctrl = self.make_controller(AuthenticatedControllerMock) ctrl.app.user_data = UserData(target="Target") ctrl.app.user_data.token = "token-value" ctrl.default() expect(ctrl.worked).to_be_true()
def setUp(self): self.ctrl = self.make_controller(ShowUserController, conf=self.fixture_for('test.conf'), team_name='nameless') self.ctrl.app.user_data = UserData(target="Target") self.ctrl.app.user_data.token = "token-value" self.get_mock = patch('requests.get') self.get_mock.start()
def test_to_dict_with_team(self): ud = UserData(target="target") ud.set_default(team="team-blah") ud_dict = ud.to_dict() expect(ud_dict).to_be_like({ "target": "target", "team": "team-blah", "token": None })
def test_to_dict_with_project(self): ud = UserData(target="target") ud.set_default(project="project-blah") ud_dict = ud.to_dict() expect(ud_dict).to_be_like({ "target": "target", "project": "project-blah", "token": None })
def test_make_a_post_with_correct_values(self, post_mock): ctrl = self.make_controller(WightBaseController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.app.user_data.token = "token-value" ctrl.post("/post-url", data={"some": "data"}) post_mock.assert_called_with( "Target/post-url", data={"some": "data", "target": "Target"}, headers={"X-Wight-Auth": "token-value"} )
def test_user_data_deserializes_properly(self): ud = UserData(target="http://target2.wight.com") directory = tempfile.mkdtemp() path = join(directory, '.wight-user-data') ud.save(path) loaded = UserData.load(path) expect(loaded.target).to_equal("http://target2.wight.com")
def test_user_data_returns_from_default_path(self): if exists(UserData.DEFAULT_PATH): os.remove(UserData.DEFAULT_PATH) ud = UserData(target="http://target3.wight.com") ud.save() loaded = UserData.load() expect(loaded).not_to_be_null() expect(loaded.target).to_equal("http://target3.wight.com")
def test_authenticated_decorator_verifies_token_exists(self): ctrl = self.make_controller(AuthenticatedControllerMock) ctrl.app.user_data = UserData(target="Target") try: ctrl.default() except UnauthenticatedError: assert True return assert False, "Should not have gotten this far"
def test_user_data_serializes_properly(self): ud = UserData(target="http://target2.wight.com") directory = tempfile.mkdtemp() path = join(directory, '.wight-user-data') ud.save(path) with open(path, 'r') as text: obj = loads(text.read()) expect(obj).to_include("target") expect(obj['target']).to_equal("http://target2.wight.com")
def test_change_password_message_if_unknown_return_code_from_api( self, get_pass_mock, puterror_mock, post_mock): post_mock.return_value = Mock(status_code=500) get_pass_mock.return_value = "testing" ctrl = self.make_controller(ChangePasswordController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.app.user_data.token = "token-value" ctrl.default() puterror_mock.assert_called_with( "Wight API returned an unexpected status code!")
def test_change_password_fails_if_old_pass_is_wrong( self, get_pass_mock, puterror_mock, post_mock): post_mock.return_value = Mock(status_code=403) get_pass_mock.return_value = "testing" ctrl = self.make_controller(ChangePasswordController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.app.user_data.token = "token-value" ctrl.default() puterror_mock.assert_called_with( "The original password didn't match. Please try again")
def test_default_action_when_email_is_none(self, ask_for_mock, mock_stdout): ask_for_mock.return_value = None ctrl = self.make_controller(AuthController, conf=self.fixture_for('test.conf'), email=None) ctrl.app.user_data = UserData(target="test-target") expect(ctrl.default()).to_be_false() expect(mock_stdout.getvalue()).to_be_like("Aborting...") expect(ask_for_mock.called).to_be_true()
def test_default_action_when_invalid_password(self, get_mock, mock_stdout): user = UserFactory.create() response_mock = mock.Mock(status_code=403) get_mock.return_value = response_mock ctrl = self.make_controller(AuthController, conf=self.fixture_for('test.conf'), email=user.email, password="******") ctrl.app.user_data = UserData(target=self.get_url('/')) expect(ctrl.default()).to_be_false() expect(mock_stdout.getvalue()).to_be_like("Authentication failed.") expect(get_mock.called).to_be_true()
def test_change_password_fails_if_password_matching_fails( self, get_pass_mock, puterror_mock): ctrl = self.make_controller(ChangePasswordController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.app.user_data.token = "token-value" pass_values = ['testing', 'retesting', 'reretesting'] def side_effect(self): return pass_values.pop() get_pass_mock.side_effect = side_effect ctrl.default() puterror_mock.assert_called_with( "New password check failed. Please try again.")
def test_default_action_when_user_not_found_but_dont_want_to_register( self, get_mock, ask_for_mock, mock_stdout): user = UserFactory.create() response_mock = mock.Mock(status_code=404) get_mock.return_value = response_mock ask_for_mock.return_value = "N" ctrl = self.make_controller(AuthController, conf=self.fixture_for('test.conf'), email=user.email, password="******") ctrl.app.user_data = UserData(target=self.get_url('/')) expect(ctrl.default()).to_be_false() expect(mock_stdout.getvalue()).to_be_like("Aborting...") expect(get_mock.called).to_be_true()
def test_change_password_normally(self, get_pass_mock, putsuccess_mock, post_mock): post_mock.return_value = Mock(status_code=200) get_pass_mock.return_value = "testing" ctrl = self.make_controller(ChangePasswordController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.app.user_data.token = "token-value" ctrl.default() call_list = get_pass_mock.call_args_list expect(str(call_list[0]).split("'")[1]).to_be_like( "Please enter your current password:"******"'")[1]).to_equal( "Please enter your new password:"******"'")[1]).to_equal( "Please enter your new password again:") putsuccess_mock.assert_called_with("Password changed successfully.")
def test_default_action_when_user_authenticated_properly( self, get_mock, mock_stdout): user = UserFactory.create() headers_mock = mock.Mock(get=lambda msg: "test-token-2") response_mock = mock.Mock(status_code=200, headers=headers_mock) get_mock.return_value = response_mock ctrl = self.make_controller( AuthController, conf=self.fixture_for('test.conf'), email=user.email, password=UserFactory.get_default_password()) ctrl.app.user_data = UserData(target=self.get_url('/')) expect(ctrl.default()).to_be_true() expect(mock_stdout.getvalue()).to_be_like("Authenticated.") expect(get_mock.called).to_be_true() assert_token_is("test-token-2")
def default(self): self.load_conf() target = self.arguments.target target_parsed = urlparse(target) if not target_parsed.scheme: target = "http://%s" % target_parsed.geturl() self.line_break() self.putsuccess( "Wight target set to '%s%s%s'. In order to login with wight, use '%swight login <email>%s'." % (self.keyword_color, target, self.reset_success, self.commands_color, self.reset_success)) self.line_break() ud = UserData.load() if ud is None: ud = UserData(target=target) else: ud.target = target ud.save()
def test_default_action_when_user_not_found_but_want_to_register( self, get_mock, ask_for_mock, confirm_mock, mock_stdout): user = UserFactory.create() headers_mock = mock.Mock(get=lambda msg: "test-token") response_mock = mock.Mock(status_code=404, headers=headers_mock) get_mock.return_value = response_mock ask_for_mock.return_value = "Y" confirm_mock.return_value = "123" ctrl = self.make_controller(AuthController, conf=self.fixture_for('test.conf'), email=user.email, password="******") ctrl.app.user_data = UserData(target=self.get_url('/')) expect(ctrl.default()).to_be_true() expect(mock_stdout.getvalue()).to_be_like( "User registered and authenticated.") expect(get_mock.called).to_be_true() assert_token_is("test-token")
def authenticate(self): self.ctrl.app.user_data = UserData(target="Target") self.ctrl.app.user_data.token = "token-value"
def setUp(self): self.ctrl = self.make_controller(self.controller_class, conf=self.fixture_for('test.conf'), **self.controller_kwargs) self.ctrl.app.user_data = UserData(target="Target") self.ctrl.app.user_data.token = "token-value"
def test_make_a_get(self, get_mock): ctrl = self.make_controller(WightBaseController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.get("/get-url") expect(get_mock.called).to_be_true()
def test_make_a_put(self, put_mock): ctrl = self.make_controller(WightBaseController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.put("/put-url", data={"some": "data"}) expect(put_mock.called).to_be_true()
def test_make_a_delete(self, delete_mock): ctrl = self.make_controller(WightBaseController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.delete("/delete-url/data") expect(delete_mock.called).to_be_true()
def test_user_data_target(self): ud = UserData(target="http://target.wight.com") expect(ud.target).to_equal("http://target.wight.com")
def test_make_a_get_with_auth(self, get_mock): ctrl = self.make_controller(WightBaseController, conf=self.fixture_for('test.conf')) ctrl.app.user_data = UserData(target="Target") ctrl.app.user_data.token = "Token" ctrl.get("/post-url") get_mock.assert_called_with("Target/post-url", headers={"X-Wight-Auth": "Token"})