diff options
author | Devlin Junker <devlin.junker@gmail.com> | 2023-08-05 19:16:39 -0700 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2023-08-09 11:08:04 +0200 |
commit | 923f986e67413ac548cc98d6d59fa01de9681035 (patch) | |
tree | a3d1fb38fd28388686b0c394d4824af30b959fd7 /tests | |
parent | 450047ef4be0d39ba8a5e5e5ac0d6e87b7203ebb (diff) |
upmerged from master
Signed-off-by: Devlin Junker <devlin.junker@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Unit/Db/ItemMapperTest.php | 12 | ||||
-rw-r--r-- | tests/Unit/Fetcher/FeedFetcherTest.php | 21 | ||||
-rw-r--r-- | tests/Unit/Search/FeedSearchProviderTest.php | 2 | ||||
-rw-r--r-- | tests/Unit/Search/FolderSearchProviderTest.php | 2 | ||||
-rw-r--r-- | tests/Unit/Search/ItemSearchProviderTest.php | 147 | ||||
-rw-r--r-- | tests/Unit/Service/StatusServiceTest.php | 12 | ||||
-rw-r--r-- | tests/api/items.bats | 2 | ||||
-rw-r--r-- | tests/command/feeds.bats | 3 | ||||
m--------- | tests/test_helper/bats-assert | 0 | ||||
-rw-r--r-- | tests/test_helper/feeds/Nextcloud.rss | 22 | ||||
-rw-r--r-- | tests/test_helper/feeds/heise.xml | 602 | ||||
-rw-r--r-- | tests/test_helper/feeds/no_guid_feed.xml | 22 | ||||
m--------- | tests/test_helper/php-feed-generator | 0 | ||||
-rw-r--r-- | tests/updater/helpers/settings.bash | 8 | ||||
-rw-r--r-- | tests/updater/update.bats | 276 |
15 files changed, 787 insertions, 344 deletions
diff --git a/tests/Unit/Db/ItemMapperTest.php b/tests/Unit/Db/ItemMapperTest.php index 3a4a026d6..397f3be2c 100644 --- a/tests/Unit/Db/ItemMapperTest.php +++ b/tests/Unit/Db/ItemMapperTest.php @@ -419,7 +419,7 @@ class ItemMapperTest extends MapperTestUtility $this->builder->expects($this->once()) ->method('select') - ->with('items.*') + ->with('items.id') ->will($this->returnSelf()); $this->builder->expects($this->once()) @@ -528,7 +528,7 @@ class ItemMapperTest extends MapperTestUtility ->with('SQL QUERY') ->willReturn($result); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('createParameter') ->will($this->returnArgument(0)); @@ -537,9 +537,9 @@ class ItemMapperTest extends MapperTestUtility ->with('news_items') ->will($this->returnSelf()); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('set') - ->with('unread', 'unread') + ->withConsecutive(['unread', 'unread'], ['last_modified', 'last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(1)) @@ -547,9 +547,9 @@ class ItemMapperTest extends MapperTestUtility ->withConsecutive(['id IN (:idList)']) ->will($this->returnSelf()); - $this->builder->expects($this->exactly(2)) + $this->builder->expects($this->exactly(3)) ->method('setParameter') - ->withConsecutive(['idList', [1, 2]], ['unread', false]) + ->withConsecutive(['idList', [1, 2]], ['unread', false], ['last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(1)) diff --git a/tests/Unit/Fetcher/FeedFetcherTest.php b/tests/Unit/Fetcher/FeedFetcherTest.php index af8066171..1814a8271 100644 --- a/tests/Unit/Fetcher/FeedFetcherTest.php +++ b/tests/Unit/Fetcher/FeedFetcherTest.php @@ -326,7 +326,7 @@ class FeedFetcherTest extends TestCase $item = $this->createItem(); $feed = $this->createFeed(); $this->mockIterator($this->feed_mock, [$this->item_mock]); - $result = $this->fetcher->fetch($this->url, false, null, null); + $result = $this->fetcher->fetch($this->url, false, null, null, null); $this->assertEquals([$feed, [$item]], $result); } @@ -344,7 +344,8 @@ class FeedFetcherTest extends TestCase $this->url, false, 'account@email.com', - 'F9sEU*Rt%:KFK8HMHT&' + 'F9sEU*Rt%:KFK8HMHT&', + $this->modified->format(DateTime::RSS) ); $this->assertEquals([$feed, [$item]], $result); @@ -359,7 +360,7 @@ class FeedFetcherTest extends TestCase $item = $this->createItem('audio/ogg'); $feed = $this->createFeed(); $this->mockIterator($this->feed_mock, [$this->item_mock]); - $result = $this->fetcher->fetch($this->url, false, null, null); + $result = $this->fetcher->fetch($this->url, false, null, null, null); $this->assertEquals([$feed, [$item]], $result); } @@ -373,7 +374,7 @@ class FeedFetcherTest extends TestCase $item = $this->createItem('video/ogg'); $feed = $this->createFeed(); $this->mockIterator($this->feed_mock, [$this->item_mock]); - $result = $this->fetcher->fetch($this->url, false, null, null); + $result = $this->fetcher->fetch($this->url, false, null, null, null); $this->assertEquals([$feed, [$item]], $result); } @@ -388,7 +389,7 @@ class FeedFetcherTest extends TestCase $feed = $this->createFeed('de-DE'); $item = $this->createItem(); $this->mockIterator($this->feed_mock, [$this->item_mock]); - $result = $this->fetcher->fetch($this->url, false, null, null); + $result = $this->fetcher->fetch($this->url, false, null, null, null); $this->assertEquals([$feed, [$item]], $result); } @@ -402,7 +403,7 @@ class FeedFetcherTest extends TestCase $this->createFeed('he-IL'); $this->createItem(); $this->mockIterator($this->feed_mock, [$this->item_mock]); - list($_, $items) = $this->fetcher->fetch($this->url, false, null, null); + list($_, $items) = $this->fetcher->fetch($this->url, false, null, null, null); $this->assertTrue($items[0]->getRtl()); } @@ -428,7 +429,7 @@ class FeedFetcherTest extends TestCase $this->mockIterator($this->feed_mock, [$this->item_mock]); - list($feed, $items) = $this->fetcher->fetch($this->url, false, null, null); + list($feed, $items) = $this->fetcher->fetch($this->url, false, null, null, null); $this->assertSame($items[0]->getPubDate(), 1522180229); } @@ -454,7 +455,7 @@ class FeedFetcherTest extends TestCase $this->mockIterator($this->feed_mock, [$this->item_mock]); - list($feed, $items) = $this->fetcher->fetch($this->url, false, null, null); + list($feed, $items) = $this->fetcher->fetch($this->url, false, null, null, null); $this->assertSame($items[0]->getPubDate(), 1519761029); } @@ -467,7 +468,7 @@ class FeedFetcherTest extends TestCase $this->createItem(); $feed = $this->createFeed(); $this->mockIterator($this->feed_mock, [$this->item_mock]); - $result = $this->fetcher->fetch($this->url, false, null, null); + $result = $this->fetcher->fetch($this->url, false, null, null. null, null); //Explicitly assert GUID value $this->assertEquals(2, count($result)); $this->assertEquals(1, count($result[1])); @@ -485,7 +486,7 @@ class FeedFetcherTest extends TestCase $this->createItem(); $feed = $this->createFeed(); $this->mockIterator($this->feed_mock, [$this->item_mock]); - $result = $this->fetcher->fetch($this->url, false, null, null); + $result = $this->fetcher->fetch($this->url, false, null, null, null); //Explicitly assert GUID value $this->assertEquals(2, count($result)); $this->assertEquals(1, count($result[1])); diff --git a/tests/Unit/Search/FeedSearchProviderTest.php b/tests/Unit/Search/FeedSearchProviderTest.php index 97ec1f984..e1463a7a7 100644 --- a/tests/Unit/Search/FeedSearchProviderTest.php +++ b/tests/Unit/Search/FeedSearchProviderTest.php @@ -110,7 +110,7 @@ class FeedSearchProviderTest extends TestCase $this->generator->expects($this->once()) ->method('imagePath') - ->with('core', 'filetypes/text.svg') + ->with('core', 'rss.svg') ->willReturn('folderpath.svg'); $this->generator->expects($this->once()) diff --git a/tests/Unit/Search/FolderSearchProviderTest.php b/tests/Unit/Search/FolderSearchProviderTest.php index cf4ffd969..e06bf45f7 100644 --- a/tests/Unit/Search/FolderSearchProviderTest.php +++ b/tests/Unit/Search/FolderSearchProviderTest.php @@ -77,7 +77,7 @@ class FolderSearchProviderTest extends TestCase public function testGetOrderInternal() { - $this->assertSame(-1, $this->class->getOrder('news.page.index', [])); + $this->assertSame(0, $this->class->getOrder('news.page.index', [])); } public function testSearch() diff --git a/tests/Unit/Search/ItemSearchProviderTest.php b/tests/Unit/Search/ItemSearchProviderTest.php new file mode 100644 index 000000000..062d52a77 --- /dev/null +++ b/tests/Unit/Search/ItemSearchProviderTest.php @@ -0,0 +1,147 @@ +<?php + +namespace OCA\News\Search; + +use OCA\News\Db\Item; +use OCA\News\Db\ListType; +use OCA\News\Service\ItemServiceV2; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\Search\ISearchQuery; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; + +class ItemSearchProviderTest extends TestCase +{ + + /** + * @var MockObject|ItemServiceV2 + */ + private $itemService; + + /** + * @var MockObject|IL10N + */ + private $l10n; + + /** + * @var MockObject|IURLGenerator + */ + private $generator; + + /** + * @var ItemSearchProvider + */ + private $class; + + protected function setUp(): void + { + $this->l10n = $this->getMockBuilder(IL10N::class) + ->disableOriginalConstructor() + ->getMock(); + $this->generator = $this->getMockBuilder(IURLGenerator::class) + ->disableOriginalConstructor() + ->getMock(); + $this->itemService = $this->getMockBuilder(ItemServiceV2::class) + ->disableOriginalConstructor() + ->getMock(); + + $this->class = new ItemSearchProvider( + $this->l10n, + $this->generator, + $this->itemService + ); + } + + public function testGetId() + { + $this->assertSame('news_item', $this->class->getId()); + } + + public function testGetName() + { + $this->l10n->expects($this->once()) + ->method('t') + ->with('News articles') + ->willReturnArgument(0); + + $this->assertSame('News articles', $this->class->getName()); + } + + public function testGetOrderExternal() + { + $this->assertSame(65, $this->class->getOrder('contacts.Page.index', [])); + } + + public function testGetOrderInternal() + { + $this->assertSame(1, $this->class->getOrder('news.page.index', [])); + } + + public function testSearch() + { + $user = $this->getMockBuilder(IUser::class) + ->getMock(); + $query = $this->getMockBuilder(ISearchQuery::class) + ->getMock(); + + $query->expects($this->once()) + ->method('getCursor') + ->willReturn(null); + + $query->expects($this->once()) + ->method('getLimit') + ->willReturn(10); + + $user->expects($this->once()) + ->method('getUID') + ->willReturn('user'); + + $query->expects($this->once()) + ->method('getTerm') + ->willReturn('some text'); + + + $items = [ + Item::fromRow(['id' => 1,'title' => 'some_tErm', 'body' => 'some text', 'feedId' => 1]), + Item::fromRow(['id' => 2,'title' => 'nothing', 'body' => 'some text', 'feedId' => 1]) + ]; + + $this->itemService->expects($this->once()) + ->method('findAllWithFilters') + ->with( + 'user', + ListType::ALL_ITEMS, + 10, + 0, + false, + ['some text']) + ->willReturn($items); + + + $this->l10n->expects($this->once()) + ->method('t') + ->with('News') + ->willReturnArgument(0); + + $this->generator->expects($this->once()) + ->method('imagePath') + ->with('core', 'filetypes/text.svg') + ->willReturn('folderpath.svg'); + + $this->generator->expects($this->exactly(2)) + ->method('linkToRoute') + ->with('news.page.index') + ->willReturn('/news'); + + + $result = $this->class->search($user, $query)->jsonSerialize(); + $entry = $result['entries'][0]->jsonSerialize(); + $this->assertSame('News', $result['name']); + $this->assertSame('some_tErm', $entry['title']); + $this->assertSame('folderpath.svg', $entry['thumbnailUrl']); + $this->assertSame('some text', $entry['subline']); + $this->assertSame('/news#/items/feeds/1', $entry['resourceUrl']); + } +} diff --git a/tests/Unit/Service/StatusServiceTest.php b/tests/Unit/Service/StatusServiceTest.php index dfe3dfd55..fdfe41af5 100644 --- a/tests/Unit/Service/StatusServiceTest.php +++ b/tests/Unit/Service/StatusServiceTest.php @@ -16,6 +16,7 @@ namespace OCA\News\Tests\Unit\Service; use OCA\News\Service\StatusService; use OCP\IConfig; use OCP\IDBConnection; +use OCP\BackgroundJob\IJobList; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; @@ -37,6 +38,12 @@ class StatusServiceTest extends TestCase */ private $service; + /** + * @var IJobList + */ + private $jobList; + + public function setUp(): void { $this->settings = $this->getMockBuilder(IConfig::class) @@ -45,7 +52,10 @@ class StatusServiceTest extends TestCase $this->connection = $this->getMockBuilder(IDBConnection::class) ->disableOriginalConstructor() ->getMock(); - $this->service = new StatusService($this->settings, $this->connection); + $this->jobList = $this->getMockBuilder(IJobList::class) + ->disableOriginalConstructor() + ->getMock(); + $this->service = new StatusService($this->settings, $this->connection, $this->jobList); } public function testGetStatus() diff --git a/tests/api/items.bats b/tests/api/items.bats index d6896785f..4bb38bf75 100644 --- a/tests/api/items.bats +++ b/tests/api/items.bats @@ -67,7 +67,7 @@ teardown() { SYNC_TIME=$(date +%s) # mark all items of feed as read, returns nothing (other client marks items as read) - STATUS_CODE=$(http --ignore-stdin -hdo /tmp/body -a ${user}:${APP_PASSWORD} PUT ${BASE_URLv1}/feeds/$FEEDID/read newestItemId="$max" 2>&1| grep HTTP/) + STATUS_CODE=$(http --ignore-stdin -hdo /tmp/body -a ${user}:${APP_PASSWORD} PUT ${BASE_URLv1}/items/read newestItemId="$max" 2>&1| grep HTTP/) # client 2 checks for updates since last sync UPDATED_ITEMS=($(http --ignore-stdin -b -a ${user}:${APP_PASSWORD} GET ${BASE_URLv1}/items/updated id=$FEEDID lastModified=$SYNC_TIME | grep -Po '"id":\K([0-9]+)' | tr '\n' ' ')) diff --git a/tests/command/feeds.bats b/tests/command/feeds.bats index 7598ac345..683207d98 100644 --- a/tests/command/feeds.bats +++ b/tests/command/feeds.bats @@ -24,6 +24,7 @@ teardown() { @test "[$TESTSUITE] Add feed without GUIDs" { run ./occ news:feed:add "$user" "$NO_GUID_FEED" --title "Something-${BATS_SUITE_TEST_NUMBER}" + echo "Attention! Are the dates of the feed older than 'one year ago'? If so this is not a bug, adjust the dates. #2201" assert_failure assert_output "Malformed feed: item has no GUID" @@ -47,7 +48,7 @@ teardown() { assert_success assert_output --partial '"faviconLink": "https:\/\/nextcloud.com\/wp-content\/uploads\/2022\/03\/favicon.png",' - assert_output --partial '"faviconLink": "https:\/\/www.heise.de\/favicon.ico?v=JykvN0w9Ye",' + assert_output --partial '"faviconLink": "https:\/\/www.heise.de\/favicon.ico?v=' } @test "[$TESTSUITE] List all items" { diff --git a/tests/test_helper/bats-assert b/tests/test_helper/bats-assert -Subproject ffe84ea5dd43b568851549b3e241db150c12929 +Subproject 78fa631d1370562d2cd4a1390989e706158e7bf diff --git a/tests/test_helper/feeds/Nextcloud.rss b/tests/test_helper/feeds/Nextcloud.rss index 0e031ef83..a46def8bd 100644 --- a/tests/test_helper/feeds/Nextcloud.rss +++ b/tests/test_helper/feeds/Nextcloud.rss @@ -12,7 +12,7 @@ <atom:link href="http://localhost:8090/Nextcloud.rss" rel="self" type="application/rss+xml" /> <link>https://nextcloud.com/</link> <description></description> - <lastBuildDate>Tue, 16 Aug 2022 10:17:13 +0000</lastBuildDate> + <lastBuildDate>Tue, 16 Aug 2099 10:17:13 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod> hourly </sy:updatePeriod> @@ -32,7 +32,7 @@ <link>https://nextcloud.com/blog/how-to-get-started-with-nextcloud-repeat/</link> <dc:creator><![CDATA[Fabrice Mous]]></dc:creator> - <pubDate>Tue, 16 Aug 2022 09:44:01 +0000</pubDate> + <pubDate>Tue, 16 Aug 2099 09:44:01 +0000</pubDate> <category><![CDATA[business]]></category> <category><![CDATA[News]]></category> <category><![CDATA[Webinar]]></category> @@ -116,7 +116,7 @@ <link>https://nextcloud.com/blog/openproject-and-nextcloud-integrate-project-management-and-file-management/</link> <dc:creator><![CDATA[Jos Poortvliet]]></dc:creator> - <pubDate>Mon, 15 Aug 2022 12:44:53 +0000</pubDate> + <pubDate>Mon, 15 Aug 2099 12:44:53 +0000</pubDate> <category><![CDATA[blog]]></category> <category><![CDATA[business]]></category> <category><![CDATA[partner]]></category> @@ -160,7 +160,7 @@ <link>https://nextcloud.com/blog/5-more-things-to-keep-your-data-safe/</link> <dc:creator><![CDATA[Mikaela Schneider]]></dc:creator> - <pubDate>Wed, 10 Aug 2022 09:06:12 +0000</pubDate> + <pubDate>Wed, 10 Aug 2099 09:06:12 +0000</pubDate> <category><![CDATA[blog]]></category> <category><![CDATA[Community]]></category> <category><![CDATA[general]]></category> @@ -360,7 +360,7 @@ <link>https://nextcloud.com/blog/digital-sovereignty-security-collabora-online-nextcloud/</link> <dc:creator><![CDATA[Fabrice Mous]]></dc:creator> - <pubDate>Thu, 04 Aug 2022 13:07:21 +0000</pubDate> + <pubDate>Thu, 04 Aug 2099 13:07:21 +0000</pubDate> <category><![CDATA[business]]></category> <category><![CDATA[News]]></category> <category><![CDATA[Webinar]]></category> @@ -444,7 +444,7 @@ <link>https://nextcloud.com/blog/nextcloud-keeps-growth-up-with-75-more-revenue-and-10x-userbase/</link> <dc:creator><![CDATA[Jos Poortvliet]]></dc:creator> - <pubDate>Thu, 04 Aug 2022 09:40:29 +0000</pubDate> + <pubDate>Thu, 04 Aug 2099 09:40:29 +0000</pubDate> <category><![CDATA[blog]]></category> <category><![CDATA[business]]></category> <category><![CDATA[general]]></category> @@ -506,7 +506,7 @@ <link>https://nextcloud.com/blog/baden-wurttemberg-procurement-chamber-decides-us-cloud-services-are-not-gdpr-compliant/</link> <dc:creator><![CDATA[Jos Poortvliet]]></dc:creator> - <pubDate>Mon, 01 Aug 2022 09:00:00 +0000</pubDate> + <pubDate>Mon, 01 Aug 2099 09:00:00 +0000</pubDate> <category><![CDATA[business]]></category> <category><![CDATA[general]]></category> <category><![CDATA[News]]></category> @@ -553,7 +553,7 @@ <link>https://nextcloud.com/blog/interview-shadow-and-a-world-where-5-companies-own-all-data/</link> <dc:creator><![CDATA[Jos Poortvliet]]></dc:creator> - <pubDate>Mon, 01 Aug 2022 07:43:56 +0000</pubDate> + <pubDate>Mon, 01 Aug 2099 07:43:56 +0000</pubDate> <category><![CDATA[general]]></category> <category><![CDATA[News]]></category> <category><![CDATA[partner]]></category> @@ -579,7 +579,7 @@ <link>https://nextcloud.com/blog/all-app-developers-put-your-hands-up-best-nextcloud-app-contest-2/</link> <dc:creator><![CDATA[Jos Poortvliet]]></dc:creator> - <pubDate>Thu, 28 Jul 2022 09:00:00 +0000</pubDate> + <pubDate>Thu, 28 Jul 2099 09:00:00 +0000</pubDate> <category><![CDATA[Apps]]></category> <category><![CDATA[Community]]></category> <category><![CDATA[conference]]></category> @@ -715,7 +715,7 @@ <link>https://nextcloud.com/blog/5-unique-security-features-by-nextcloud/</link> <dc:creator><![CDATA[Mikaela Schneider]]></dc:creator> - <pubDate>Wed, 27 Jul 2022 14:36:15 +0000</pubDate> + <pubDate>Wed, 27 Jul 2099 14:36:15 +0000</pubDate> <category><![CDATA[blog]]></category> <category><![CDATA[general]]></category> <category><![CDATA[Privacy Wednesday]]></category> @@ -879,7 +879,7 @@ <comments>https://nextcloud.com/blog/nextcloud-in-the-wall-street-journal-microsoft-and-cookies/#comments</comments> <dc:creator><![CDATA[Jos Poortvliet]]></dc:creator> - <pubDate>Wed, 27 Jul 2022 09:12:45 +0000</pubDate> + <pubDate>Wed, 27 Jul 2099 09:12:45 +0000</pubDate> <category><![CDATA[blog]]></category> <category><![CDATA[business]]></category> <category><![CDATA[general]]></category> diff --git a/tests/test_helper/feeds/heise.xml b/tests/test_helper/feeds/heise.xml index f0ff9e2f7..fb9f90787 100644 --- a/tests/test_helper/feeds/heise.xml +++ b/tests/test_helper/feeds/heise.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title type="text">heise online News</title><subtitle type="html">Nachrichten nicht nur aus der Welt der Computer</subtitle> - <updated>2022-08-19T15:36:00+02:00</updated> + <updated>2099-08-19T15:36:00+02:00</updated> <id>https://www.heise.de/rss/heise-atom.xml</id> <author> <name>heise online</name><uri>https://www.heise.de</uri> @@ -14,8 +14,8 @@ <entry> <title type="text">RISC-V-Prozessor aus China: LeapFive NB2 verspricht Raspi-Rechenleistung</title> <id>http://heise.de/-7237368</id> - <updated>2022-08-19T15:36:00+02:00</updated> - <published>2022-08-19T15:36:00+02:00</published> + <updated>2099-08-19T15:36:00+02:00</updated> + <published>2099-08-19T15:36:00+02:00</published> <link href="https://www.heise.de/news/RISC-V-Prozessor-aus-China-LeapFive-NB2-verspricht-Raspi-Rechenleistung-7237368.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Die chinesische Firma Yuefang Technology stellt einen 12-Nanometer-Chip mit vier RISC-V-Kernen, GPU, KI-Beschleuniger und DDR4-Controller vor.</summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/news/RISC-V-Prozessor-aus-China-LeapFive-NB2-verspricht-Raspi-Rechenleistung-7237368.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/5/0/2/6/LeapFive-NB2-16-9.jpg-53c28b2fbd5ed906.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>Die chinesische Firma Yuefang Technology stellt einen 12-Nanometer-Chip mit vier RISC-V-Kernen, GPU, KI-Beschleuniger und DDR4-Controller vor.</p>]]></content> @@ -24,8 +24,8 @@ <entry> <title type="text">Besetzung des IGF: UN ringt um Stand zwischen den Fronten der Netzpolitik</title> <id>http://heise.de/-7237105</id> - <updated>2022-08-19T15:30:00+02:00</updated> - <published>2022-08-19T15:30:00+02:00</published> + <updated>2099-08-19T15:30:00+02:00</updated> + <published>2099-08-19T15:30:00+02:00</published> <link href="https://www.heise.de/news/Besetzung-des-IGF-UN-ringt-um-Stand-zwischen-den-Fronten-der-Netzpolitik-7237105.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Während die USA und China eigene Initiativen zur Internet Governance starten, will António Guterres die Vereinten Nationen als multilaterale Plattform stärken.</summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/news/Besetzung-des-IGF-UN-ringt-um-Stand-zwischen-den-Fronten-der-Netzpolitik-7237105.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/4/9/2/9/shutterstock_1024337068.jpg-33126c9ed34da140.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>Während die USA und China eigene Initiativen zur Internet Governance starten, will António Guterres die Vereinten Nationen als multilaterale Plattform stärken.</p>]]></content> @@ -34,8 +34,8 @@ <entry> <title type="text">Sicherheitsupdates: Angreifer könnten PCs mit IBM-Software attackieren</title> <id>http://heise.de/-7236808</id> - <updated>2022-08-19T14:46:00+02:00</updated> - <published>2022-08-19T14:46:00+02:00</published> + <updated>2099-08-19T14:46:00+02:00</updated> + <published>2099-08-19T14:46:00+02:00</published> <link href="https://www.heise.de/news/Sicherheitsupdates-Angreifer-koennten-PCs-mit-IBM-Software-attackieren-7236808.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Mehrere Schwachstellen machen unter anderem IBM InfoSphere Identity Insight verwundbar. </summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/news/Sicherheitsupdates-Angreifer-koennten-PCs-mit-IBM-Software-attackieren-7236808.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/4/7/7/2/shutterstock_1024271563.jpg-f0fce7b24faab392.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>Mehrere Schwachstellen machen unter anderem IBM InfoSphere Identity Insight verwundbar. </p>]]></content> @@ -44,8 +44,8 @@ <entry> <title type="text">Cyber-Angriff auf französische Tochter von Rüstungsunternehmen Hensoldt</title> <id>http://heise.de/-7237071</id> - <updated>2022-08-19T14:32:00+02:00</updated> - <published>2022-08-19T14:32:00+02:00</published> + <updated>2099-08-19T14:32:00+02:00</updated> + <published>2099-08-19T14:32:00+02:00</published> <link href="https://www.heise.de/news/Cyber-Angriff-auf-franzoesische-Tochter-von-Ruestungsunternehmen-Hensoldt-7237071.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Das Rüstungsunternehmen Hensoldt meldet, dass die französische Tochter Nexeya Ziel eines "ernsthaften Cyberangriffs" wurde. Der Betrieb sei eingeschränkt.</summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/news/Cyber-Angriff-auf-franzoesische-Tochter-von-Ruestungsunternehmen-Hensoldt-7237071.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/4/9/1/0/shutterstock_1159844176.jpg-f104710441a26d29.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>Das Rüstungsunternehmen Hensoldt meldet, dass die französische Tochter Nexeya Ziel eines "ernsthaften Cyberangriffs" wurde. Der Betrieb sei eingeschränkt.</p>]]></content> @@ -54,8 +54,8 @@ <entry> <title type="text">Youtube führt Wasserzeichen in heruntergeladenen Shorts ein</title> <id>http://heise.de/-7236987</id> - <updated>2022-08-19T13:58:00+02:00</updated> - <published>2022-08-19T13:58:00+02:00</published> + <updated>2099-08-19T13:58:00+02:00</updated> + <published>2099-08-19T13:58:00+02:00</published> <link href="https://www.heise.de/news/Youtube-fuehrt-Wasserzeichen-in-heruntergeladenen-Shorts-ein-7236987.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Google markiert Shorts: Bei Youtube erstellte Kurzvideos werden mit einem Wasserzeichen gekennzeichnet, sobald man sie herunterlädt. </summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/news/Youtube-fuehrt-Wasserzeichen-in-heruntergeladenen-Shorts-ein-7236987.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/4/8/6/7/shutterstock_1830055352.jpg-11fc534344318f5e.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>Google markiert Shorts: Bei Youtube erstellte Kurzvideos werden mit einem Wasserzeichen gekennzeichnet, sobald man sie herunterlädt. </p>]]></content> @@ -64,8 +64,8 @@ <entry> <title type="text">Artemis-1: NASA plant Website zur Nachverfolgung der Mondmission in Echtzeit</title> <id>http://heise.de/-7236962</id> - <updated>2022-08-19T13:38:00+02:00</updated> - <published>2022-08-19T13:38:00+02:00</published> + <updated>2099-08-19T13:38:00+02:00</updated> + <published>2099-08-19T13:38:00+02:00</published> <link href="https://www.heise.de/news/Artemis-1-NASA-plant-Website-zur-Nachverfolgung-der-Mondmission-in-Echtzeit-7236962.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">In wenigen Tagen will die NASA die Raumkapsel Orion zum Mond schießen. Die Mission können Interessierte dann live online verfolgen – basierend auf echten Daten.</summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/news/Artemis-1-NASA-plant-Website-zur-Nachverfolgung-der-Mondmission-in-Echtzeit-7236962.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/4/8/5/4/flyby.jpg-f34b9ab0ab810ddd.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>In wenigen Tagen will die NASA die Raumkapsel Orion zum Mond schießen. Die Mission können Interessierte dann live online verfolgen – basierend auf echten Daten.</p>]]></content> @@ -74,8 +74,8 @@ <entry> <title type="text">MIT Technology Review Podcast: Die Auswirkungen vom Ende des Biosprits</title> <id>http://heise.de/-7237047</id> - <updated>2022-08-19T13:30:00+02:00</updated> - <published>2022-08-19T13:30:00+02:00</published> + <updated>2099-08-19T13:30:00+02:00</updated> + <published>2099-08-19T13:30:00+02:00</published> <link href="https://www.heise.de/hintergrund/MIT-Technology-Review-Podcast-Die-Auswirkungen-vom-Ende-des-Biosprits-7237047.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Biokraftstoffe sind dem Ende geweiht. Die Anbauflächen sollen für Nahrung genutzt werden. Doch das bringt neue Probleme mit sich, erläutert Horst Fehrenbach.</summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/hintergrund/MIT-Technology-Review-Podcast-Die-Auswirkungen-vom-Ende-des-Biosprits-7237047.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/4/8/9/7/shutterstock_1935960685.jpg-509a8b30bb259caa.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>Biokraftstoffe sind dem Ende geweiht. Die Anbauflächen sollen für Nahrung genutzt werden. Doch das bringt neue Probleme mit sich, erläutert Horst Fehrenbach.</p>]]></content> @@ -84,8 +84,8 @@ <entry> <title type="text">High-End-CPU für Server: Qualcomm setzt auf Nuvia-Kerne</title> <id>http://heise.de/-7236952</id> - <updated>2022-08-19T13:22:00+02:00</updated> - <published>2022-08-19T13:22:00+02:00</published> + <updated>2099-08-19T13:22:00+02:00</updated> + <published>2099-08-19T13:22:00+02:00</published> <link href="https://www.heise.de/news/High-End-CPU-Apples-Ex-Chefarchitekt-soll-seinen-Serverprozessor-bekommen-7236952.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Qualcomm soll bereits einen ARM-Prozessor für Server entworfen haben. Darin stecken CPU-Kerne der übernommenen Firma Nuvia.</summary> <content type="html"><![CDATA[<p><a href="https://www.heise.de/news/High-End-CPU-Apples-Ex-Chefarchitekt-soll-seinen-Serverprozessor-bekommen-7236952.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"><img src="https://www.heise.de/scale/geometry/450/q80//imgs/18/3/5/9/4/8/4/9/144415733_4d48bed0f4-76f169c74fcddc09.jpeg" class="webfeedsFeaturedVisual" alt="" /></a></p><p>Qualcomm soll bereits einen ARM-Prozessor für Server entworfen haben. Darin stecken CPU-Kerne der übernommenen Firma Nuvia.</p>]]></content> @@ -94,8 +94,8 @@ <entry> <title type="text">China greift US-Chips-Act an und warnt vor den Folgen </title> <id>http://heise.de/-7236956</id> - <updated>2022-08-19T13:18:00+02:00</updated> - <published>2022-08-19T13:18:00+02:00</published> + <updated>2099-08-19T13:18:00+02:00</updated> + <published>2099-08-19T13:18:00+02:00</published> <link href="https://www.heise.de/news/China-greift-US-Chips-Act-an-und-warnt-vor-den-Folgen-7236956.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag"/> <summary type="html">Der US-Chips-Act der USA verstößt laut China gegen die Fair-Trade-Prinzipien der WTO und sei diskriminierend. Das US-Gesetz bringe zusätzlich mehr Unsicherhe |