def test_putShortURL(self): testTime = datetime.datetime.now(pytz.timezone("UTC")) appObj.setTestingDateTime(testTime) loginSession = LoginUtilities.getUserLoginSession("TESTTenantName", 1) resultJSON = self.putUrl( loginSession=loginSession, tenantName="TESTTenantName", url=targetUrl, checkAndParseResponse=True ) self.assertTrue(resultJSON["shortURL"].startswith(TestHelperSuperClass.env["APIAPP_REDIRECTPREFIX"] + "/")) self.assertEqual(len(resultJSON["shortURL"]), len(TestHelperSuperClass.env["APIAPP_REDIRECTPREFIX"]) + 1 + 5) self.assertEqual(len(resultJSON["id"]), 5) self.assertNotEqual(resultJSON[RepositoryObjBaseClass.getMetadataElementKey()]["creationDateTime"], None) dt = parse(resultJSON[RepositoryObjBaseClass.getMetadataElementKey()]["creationDateTime"]) creationTime = dt.astimezone(pytz.utc) expectedExpireTime = creationTime + datetime.timedelta(days=int(TestHelperSuperClass.env["APIAPP_URLEXPIREDAYS"])) self.assertEqual(resultJSON["expectedExpire"],expectedExpireTime.isoformat()) reditectToUrl, result = self.getRedirectUrlUSINGPUBLICAPI( shortURL=resultJSON["shortURL"] ) self.assertEqual(reditectToUrl, targetUrl) resultGetJSON = self.getUrlByCode( loginSession=loginSession, tenantName="TESTTenantName", urlCode=resultJSON["id"], checkAndParseResponse=True ) self.assertEqual(resultGetJSON, resultJSON)
def putResponseNewShortUrlModel(appObj): return appObj.flastRestPlusAPIObject.model('putResponseNewShortUrl', { 'id': fields.String(default='', description='Short Code for this URL'), 'shortURL': fields.String(default='', description='Short URL for this URL'), 'expectedExpire': fields.DateTime(dt_format=u'iso8601', description='Date url was created'), 'targetUrl': fields.String(default='', description='Url to redirect to'), RepositoryObjBaseClass.getMetadataElementKey(): fields.Nested(RepositoryObjBaseClass.getMetadataModel(appObj, flaskrestplusfields=fields)) })
def getAPIKeyModel(appObj): return appObj.flastRestPlusAPIObject.model('APIKeyModel', { 'id': fields.String(default='DEFAULT', description='Unique identifier of APIKey'), 'tenantName': fields.String(default='DEFAULT', description='Name of the Tenant this APIKey associated with'), 'createdByUserID': fields.String(default='DEFAULT', description='UserGUID of user who created this ticket'), 'restrictedRoles': fields.List(fields.String(default=None,description='If not an empty list a subset of the users roles to be inherited by this APIKey'),required=True), 'externalData': fields.Raw(description='Any other data supplied during apikey creation', required=True), RepositoryObjBaseClass.getMetadataElementKey(): fields.Nested(RepositoryObjBaseClass.getMetadataModel(appObj, flaskrestplusfields=fields)) })
def getUserDict(self): # dict returned to user who owns this shorturl d = self.getDict() return { "id": d["id"], "shortURL": d["shortURL"], "expectedExpire": d["expectedExpire"], "targetUrl": d["targetUrl"], RepositoryObjBaseClass.getMetadataElementKey(): d[RepositoryObjBaseClass.getMetadataElementKey()] }
def getTicketTypeModel(appObj): return appObj.flastRestPlusAPIObject.model( 'TicketType', { 'id': fields.String( default='DEFAULT', description='Unique identifier of User from login system'), 'tenantName': fields.String(default='DEFAULT', description='Tenant name for this ticket type'), 'ticketTypeName': fields.String(default='DEFAULT', description='Name displayed on admin screent'), 'description': fields.String(default='DEFAULT', description='Description of ticket type'), 'enabled': fields.Boolean( default=False, description='Can the ticket type currently be used'), 'welcomeMessage': fields.Nested(getCreateTicketTypeModel_welcomeMessage(appObj), skip_none=True), 'allowUserCreation': fields.Boolean( default=False, description= 'Allow unknown logins to create new users when using this ticket.' ), 'issueDuration': fields.Integer( default=None, description='Hours to issue ticket for on creation'), 'roles': fields.List( fields.String( default='DEFAULT', description='List of roles this tickert type will assign') ), 'postUseURL': fields.String( default='DEFAULT', description='URL to send user to after ticket is used'), 'postInvalidURL': fields.String( default='DEFAULT', description= 'URL to send user to after invalid or request validaiton'), RepositoryObjBaseClass.getMetadataElementKey(): fields.Nested( RepositoryObjBaseClass.getMetadataModel( appObj, flaskrestplusfields=fields)) })
def getTicketWithCaculatedFieldsModel(appObj): return appObj.flastRestPlusAPIObject.model( 'TicketTypeWithCaculated', { 'id': fields.String( default='DEFAULT', description='Unique identifier of Ticket - used in URL'), 'typeGUID': fields.String( default='DEFAULT', description='Unique identifier of Ticket - used in URL'), 'expiry': fields.DateTime(dt_format=u'iso8601', description='Datetime ticket will expire'), 'foreignKey': fields.String( default='DEFAULT', description='Unique identifier of Ticket - used in URL'), 'usedDate': fields.DateTime( dt_format=u'iso8601', description='Datetime ticket was used or none if it wasn\'t'), 'useWithUserID': fields.String( default=None, description='Unique identifier of Ticket - used in URL'), 'reissueRequestedDate': fields.DateTime( dt_format=u'iso8601', description='Datetime ticket was reissueRequestedDate'), 'reissuedTicketID': fields.String( default=None, description='Unique identifier of Ticket - used in URL'), 'disabled': fields.Boolean(default=False, description='Has this ticket been disabled'), RepositoryObjBaseClass.getMetadataElementKey(): fields.Nested( RepositoryObjBaseClass.getMetadataModel( appObj, flaskrestplusfields=fields)), # Extra below 'usableState': fields.String(default='DEFAULT', description='Usable state of this ticket') })
def __init__(self, obj, objVersion, creationDateTime, lastUpdateDateTime, objKey, repositoryObj, storeConnection): RepositoryObjBaseClass.__init__(self, obj, objVersion, creationDateTime, lastUpdateDateTime, objKey, repositoryObj)
def __init__(self, obj, objVersion, creationDateTime, lastUpdateDateTime, objKey, repositoryObj, storeConnection): RepositoryObjBaseClass.__init__(self, obj, objVersion, creationDateTime, lastUpdateDateTime, objKey, repositoryObj) self.internalUseIndicator = False