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 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_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_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_set_target_can_complete_with_http(self): ctrl = self.make_controller(TargetSetController, conf=self.fixture_for('test.conf'), target='my-target.wight.com') ctrl.default() ud = UserData.load() expect(ud).not_to_be_null() expect(ud.target).to_equal("http://my-target.wight.com")
def test_can_set_team_and_project(self): result = self.execute("default-set", team=self.team, project=self.project) expected = "Default team set to '%s'. Default project set to '%s'." % (self.team, self.project) expect(result).to_be_like(expected) ud = UserData.load() expect(ud.team).to_be_like(self.team) expect(ud.project).to_be_like(self.project)
def setUp(self): self.clear_user_data() self.target = "http://localhost:2368" self.execute("target-set", self.target) user_data = UserData.load() user_data.token = "token-value" user_data.save()
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_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 default(self): self.load_conf() target = self.arguments.target self.line_break() self.putsuccess("Wight target set to '%s%s%s'. In order to login with wight, use '%swight login%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_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_can_set_target(self): target = "http://my-test-target:2324" # Set target to acc target result = self.execute("target-set", target) expected = "Wight target set to '%s'. In order to login with wight, use 'wight login <email>'." expect(result).to_be_like(expected % target) ud = UserData.load() expect(ud.target).to_be_like(target)
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 default(self): self.load_conf() user_data = UserData.load() if user_data is None: self.write("No target set.") return self.write("Current target set to '%s'." % user_data.target)
def test_can_set_team_and_project(self): result = self.execute("default-set", team=self.team, project=self.project) expected = "Default team set to '%s'. Default project set to '%s'." % ( self.team, self.project) expect(result).to_be_like(expected) ud = UserData.load() expect(ud.team).to_be_like(self.team) expect(ud.project).to_be_like(self.project)
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_set_project(self, mock_stdout): ctrl = self.make_controller( SetDefaultController, conf=self.fixture_for("test.conf"), team=None, project=self.project ) self.authenticate(ctrl) ctrl.default() ud = UserData.load() expect(hasattr(ud, "project")).to_be_true() expect(ud.project).to_equal(self.project) expect(hasattr(ud, "team")).to_be_false() expect(mock_stdout.getvalue()).to_be_like("Default team not set. Default project set to '%s'." % self.project)
def test_set_team_and_project(self, mock_stdout): ctrl = self.make_controller( SetDefaultController, conf=self.fixture_for("test.conf"), team=self.team, project=self.project ) self.authenticate(ctrl) ctrl.default() ud = UserData.load() expect(ud.team).to_equal(self.team) expect(ud.project).to_equal(self.project) expect(mock_stdout.getvalue()).to_be_like( "Default team set to '%s'. Default project set to '%s'." % (self.team, self.project) )
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_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_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_set_team_and_project(self, mock_stdout): ctrl = self.make_controller(SetDefaultController, conf=self.fixture_for('test.conf'), team=self.team, project=self.project) self.authenticate(ctrl) ctrl.default() ud = UserData.load() expect(ud.team).to_equal(self.team) expect(ud.project).to_equal(self.project) expect(mock_stdout.getvalue()).to_be_like( "Default team set to '%s'. Default project set to '%s'." % (self.team, self.project))
def test_set_team(self, mock_stdout): ctrl = self.make_controller(SetDefaultController, conf=self.fixture_for('test.conf'), team=self.team, project=None) self.authenticate(ctrl) ctrl.default() ud = UserData.load() expect(hasattr(ud, "team")).to_be_true() expect(ud.team).to_equal(self.team) expect(hasattr(ud, "project")).to_be_false() expect(mock_stdout.getvalue()).to_be_like( "Default team set to '%s'. Default project not set." % self.team)
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 default(self): self.load_conf() user_data = UserData.load() if user_data is None: self.abort("No target set.") return self.line_break() self.putsuccess( "Current Wight target is '%s%s%s'. In order to login with wight, use '%swight login <email>%s'." % (self.keyword_color, user_data.target, self.reset_success, self.commands_color, self.reset_success)) self.line_break()
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 default(self): self.load_conf() user_data = UserData.load() if user_data is None: self.abort("No target set.") return self.line_break() self.putsuccess("Current Wight target is '%s%s%s'. In order to login with wight, use '%swight login <email>%s'." % ( self.keyword_color, user_data.target, self.reset_success, self.commands_color, self.reset_success )) self.line_break()
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_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_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 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_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 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 assert_token_is(token): data = UserData.load() expect(data.token).to_equal(token)
def __init__(self, label=None, **kw): super(WightApp, self).__init__(**kw) self.user_data = UserData.load() init(autoreset=True)
def authenticate(self): self.ctrl.app.user_data = UserData(target="Target") self.ctrl.app.user_data.token = "token-value"
def test_can_set_team(self): result = self.execute("default-set", team=self.team) expected = "Default team set to '%s'. Default project not set." % self.team expect(result).to_be_like(expected) ud = UserData.load() expect(ud.team).to_be_like(self.team)
def test_can_set_project(self): result = self.execute("default-set", project=self.project) expected = "Default team not set. Default project set to '%s'." % self.project expect(result).to_be_like(expected) ud = UserData.load() expect(ud.project).to_be_like(self.project)
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_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_user_data_returns_none_from_invalid_path(self): loaded = UserData.load("/some/invalid/path") expect(loaded).to_be_null()