def setUp(self): """create users and test data""" with patch( "bookwyrm.preview_images.generate_user_preview_image_task.delay" ): self.mouse = models.User.objects.create_user( "mouse@%s" % DOMAIN, "*****@*****.**", "", local=True, localname="mouse", ) self.rat = models.User.objects.create_user("rat@%s" % DOMAIN, "*****@*****.**", "", local=True, localname="rat") self.cat = models.User.objects.create_user("cat@%s" % DOMAIN, "*****@*****.**", "", local=True, localname="cat") private_key, public_key = create_key_pair() self.fake_remote = Sender("http://localhost/user/remote", KeyPair(private_key, public_key)) with patch( "bookwyrm.preview_images.generate_site_preview_image_task.delay" ): models.SiteSettings.objects.create()
def setUp(self): """create users and test data""" with patch( "bookwyrm.suggested_users.rerank_suggestions_task.delay" ), patch("bookwyrm.activitystreams.populate_stream_task.delay"), patch( "bookwyrm.lists_stream.populate_lists_task.delay"): self.mouse = models.User.objects.create_user( f"mouse@{DOMAIN}", "*****@*****.**", "", local=True, localname="mouse", ) self.rat = models.User.objects.create_user(f"rat@{DOMAIN}", "*****@*****.**", "", local=True, localname="rat") self.cat = models.User.objects.create_user(f"cat@{DOMAIN}", "*****@*****.**", "", local=True, localname="cat") private_key, public_key = create_key_pair() self.fake_remote = Sender("http://localhost/user/remote", KeyPair(private_key, public_key)) models.SiteSettings.objects.create()
def save(self, *args, **kwargs): """ create a key pair """ # no broadcasting happening here if "broadcast" in kwargs: del kwargs["broadcast"] if not self.public_key: self.private_key, self.public_key = create_key_pair() return super().save(*args, **kwargs)
def save(self, *args, **kwargs): ''' create a key pair ''' # no broadcasting happening here if 'broadcast' in kwargs: del kwargs['broadcast'] if not self.public_key: self.private_key, self.public_key = create_key_pair() return super().save(*args, **kwargs)
def setUp(self): self.mouse = User.objects.create_user('mouse', '*****@*****.**', '') self.rat = User.objects.create_user('rat', '*****@*****.**', '') self.cat = User.objects.create_user('cat', '*****@*****.**', '') private_key, public_key = create_key_pair() self.fake_remote = Sender( 'http://localhost/user/remote', private_key, public_key, )
def test_key_needs_refresh(self): datafile = pathlib.Path(__file__).parent.joinpath('data/ap_user.json') data = json.loads(datafile.read_bytes()) data['id'] = self.fake_remote.remote_id data['publicKey']['publicKeyPem'] = self.fake_remote.public_key del data['icon'] # Avoid having to return an avatar. responses.add( responses.GET, self.fake_remote.remote_id, json=data, status=200) responses.add( responses.GET, 'https://localhost/.well-known/nodeinfo', status=404) responses.add( responses.GET, 'https://example.com/user/mouse/outbox?page=true', json={'orderedItems': []}, status=200 ) # Second and subsequent fetches get a different key: new_private_key, new_public_key = create_key_pair() new_sender = Sender( self.fake_remote.remote_id, new_private_key, new_public_key) data['publicKey']['publicKeyPem'] = new_public_key responses.add( responses.GET, self.fake_remote.remote_id, json=data, status=200) # Key correct: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 200) # Old key is cached, so still works: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 200) # Try with new key: response = self.send_test_request(sender=new_sender) self.assertEqual(response.status_code, 200) # Now the old key will fail: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 401)
def test_key_needs_refresh(self): """an out of date key should be updated and the new key work""" datafile = pathlib.Path(__file__).parent.joinpath("data/ap_user.json") data = json.loads(datafile.read_bytes()) data["id"] = self.fake_remote.remote_id data["publicKey"][ "publicKeyPem"] = self.fake_remote.key_pair.public_key del data["icon"] # Avoid having to return an avatar. responses.add(responses.GET, self.fake_remote.remote_id, json=data, status=200) responses.add(responses.GET, "https://localhost/.well-known/nodeinfo", status=404) # Second and subsequent fetches get a different key: key_pair = KeyPair(*create_key_pair()) new_sender = Sender(self.fake_remote.remote_id, key_pair) data["publicKey"]["publicKeyPem"] = key_pair.public_key responses.add(responses.GET, self.fake_remote.remote_id, json=data, status=200) with patch( "bookwyrm.preview_images.generate_user_preview_image_task.delay" ): with patch("bookwyrm.models.user.get_remote_reviews.delay"): # Key correct: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 200) # Old key is cached, so still works: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 200) # Try with new key: response = self.send_test_request(sender=new_sender) self.assertEqual(response.status_code, 200) # Now the old key will fail: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 401)
def setUp(self): self.mouse = User.objects.create_user('mouse@%s' % DOMAIN, '*****@*****.**', '', local=True, localname='mouse') self.rat = User.objects.create_user('rat@%s' % DOMAIN, '*****@*****.**', '', local=True, localname='rat') self.cat = User.objects.create_user('cat@%s' % DOMAIN, '*****@*****.**', '', local=True, localname='cat') private_key, public_key = create_key_pair() self.fake_remote = Sender('http://localhost/user/remote', KeyPair(private_key, public_key))
def test_key_needs_refresh(self): datafile = pathlib.Path(__file__).parent.joinpath('data/ap_user.json') data = json.loads(datafile.read_bytes()) data['id'] = self.fake_remote.remote_id data['publicKey'][ 'publicKeyPem'] = self.fake_remote.key_pair.public_key del data['icon'] # Avoid having to return an avatar. responses.add(responses.GET, self.fake_remote.remote_id, json=data, status=200) responses.add(responses.GET, 'https://localhost/.well-known/nodeinfo', status=404) # Second and subsequent fetches get a different key: key_pair = KeyPair(*create_key_pair()) new_sender = Sender(self.fake_remote.remote_id, key_pair) data['publicKey']['publicKeyPem'] = key_pair.public_key responses.add(responses.GET, self.fake_remote.remote_id, json=data, status=200) with patch('bookwyrm.models.user.get_remote_reviews.delay'): # Key correct: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 200) # Old key is cached, so still works: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 200) # Try with new key: response = self.send_test_request(sender=new_sender) self.assertEqual(response.status_code, 200) # Now the old key will fail: response = self.send_test_request(sender=self.fake_remote) self.assertEqual(response.status_code, 401)
def setUp(self): """create users and test data""" self.mouse = models.User.objects.create_user("mouse@%s" % DOMAIN, "*****@*****.**", "", local=True, localname="mouse") self.rat = models.User.objects.create_user("rat@%s" % DOMAIN, "*****@*****.**", "", local=True, localname="rat") self.cat = models.User.objects.create_user("cat@%s" % DOMAIN, "*****@*****.**", "", local=True, localname="cat") private_key, public_key = create_key_pair() self.fake_remote = Sender("http://localhost/user/remote", KeyPair(private_key, public_key)) models.SiteSettings.objects.create()
def save(self, *args, **kwargs): ''' create a key pair ''' if not self.public_key: self.private_key, self.public_key = create_key_pair() return super().save(*args, **kwargs)