def test_UpdateUserAsset(httpConnection, data, expected): dataToSend = dict() if "user" in data: try: r = httpConnection.POST("/add-user", data["user"]) except Exception: pytest.fail("Failed to send POST request") return if r.status_code != 201: pytest.fail(f"Failed to add user.\nDetails: {r.text}") return response = common.getResponse(r.text, expected) if response is None: return None dataToSend["user-id"] = response["id"] dataToSend["user-data"] = response["assets"] for k, v in data["details_entry"].items(): dataToSend["user-data"]["datamap"][k] = v try: r = httpConnection.POST("/update-user-assets", dataToSend) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_GetProducts(httpConnection, data, expected): uuidList = list() userUUID = common.addUser(data, httpConnection) if userUUID is None: return if "product" in data: for element in data["product"]: if "name" in element: dataToSend = dict() dataToSend["product"] = element if userUUID == "": pytest.fail("Missing user test data") return dataToSend["user"] = userUUID try: r = httpConnection.POST("/add-product", dataToSend) except Exception: pytest.fail("Failed to send POST request") return if r.status_code != 201: pytest.fail(f"Failed to add product.\nDetails: {r.text}") return response = common.getResponse(r.text, expected) if response is None: return None uuidList.append(response["id"]) else: uuidList.append(element["product_id"]) try: r = httpConnection.GET("/get-products", {"ids": uuidList}) except Exception: pytest.fail("Failed to send GET request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code == 200: try: for index, product in enumerate(response): status = handleProductIDCheck(product, expected[index]) if status is None: return if response[index] != expected[index]: pytest.fail(f"Test failed\n\ Returned: {response[index]}\nExpected: {expected[index]}") return except Exception as e: pytest.fail(f"Failed to compare results.\nDetails: {e}") return if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_GetUsers(httpConnection, data, expected): uuidList = list() for element in data: if "username" in element: try: r = httpConnection.POST("/add-user", element) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code != 201: pytest.fail(f"Failed to add user.\nDetails: {response}") return uuidList.append(response["id"]) else: uuidList.append(element["id"]) try: r = httpConnection.GET("/get-users", {"ids": uuidList}) except Exception: pytest.fail("Failed to send GET request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code == 200: try: for index, user in enumerate(response): status = handleUserIDCheck(user, expected[index]) if status is None: return if response[index] != expected[index]: pytest.fail(f"Test failed\n\ Returned: {response[index]}\nExpected: {expected[index]}") return except Exception as e: pytest.fail(f"Failed to compare results.\nDetails: {e}") return if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def formResults(reqList, opener, item = None): if item: trainNum4mail = item.reqProps[5] st0 = urllib.quote(reqList[0].encode('utf-8')) st1 = urllib.quote(reqList[2].encode('utf-8')) id0 = reqList[1] id1 = reqList[3] date = reqList[4] if (not id0 or not id1): return None req1 = 'http://pass.rzd.ru/timetable/public/ru?STRUCTURE_ID=735&layer_id=5371&dir=0&tfl=3&checkSeats=0&withoutSeats=y&st0=%s&code0=%s&dt0=%s&st1=%s&code1=%s&dt1=%s' % (st0, id0, date, st1, id1, date) out = '<html><body><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' r = json.loads(getResponse(req1, opener)) if (r['result'].lower()=='ok'): try: out += r['tp'][0]['msgList'][0]['message'] + '<br>' except IndexError, e: logging.error('msgList Error: ' + str(r)) return out
def test_CreateProduct(httpConnection, data, expected): userUUID = common.addUser(data, httpConnection) if userUUID is None: return dataToSend = dict() dataToSend["product"] = data["product"] dataToSend["user"] = userUUID try: r = httpConnection.POST("/add-product", dataToSend) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code == 201: if response["name"] != expected["name"]: pytest.fail( f"Test failed\nReturned: {response}\nExpected: {expected}") return if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_GetProduct(httpConnection, data, expected): userUUID = common.addUser(data, httpConnection) if userUUID is None: return productUUID = common.addProduct(data, userUUID, httpConnection) if productUUID is None: return try: r = httpConnection.GET("/get-product-by-id", {"id": productUUID}) except Exception: pytest.fail("Failed to send GET request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code == 200: try: status = handleProductIDCheck(response, expected) if status is None: return if response != expected: pytest.fail( f"Test failed\nReturned: {response}\nExpected: {expected}") return except Exception as e: pytest.fail(f"Failed to compare results.\nDetails: {e}") return if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_GetUser(httpConnection, data, expected): uuid = "" if "username" in data: try: r = httpConnection.POST("/add-user", data) except Exception: pytest.fail("Failed to send POST request") return if r.status_code != 201: pytest.fail(f"Failed to add user.\nDetails: {r.text}") return response = common.getResponse(r.text, expected) if response is None: return None uuid = response["id"] else: uuid = data["id"] try: r = httpConnection.GET("/get-user-by-id", {"id": uuid}) except Exception: pytest.fail("Failed to send GET request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code == 200: try: zeroID = '00000000-0000-0000-0000-000000000000' if response["username"] != expected["username"] or \ response["email"] != expected["email"] or \ response["settings"]["id"] == '' or \ response["settings"]["id"] == zeroID or \ response["assets"]["id"] == '' or \ response["assets"]["id"] == zeroID: pytest.fail( f"Test failed\nReturned: {response}\nExpected: {expected}") return except Exception as e: pytest.fail(f"Failed to compare results.\nDetails: {e}") return if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_AddProductUsers(httpConnection, data, expected): partnerUUIDs = list() userUUID = common.addUser(data, httpConnection) if userUUID is None: return productUUID = common.addProduct(data, userUUID, httpConnection) if productUUID is None: return if "partner_user" in data: for user in data["partner_user"]: try: r = httpConnection.POST("/add-user", user["user"]) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code != 201: pytest.fail(f"Failed to add product.\nDetails: {response}") return partnerUUID = dict() partnerUUID["id"] = response["id"] partnerUUID["privilege"] = user["privilege"] partnerUUIDs.append(partnerUUID) dataToSend = dict() dataToSend["product_id"] = productUUID dataToSend["users"] = partnerUUIDs try: r = httpConnection.POST("/add-product-user", dataToSend) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_GetUserByEmail(httpConnection, data, expected): email = "" if "username" in data: try: r = httpConnection.POST("/add-user", data) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code != 201: pytest.fail(f"Failed to add user.\nDetails: {response}") return email = response["email"] else: email = data["email"] try: r = httpConnection.GET("/get-user-by-email", {"email": email}) except Exception: pytest.fail("Failed to send GET request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code == 200: try: status = handleUserIDCheck(response, expected) if status is None: return if response != expected: pytest.fail( f"Test failed\nReturned: {response}\nExpected: {expected}") except Exception as e: pytest.fail(f"Failed to compare results.\nDetails: {e}") return if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_UpdateProjectAsset(httpConnection, data, expected): dataToSend = dict() userUUID = common.addUser(data, httpConnection) if userUUID is None: return productUUID = common.addProduct(data, userUUID, httpConnection) if productUUID is None: return dataToSend["project"] = data["project"] dataToSend["product_id"] = productUUID dataToSend["owner_id"] = userUUID if "project" in data: try: r = httpConnection.POST("/add-project", dataToSend) except Exception: pytest.fail("Failed to send POST request") return if r.status_code != 201: pytest.fail(f"Failed to add project.\nDetails: {r.text}") return response = common.getResponse(r.text, expected) if response is None: return None dataToSend = dict() dataToSend["project"] = response for k, v in data["details_entry"].items(): dataToSend["project"]["assets"]["datamap"][k] = v try: r = httpConnection.POST("/update-project-assets", dataToSend) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def getCityId(city, s): req = 'http://pass.rzd.ru/suggester?lang=ru&stationNamePart=%s' % urllib.quote(city.encode('utf-8')) respData = getResponse(req) try: rJson = json.loads(respData) for item in rJson: if item['name'].lower() == city.lower(): s.response.out.write(u'Найден: %s : %s<br>' % (item['name'], item['id'])) return item['id'] except ValueError, e: logging.error('getCityId err: %s %s' % (respData, city))
def test_Authenticate(httpConnection, data, expected): uuid = "" email = "empty" password = "******" if "user" in data: try: r = httpConnection.POST("/add-user", data["user"]) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code != 201: pytest.fail(f"Failed to add user.\nDetails: {response}") return uuid = response["id"] email = data["login"]["email"] password = data["login"]["password"] else: uuid = data["id"] try: r = httpConnection.GET("/authenticate", { "id": uuid, "email": email, "password": password }) except Exception: pytest.fail("Failed to send GET request") return response = common.getResponse(r.text, expected) if response is None: return None if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def test_CreateUser(httpConnection, data, expected): try: r = httpConnection.POST("/add-user", data) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code == 201: if response["username"] != expected["username"] or \ response["email"] != expected["email"]: pytest.fail( f"Test failed\nReturned: {response}\nExpected: {expected}") return if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def get(self): global suggestDict suggOut = '[]' try: station = self.request.get('stationNamePart') stationKey = station[:3] sStations = set() if stationKey in suggestDict: sStations = suggestDict[stationKey] else: req = 'http://pass.rzd.ru/suggester?lang=ru&stationNamePart=%s' % urllib.quote(station.encode('utf-8')) respData = getResponse(req) if len(respData) > 0: rJson = json.loads(respData) for item in rJson: sStations.add(item['name']) suggOut = '[' lStations = self.sort4Find(sStations, station.lower())[:15] cnt = 1 for item in lStations: suggOut += '{"id":"%d","label":"%s","value":"%s"},' % (cnt, item, item) cnt += 1 suggOut = suggOut[:-1] suggOut += ']' if len(suggestDict) < suggestDictSize: #one more stub !!! suggestDict[stationKey] = sStations self.response.out.write(suggOut) except (TypeError, ValueError): self.response.out.write(suggOut)
def test_DeleteProductUser(httpConnection, data, expected): userUUID = common.addUser(data, httpConnection) if userUUID is None: return productUUID = common.addProduct(data, userUUID, httpConnection) if productUUID is None: return dataToSend = dict() dataToSend["product_id"] = productUUID dataToSend["user_id"] = userUUID try: r = httpConnection.POST("/delete-product-user", dataToSend) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")
def moodReport(inCmd, inStr, matches=[[], []]): from common import say, getResponse from Fermi import stateSummary from satisfactionMaximization import IV reportType = "short" if "report" in inStr: reportType = "full" PREVMOOD = GLOB['PREVMOOD'] MOOD = GLOB['MOOD'] INGESTED = GLOB['INGESTED'] if reportType == "short": #mVec = copy.deepcopy(MOOD) #mVec = fullMoodVec(mVec) Fm = fullMoodVec(MOOD, pronoun=True) # weight vector Fm.sort(key=lambda tup: tup[1]) Fm.reverse() #curFace = getFace(MOOD) #rStr = "I am feeling "+curFace[2]+"." rStr = "I am feeling " + Fm[0][0] if Fm[0][0] >= 0: rStr += ", but" else: rStr += ", and" #print "HERE" # sort by weight Fw = fullMoodVec(IV(), colloquial=True) # weight vector Fw.sort(key=lambda tup: tup[1]) Fw.reverse() topNeed = Fw[0] if topNeed[1] >= 0.85: rStr += " I am badly in need of some " + topNeed[0] + '.' elif topNeed[1] >= 0.5: rStr += " I am in need of some " + topNeed[0] + '.' elif topNeed[1] >= 0.25: rStr += " I could use some " + topNeed[0] + '.' else: rStr += " I wouldn't mind some " + topNeed[0] + '.' say(rStr, more=False, speak=setting("SPEAK"), location="history") #topThought = m.getTopSentence(QV, ["", GLOB['MOOD']]) #print k.sf(topThought[1], 3) #say('*'+topThought[0]+'*', more=False, speak=setting("SPEAK"), moodUpdate=True) else: # want to get previous mood before AI talks about mood report prevFace = getFace(PREVMOOD) say(getResponse(inCmd), more=False, speak=setting("SPEAK")) curFace = getFace(MOOD) SMood, iWeights = ingestionMood(moodType="SUBSTANCE") imVec = [SMood[i] * iWeights[i] for i in range(GLOB['MOODDIM'])] iFace = getFace(SMood) T = timeFactor() print print " Current mood:", curFace[2] print " Emoticon:", curFace[0] #print "\n %s" % ''.join('%s'%MOOD) stateSummary() print print "Previous mood:", prevFace[2] print " Emoticon:", prevFace[0] #print "\n %s" % ''.join('%s'%PREVMOOD) stateSummary(PREVMOOD) print print "Mood from ingestions" print " Emoticon:", iFace[0] #print "\n %s" % ''.join('%s'%imVec) stateSummary(imVec) print print "Mood from time of day" print " Emoticon:", getFace(T)[0] print " Arousal: %.2f" % T[1] return True
def ingest(inCmd, inStr, mood=[], weight=[], isCmd=False, isMem=False, matches=[[], []]): from common import wordSim, processResponse, getResponse, say #from loadFile import load from determineFunction import findCMD, refineMatches from Fermi import substituteBiographicMemory if not (isCmd or isMem): matches = refineMatches(inCmd, inStr) matches = substituteBiographicMemory(matches, queryType='what is') if len(matches[0]) == 0 and not (isCmd or isMem): say(getResponse(findCMD("rephrase")), more=False, speak=setting("SPEAK"), moodUpdate=True) return False ''' Algorithm: - load substance from list - record ingestion time - append to INGESTED list ''' if isCmd: ingestionTime = time.time() taskProfile = "pow(2.0, -1.0*T*T/(900.0*900.0))" # ~15 minute half life taskDetails = [[inCmd[0]], mood, weight, taskProfile] #print "appending: ", taskDetails GLOB['INGESTED'].append([taskDetails, ingestionTime, "COMMAND"]) GLOB['MOOD'] = updateMood(GLOB['MOOD'], weight=[0] * GLOB['MOODDIM']) #print "AFTER CMD ADD" #print GLOB['MOOD'] return # no return value if adding a cmd mood modifier if isMem: #print "ADDING MEMORY MOOD" ingestionTime = time.time() memProfile = "pow(2.0, -1.0*T*T/(900.0*900.0))" # ~15 minute half life memDetails = [[inStr], mood, weight, memProfile] #print "appending: ", taskDetails GLOB['INGESTED'].append([memDetails, ingestionTime, "MEMORY"]) GLOB['MOOD'] = updateMood(GLOB['MOOD'], weight=[0] * GLOB['MOODDIM']) #print "AFTER CMD ADD" #print GLOB['MOOD'] return # no return value if adding a cmd mood modifier substances = load(SETS_DIR + "substances.txt", LPC=5) # line 0: name(s) # line 1: effect # line 2: weight # line 3: profile equations # line 4: response formats ''' for matchStr in inCmd[1]: matchStr= matchStr.replace('juice','') inStr = inStr.replace(matchStr, '') ''' # find top match maxMatch = 0 topSubstance = [] for substance in substances: for matchPhrase in substance[0]: matchScore = wordSim(matches[0][0], matchPhrase, useInScore=True) #print matchPhrase, inStr, matchScore if matchScore >= maxMatch: maxMatch = matchScore topSubstance = substance if setting('DEBUG'): print "INGESTION SCORE:", topSubstance[0], " - ", maxMatch # topSubstance[4]: #replacements = [topSubstance[0][randint(0,len(topSubstance[0])-1)]] replacements = topSubstance[0][randint(0, len(topSubstance[0]) - 1)] #matches[0][0] # #rStr = processResponse(getResponse(inCmd), replacements) responseForm = topSubstance[4][randint(0, len(topSubstance[4]) - 1)] rStr = processResponse(responseForm, [replacements]) say(rStr, more=False, speak=setting("SPEAK")) # now modify mood accordingly ingestionTime = time.time() #print "appending: ", topSubstance GLOB['INGESTED'].append([topSubstance, ingestionTime, "SUBSTANCE"]) #print "BEFORE UPDATE" #print GLOB['MOOD'] GLOB['MOOD'] = updateMood(GLOB['MOOD'], weight=[0] * GLOB['MOODDIM']) #print "AFTER SUBSTANCE ADD" #print GLOB['MOOD'] return [topSubstance[0][0], True]
def moodReport(inCmd, inStr, matches=[[],[]]): from common import say, getResponse from Fermi import stateSummary from satisfactionMaximization import IV reportType="short" if "report" in inStr: reportType = "full" PREVMOOD = GLOB['PREVMOOD'] MOOD = GLOB['MOOD'] INGESTED = GLOB['INGESTED'] if reportType == "short": #mVec = copy.deepcopy(MOOD) #mVec = fullMoodVec(mVec) Fm = fullMoodVec(MOOD,pronoun=True) # weight vector Fm.sort(key=lambda tup: tup[1]) Fm.reverse() #curFace = getFace(MOOD) #rStr = "I am feeling "+curFace[2]+"." rStr = "I am feeling "+Fm[0][0] if Fm[0][0] >= 0: rStr += ", but" else: rStr += ", and" #print "HERE" # sort by weight Fw = fullMoodVec(IV(),colloquial=True) # weight vector Fw.sort(key=lambda tup: tup[1]) Fw.reverse() topNeed = Fw[0] if topNeed[1] >= 0.85: rStr += " I am badly in need of some "+topNeed[0]+'.' elif topNeed[1] >= 0.5: rStr += " I am in need of some "+topNeed[0]+'.' elif topNeed[1] >= 0.25: rStr += " I could use some "+topNeed[0]+'.' else: rStr += " I wouldn't mind some "+topNeed[0]+'.' say(rStr, more=False, speak=setting("SPEAK"), location="history") #topThought = m.getTopSentence(QV, ["", GLOB['MOOD']]) #print k.sf(topThought[1], 3) #say('*'+topThought[0]+'*', more=False, speak=setting("SPEAK"), moodUpdate=True) else: # want to get previous mood before AI talks about mood report prevFace = getFace(PREVMOOD) say(getResponse(inCmd), more=False, speak=setting("SPEAK")) curFace = getFace(MOOD) SMood, iWeights = ingestionMood(moodType="SUBSTANCE") imVec = [SMood[i]*iWeights[i] for i in range(GLOB['MOODDIM'])] iFace = getFace(SMood) T = timeFactor() print print " Current mood:", curFace[2] print " Emoticon:", curFace[0] #print "\n %s" % ''.join('%s'%MOOD) stateSummary() print print "Previous mood:", prevFace[2] print " Emoticon:", prevFace[0] #print "\n %s" % ''.join('%s'%PREVMOOD) stateSummary(PREVMOOD) print print "Mood from ingestions" print " Emoticon:", iFace[0] #print "\n %s" % ''.join('%s'%imVec) stateSummary(imVec) print print "Mood from time of day" print " Emoticon:", getFace(T)[0] print " Arousal: %.2f" % T[1] return True
def ingest(inCmd, inStr, mood=[], weight=[], isCmd=False, isMem=False, matches=[[],[]]): from common import wordSim, processResponse, getResponse, say #from loadFile import load from determineFunction import findCMD, refineMatches from Fermi import substituteBiographicMemory if not (isCmd or isMem): matches = refineMatches(inCmd, inStr) matches = substituteBiographicMemory(matches, queryType='what is') if len(matches[0]) ==0 and not (isCmd or isMem): say(getResponse(findCMD("rephrase")), more=False, speak=setting("SPEAK"), moodUpdate=True) return False ''' Algorithm: - load substance from list - record ingestion time - append to INGESTED list ''' if isCmd: ingestionTime = time.time() taskProfile="pow(2.0, -1.0*T*T/(900.0*900.0))" # ~15 minute half life taskDetails = [[inCmd[0]], mood, weight, taskProfile] #print "appending: ", taskDetails GLOB['INGESTED'].append([taskDetails, ingestionTime, "COMMAND"]) GLOB['MOOD']=updateMood(GLOB['MOOD'], weight=[0]*GLOB['MOODDIM']) #print "AFTER CMD ADD" #print GLOB['MOOD'] return # no return value if adding a cmd mood modifier if isMem: #print "ADDING MEMORY MOOD" ingestionTime = time.time() memProfile="pow(2.0, -1.0*T*T/(900.0*900.0))" # ~15 minute half life memDetails = [[inStr], mood, weight, memProfile] #print "appending: ", taskDetails GLOB['INGESTED'].append([memDetails, ingestionTime, "MEMORY"]) GLOB['MOOD']=updateMood(GLOB['MOOD'], weight=[0]*GLOB['MOODDIM']) #print "AFTER CMD ADD" #print GLOB['MOOD'] return # no return value if adding a cmd mood modifier substances = load(SETS_DIR+"substances.txt", LPC=5) # line 0: name(s) # line 1: effect # line 2: weight # line 3: profile equations # line 4: response formats ''' for matchStr in inCmd[1]: matchStr= matchStr.replace('juice','') inStr = inStr.replace(matchStr, '') ''' # find top match maxMatch=0 topSubstance=[] for substance in substances: for matchPhrase in substance[0]: matchScore = wordSim(matches[0][0], matchPhrase, useInScore=True) #print matchPhrase, inStr, matchScore if matchScore >= maxMatch: maxMatch = matchScore topSubstance = substance if setting('DEBUG'): print "INGESTION SCORE:", topSubstance[0], " - ", maxMatch # topSubstance[4]: #replacements = [topSubstance[0][randint(0,len(topSubstance[0])-1)]] replacements = topSubstance[0][randint(0,len(topSubstance[0])-1)] #matches[0][0] # #rStr = processResponse(getResponse(inCmd), replacements) responseForm = topSubstance[4][randint(0,len(topSubstance[4])-1)] rStr = processResponse(responseForm, [replacements]) say(rStr, more=False, speak=setting("SPEAK")) # now modify mood accordingly ingestionTime = time.time() #print "appending: ", topSubstance GLOB['INGESTED'].append([topSubstance, ingestionTime, "SUBSTANCE"]) #print "BEFORE UPDATE" #print GLOB['MOOD'] GLOB['MOOD']=updateMood(GLOB['MOOD'], weight=[0]*GLOB['MOODDIM']) #print "AFTER SUBSTANCE ADD" #print GLOB['MOOD'] return [topSubstance[0][0], True]
def test_DeleteUser(httpConnection, data, expected): userUUID = common.addUser(data, httpConnection) if userUUID is None: return productUUIDs = list() if "products_to_delete" in data: for product in data["products_to_delete"]: dataToSend = dict() dataToSend["product"] = product dataToSend["user"] = userUUID try: r = httpConnection.POST("/add-product", dataToSend) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code != 201: pytest.fail(f"Failed to add user.\nDetails: {response}") return productUUIDs.append(response["id"]) # Add nominated users and their product relationship nominatedUUIDs = list() if "nominated_users" in data: for nominatedUser in data["nominated_users"]: try: r = httpConnection.POST("/add-user", nominatedUser) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code != 201: pytest.fail( f"Failed to add nominated user.\nDetails: {r.text}") return nominatedUUIDs.append(response["id"]) productUsers = list() productUser = dict() productUser["id"] = response["id"] productUser["privilege"] = 2 productUsers.append(productUser) dataToSend = dict() dataToSend["product_id"] = productUUIDs[0] dataToSend["users"] = productUsers try: r = httpConnection.POST("/add-product-user", dataToSend) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if r.status_code != 201: pytest.fail( f"Failed to add nominated user.\nDetails: {response}") return if len(nominatedUUIDs) > len(productUUIDs): pytest.fail("Too many nominated users.") return nominees = dict() for index, nominee in enumerate(nominatedUUIDs): nominees[productUUIDs[index]] = nominee try: r = httpConnection.POST("/delete-user", { "id": userUUID, "nominees": nominees }) except Exception: pytest.fail("Failed to send POST request") return response = common.getResponse(r.text, expected) if response is None: return None if response != expected: pytest.fail(f"Request failed\nStatus code: \ {r.status_code}\nReturned: {response}\nExpected: {expected}")