TEST_F(FileV4Test, HdrItemAttTest) { PWSfileHeader hdr1; PWSfileV4 fw(fname.c_str(), PWSfile::Write, PWSfile::V40); pws_os::CUUID att_uuid = attItem.GetUUID(); fullItem.SetAttUUID(att_uuid); fw.SetHeader(hdr); ASSERT_EQ(PWSfile::SUCCESS, fw.Open(passphrase)); hdr1 = fw.GetHeader(); // Some fields set by Open() EXPECT_EQ(PWSfile::SUCCESS, fw.WriteRecord(fullItem)); EXPECT_EQ(PWSfile::SUCCESS, fw.WriteRecord(attItem)); ASSERT_EQ(PWSfile::SUCCESS, fw.Close()); ASSERT_TRUE(pws_os::FileExists(fname)); CItemData readData[2]; CItemAtt readAtt; PWSfileV4 fr(fname.c_str(), PWSfile::Read, PWSfile::V40); ASSERT_EQ(PWSfile::SUCCESS, fr.Open(passphrase)); EXPECT_EQ(PWSfile::SUCCESS, fr.ReadRecord(readData[0])); EXPECT_EQ(fullItem, readData[0]); EXPECT_EQ(PWSfile::WRONG_RECORD, fr.ReadRecord(readData[1])); // att here! EXPECT_EQ(PWSfile::SUCCESS, fr.ReadRecord(readAtt)); attItem.SetOffset(readAtt.GetOffset()); EXPECT_EQ(attItem, readAtt); EXPECT_EQ(PWSfile::SUCCESS, fr.Close()); }
TEST_F(FileV4Test, AttTest) { PWSfileV4 fw(fname.c_str(), PWSfile::Write, PWSfile::V40); ASSERT_EQ(PWSfile::SUCCESS, fw.Open(passphrase)); EXPECT_EQ(PWSfile::SUCCESS, fw.WriteRecord(attItem)); ASSERT_EQ(PWSfile::SUCCESS, fw.Close()); ASSERT_TRUE(pws_os::FileExists(fname)); CItemAtt readAtt; PWSfileV4 fr(fname.c_str(), PWSfile::Read, PWSfile::V40); ASSERT_EQ(PWSfile::SUCCESS, fr.Open(passphrase)); EXPECT_EQ(PWSfile::SUCCESS, fr.ReadRecord(readAtt)); EXPECT_EQ(PWSfile::END_OF_FILE, fr.ReadRecord(item)); EXPECT_EQ(PWSfile::SUCCESS, fr.Close()); attItem.SetOffset(readAtt.GetOffset()); EXPECT_EQ(attItem, readAtt); }
void FileV4Test::SetUp() { hdr.m_prefString = _T("aPrefString"); hdr.m_whenlastsaved = 1413129351; // overwritten in Open() hdr.m_lastsavedby = _T("aUser"); hdr.m_lastsavedon = _T("aMachine"); hdr.m_whatlastsaved = _T("PasswordSafe test framework"); hdr.m_DB_Name = fname.c_str(); hdr.m_DB_Description = _T("Test the header's persistency"); fullItem.CreateUUID(); fullItem.SetTitle(title); fullItem.SetPassword(password); fullItem.SetUser(user); fullItem.SetNotes(notes); fullItem.SetGroup(group); fullItem.SetURL(url); fullItem.SetAutoType(at); fullItem.SetEmail(email); fullItem.SetSymbols(symbols); fullItem.SetRunCommand(runcmd); fullItem.SetATime(aTime); fullItem.SetCTime(cTime); fullItem.SetXTime(xTime); fullItem.SetPMTime(pmTime); fullItem.SetRMTime(rmTime); fullItem.SetDCA(iDCA); fullItem.SetShiftDCA(iSDCA); smallItem.CreateUUID(); smallItem.SetTitle(_T("picollo")); smallItem.SetPassword(_T("tiny-passw")); attItem.CreateUUID(); attItem.SetTitle(L"I'm an attachment"); const stringT testAttFile(L"data/image1.jpg"); int status = attItem.Import(testAttFile); ASSERT_EQ(PWSfile::SUCCESS, status); }
TEST_F(ItemAttTest, ImpExp) { const stringT testImpFile(fullfileName); const stringT testExpFile(L"output.tmp"); CItemAtt ai; int status; status = ai.Import(L"nosuchfile"); EXPECT_EQ(PWScore::CANT_OPEN_FILE, status); EXPECT_EQ(L"", ai.GetFileName()); EXPECT_FALSE(ai.HasContent()); status = ai.Import(testImpFile); EXPECT_EQ(PWScore::SUCCESS, status); EXPECT_STREQ(fileName.c_str(), ai.GetFileName().c_str()); EXPECT_STREQ(filePath.c_str(), ai.GetFilePath().c_str()); EXPECT_TRUE(ai.HasContent()); status = ai.Export(testExpFile); EXPECT_EQ(PWScore::SUCCESS, status); EXPECT_TRUE(pws_os::FileExists(testExpFile)); FILE *f1 = pws_os::FOpen(testImpFile, L"rb"); FILE *f2 = pws_os::FOpen(testExpFile, L"rb"); EXPECT_EQ(pws_os::fileLength(f1), pws_os::fileLength(f2)); size_t flen = static_cast<size_t>(pws_os::fileLength(f1)); unsigned char *m1 = new unsigned char[flen]; unsigned char *m2 = new unsigned char[flen]; ASSERT_EQ(1, fread(m1, flen, 1, f1)); ASSERT_EQ(1, fread(m2, flen, 1, f2)); fclose(f1); fclose(f2); EXPECT_EQ(0, memcmp(m1, m2, flen)); delete[] m1; delete[] m2; pws_os::DeleteAFile(testExpFile); }
TEST_F(ItemAttTest, Getters_n_Setters) { CItemAtt ai; pws_os::CUUID uuid; time_t cTime = 1425836169; unsigned char content[122] = {0xff, 0x00, 0xb4, 0x65, 0xfc, 0x91, 0xfb, 0xbf, 0xe0, 0x8f, 0xea, 0x6b, 0xf9, 0x9f, 0xde, 0x1f, 0x62, 0xd6, 0xbf, 0xe8, 0x2f, 0xfb, 0x2c, 0xff, 0x00, 0xe0, 0xf3, 0xe1, 0xff, 0x00, 0xff, 0x00, 0x1d, 0xa5, 0x5b, 0x2d, 0x67, 0xbe, 0xaf, 0xfb, 0x2c, 0xff, 0x00, 0xe0, 0xf3, 0xc0, 0x1f, 0xfc, 0x76, 0x8a, 0x29, 0x7f, 0x68, 0x4b, 0xf9, 0x23, 0xf7, 0x7f, 0xc1, 0x1f, 0xd4, 0xd7, 0xf3, 0x3f, 0xbc, 0x5f, 0xb1, 0x6b, 0x1f, 0xf4, 0x17, 0xfd, 0x96, 0x7f, 0xf0, 0x79, 0xe0, 0x0f, 0xfe, 0x3b, 0x47, 0xd8, 0xb5, 0x8f, 0xfa, 0x0b, 0xfe, 0xcb, 0x3f, 0xf8, 0x3c, 0xf0, 0x07, 0xff, 0x00, 0x1d, 0xa2, 0x8a, 0x3f, 0xb4, 0x25, 0xfc, 0x91, 0xfb, 0xbf, 0xe0, 0x8b, 0xea, 0x6b, 0xf9, 0x9f, 0xde, 0xb0, 0xf1, 0xa7, 0xef, 0xa6, 0xdb, 0xf3, 0x3f, 0xff, 0xd9}; ai.SetUUID(uuid); ai.SetTitle(title); ai.SetCTime(cTime); ai.SetContent(content, sizeof(content)); time_t tVal = 0; unsigned char *contentVal; EXPECT_EQ(uuid, ai.GetUUID()); EXPECT_EQ(title, ai.GetTitle()); EXPECT_EQ(cTime, ai.GetCTime(tVal)); ASSERT_EQ(sizeof(content), ai.GetContentLength()); size_t contentSize = ai.GetContentSize(); contentVal = new unsigned char[contentSize]; EXPECT_FALSE(ai.GetContent(contentVal, contentSize - 1)); EXPECT_TRUE(ai.GetContent(contentVal, contentSize)); EXPECT_EQ(0, memcmp(content, contentVal, sizeof(content))); delete[] contentVal; }