def test_update_redmine_ticket_empty(self): redmine = redmine_login() project = redmine.project.get(PROJECT).refresh() rv = self.client.post('redmine/ticket/id', headers=self.get_api_headers('admin', 'test'), data=None) self.assertTrue(rv.status_code == 400)
def create_user(): """ Requires either a CSRF token shared between the UI and the Services OR an authenticated request from a valid user. """ csrf_token = request.headers.get("X-Csrf-Token") if not csrf_token or csrf_token != current_app.config["UI_API_KEY"]: auth = False if request.authorization: auth = verify_auth(request.authorization["username"], request.authorization["password"]) if not auth: return jsonify(error="Invalid Authentication"), 401 data = json.loads(request.data) # add user to db role_mapping = { 1: ["annotate", "asset_manager", "user_admin", "redmine"], # Administrator 2: ["annotate", "asset_manager"], # Marine Operator 3: [], # Science User } role_scopes = role_mapping[data["role_id"]] valid_scopes = UserScope.query.filter(UserScope.scope_name.in_(role_scopes)).all() try: new_user = User.from_json(data) new_user.scopes = valid_scopes new_user.active = True db.session.add(new_user) db.session.commit() except Exception as e: return jsonify(error=e.message), 409 try: redmine = redmine_login() organization = new_user.organization.organization_name tmp = dt.datetime.now() + dt.timedelta(days=1) due_date = dt.datetime.strftime(tmp, "%Y-%m-%d") issue = redmine.issue.new() issue.project_id = current_app.config["REDMINE_PROJECT_ID"] issue.subject = "New User Registration for OOI UI: %s, %s" % (new_user.first_name, new_user.last_name) issue.description = ( "A new user has requested access to the OOI User Interface. Please review the application for %s, their role in the organization %s is %s and email address is %s" % (new_user.first_name, organization, new_user.role, new_user.email) ) issue.priority_id = 1 issue.due_date = due_date # Get the list of ticker Trackers trackers = list(redmine.tracker.all()) # Find the REDMINE_TRACKER (like 'Support') and get the id # This make a difference for field validation and proper tracker assignment config_redmine_tracker = current_app.config["REDMINE_TRACKER"] tracker_id = [tracker.id for tracker in trackers if tracker.name == config_redmine_tracker][0] issue.tracker_id = tracker_id issue.save() except Exception as e: current_app.logger.exception("Failed to generate redmine issue for new user") return jsonify(error=e.message), 409 return jsonify(new_user.to_json()), 201
def test_update_redmine_ticket_missing_required_field(self): headers = self.get_api_headers('admin', 'test') redmine = redmine_login() project = redmine.project.get(PROJECT).refresh() rv = self.client.post('redmine/ticket/id', headers=headers, data=json.dumps({'project_id': project.id, 'subject': 'Testing Update', 'notes': 'This is simply a test'})) self.assertEquals(rv.status_code, 400)
def test_update_redmine_ticket_missing_required_field(self): redmine = redmine_login() project = redmine.project.get(PROJECT).refresh() rv = self.client.post('redmine/ticket/id', headers=self.get_api_headers('admin', 'test'), data=json.dumps({'project_id': project.id, 'subject': 'Testing Update', 'notes': 'This is simply a test'})) self.assertTrue(rv.status_code == 400)
def test_update_redmine_ticket(self): headers = self.get_api_headers('admin', 'test') redmine = redmine_login() project = redmine.project.get(PROJECT).refresh() rv = self.client.post('redmine/ticket/id', headers=headers, data=json.dumps({ 'resource_id': 2, 'project_id': project.id, 'subject': 'Redmine API - Testing Update', 'notes': 'This is simply a test' })) self.assertEquals(rv.status_code, 201)
def create_user(): ''' Requires either a CSRF token shared between the UI and the Services OR an authenticated request from a valid user. ''' csrf_token = request.headers.get('X-Csrf-Token') if not csrf_token or csrf_token != current_app.config['UI_API_KEY']: auth = False if request.authorization: auth = verify_auth(request.authorization['username'], request.authorization['password']) if not auth: return jsonify(error="Invalid Authentication"), 401 data = json.loads(request.data) #add user to db role_mapping = { 1: ['annotate', 'asset_manager', 'user_admin', 'redmine'], # Administrator 2: ['annotate', 'asset_manager'], # Marine Operator 3: [] # Science User } role_scopes = role_mapping[data['role_id']] valid_scopes = UserScope.query.filter( UserScope.scope_name.in_(role_scopes)).all() try: new_user = User.from_json(data) new_user.scopes = valid_scopes db.session.add(new_user) db.session.commit() except Exception as e: return jsonify(error=e.message), 409 try: redmine = redmine_login() organization = new_user.organization.organization_name issue = redmine.issue.new() issue.project_id = current_app.config['REDMINE_PROJECT_ID'] issue.subject = 'New User Registration for OOI UI: %s, %s' % ( new_user.first_name, new_user.last_name) issue.description = 'A new user has requested access to the OOI User Interface. Please review the application for %s, their role in the organization %s is %s and email address is %s' % ( new_user.first_name, organization, new_user.role, new_user.email) issue.priority_id = 1 issue.save() except: current_app.logger.exception( "Failed to generate redmine issue for new user") return jsonify(new_user.to_json()), 201
def create_user(): ''' Requires either a CSRF token shared between the UI and the Services OR an authenticated request from a valid user. ''' csrf_token = request.headers.get('X-Csrf-Token') if not csrf_token or csrf_token != current_app.config['UI_API_KEY']: auth = False if request.authorization: auth = verify_auth(request.authorization['username'], request.authorization['password']) if not auth: return jsonify(error="Invalid Authentication"), 401 data = json.loads(request.data) #add user to db role_mapping = { 1: ['annotate', 'asset_manager', 'user_admin', 'redmine'], # Administrator 2: ['annotate', 'asset_manager'], # Marine Operator 3: [] # Science User } role_scopes = role_mapping[data['role_id']] valid_scopes = UserScope.query.filter(UserScope.scope_name.in_(role_scopes)).all() try: new_user = User.from_json(data) new_user.scopes = valid_scopes db.session.add(new_user) db.session.commit() except Exception as e: return jsonify(error=e.message), 409 try: redmine = redmine_login() organization = new_user.organization.organization_name issue = redmine.issue.new() issue.project_id = current_app.config['REDMINE_PROJECT_ID'] issue.subject = 'New User Registration for OOI UI: %s, %s' % (new_user.first_name, new_user.last_name) issue.description = 'A new user has requested access to the OOI User Interface. Please review the application for %s, their role in the organization %s is %s and email address is %s' % (new_user.first_name, organization, new_user.role, new_user.email) issue.priority_id = 1 issue.save() except: current_app.logger.exception("Failed to generate redmine issue for new user") return jsonify(new_user.to_json()), 201
def test_get_all_redmine_tickets(self): redmine = redmine_login() rv = self.client.get('redmine/ticket/', headers=self.get_api_headers('admin', 'test')) self.assertTrue(rv.status_code == 400)