Exemple #1
0
    def setUp(self):
        g = Group(name="h")
        g.save()

        c = Cred(title="historycred", password="******", group=g)
        c.save()

        self.c = c
Exemple #2
0
    def setUp(self):
        g = Group(name='h')
        g.save()

        c = Cred(title='historycred', password='******', group=g)
        c.save()

        self.c = c
Exemple #3
0
    def setUp(self):
        g = Group(name='h')
        g.save()

        c = Cred(title='testcred', password='******', group=g)
        c.save()

        d = Cred(title='todelete', password='******', group=g)
        d.save()
        d.delete()

        u = User(username='******')
        u.save()
        u.groups.add(g)
        u.save()

        f = User(username='******')
        f.save()

        s = User(username='******', is_staff=True)
        s.save()
        s.groups.add(g)
        s.save()

        self.c = c
        self.d = d
        self.u = u
        self.f = f
        self.s = s
Exemple #4
0
    def setUp(self):
        g = Group(name="h")
        g.save()

        c = Cred(title="testcred", password="******", group=g)
        c.save()

        d = Cred(title="todelete", password="******", group=g)
        d.save()
        d.delete()

        u = User(username="******")
        u.save()
        u.groups.add(g)
        u.save()

        f = User(username="******")
        f.save()

        s = User(username="******", is_staff=True)
        s.save()
        s.groups.add(g)
        s.save()

        self.c = c
        self.d = d
        self.u = u
        self.f = f
        self.s = s
Exemple #5
0
    def setUp(self):
        self.group = Group(name="testgroup")
        self.group.save()

        self.othergroup = Group(name="othergroup")
        self.othergroup.save()

        self.tag = Tag(name="tag")
        self.tag.save()

        self.unorm = User(username="******", email="*****@*****.**")
        self.unorm.set_password("password")
        self.unorm.save()
        self.unorm.groups.add(self.group)
        self.unorm.save()

        self.ustaff = User(username="******", email="*****@*****.**", is_staff=True)
        self.ustaff.set_password("password")
        self.ustaff.save()
        self.ustaff.groups.add(self.othergroup)
        self.ustaff.save()

        self.nobody = User(username="******", email="*****@*****.**")
        self.nobody.set_password("password")
        self.nobody.save()

        self.norm = Client()
        self.norm.login(username="******", password="******")
        self.staff = Client()
        self.staff.login(username="******", password="******")
        self.nobody = Client()
        self.nobody.login(username="******", password="******")

        self.cred = Cred(title="secret", password="******", group=self.group)
        self.cred.save()
        self.tagcred = Cred(title="tagged", password="******", group=self.group)
        self.tagcred.save()
        self.tagcred.tags.add(self.tag)
        self.tagcred.save()

        CredChangeQ.objects.add_to_changeq(self.cred)
Exemple #6
0
class CredViewTests(TestCase):
    def setUp(self):
        self.group = Group(name="testgroup")
        self.group.save()

        self.othergroup = Group(name="othergroup")
        self.othergroup.save()

        self.tag = Tag(name="tag")
        self.tag.save()

        self.unorm = User(username="******", email="*****@*****.**")
        self.unorm.set_password("password")
        self.unorm.save()
        self.unorm.groups.add(self.group)
        self.unorm.save()

        self.ustaff = User(username="******", email="*****@*****.**", is_staff=True)
        self.ustaff.set_password("password")
        self.ustaff.save()
        self.ustaff.groups.add(self.othergroup)
        self.ustaff.save()

        self.nobody = User(username="******", email="*****@*****.**")
        self.nobody.set_password("password")
        self.nobody.save()

        self.norm = Client()
        self.norm.login(username="******", password="******")
        self.staff = Client()
        self.staff.login(username="******", password="******")
        self.nobody = Client()
        self.nobody.login(username="******", password="******")

        self.cred = Cred(title="secret", password="******", group=self.group)
        self.cred.save()
        self.tagcred = Cred(title="tagged", password="******", group=self.group)
        self.tagcred.save()
        self.tagcred.tags.add(self.tag)
        self.tagcred.save()

        CredChangeQ.objects.add_to_changeq(self.cred)

    def test_list_normal(self):
        resp = self.norm.get(reverse("cred.views.list"))
        self.assertEqual(resp.status_code, 200)
        credlist = resp.context["credlist"].object_list
        self.assertTrue(self.cred in credlist)

    def test_list_staff(self):
        resp = self.staff.get(reverse("cred.views.list"))
        self.assertEqual(resp.status_code, 200)
        credlist = resp.context["credlist"].object_list
        self.assertTrue(self.cred not in credlist)

    def test_list_by_tag_normal(self):
        resp = self.norm.get(reverse("cred.views.list_by_tag", args=(self.tag.id,)))
        self.assertEqual(resp.status_code, 200)
        credlist = resp.context["credlist"].object_list
        self.assertTrue(self.cred not in credlist)
        self.assertTrue(self.tagcred in credlist)

    def test_list_by_tag_staff(self):
        resp = self.staff.get(reverse("cred.views.list_by_tag", args=(self.tag.id,)))
        self.assertEqual(resp.status_code, 200)
        credlist = resp.context["credlist"].object_list
        self.assertTrue(self.cred not in credlist)
        self.assertTrue(self.tagcred not in credlist)

    def test_list_by_group_normal(self):
        resp = self.norm.get(reverse("cred.views.list_by_group", args=(self.group.id,)))
        self.assertEqual(resp.status_code, 200)
        credlist = resp.context["credlist"].object_list
        self.assertTrue(self.cred in credlist)
        self.assertTrue(self.tagcred in credlist)

    def test_list_by_group_staff(self):
        resp = self.staff.get(reverse("cred.views.list_by_group", args=(self.othergroup.id,)))
        self.assertEqual(resp.status_code, 200)
        credlist = resp.context["credlist"].object_list
        self.assertTrue(self.cred not in credlist)
        self.assertTrue(self.tagcred not in credlist)

    def test_list_by_group_nobody(self):
        resp = self.nobody.get(reverse("cred.views.list_by_group", args=(self.othergroup.id,)))
        self.assertEqual(resp.status_code, 404)

    def test_tags_normal(self):
        resp = self.norm.get(reverse("cred.views.tags"))
        self.assertEqual(resp.status_code, 200)
        taglist = resp.context["tags"]
        self.assertTrue(self.tag in taglist)
        self.assertEqual(len(taglist), 1)

    def test_list_by_search_normal(self):
        resp = self.norm.get(reverse("cred.views.list_by_search", args=("tag",)))
        self.assertEqual(resp.status_code, 200)
        taglist = resp.context["tag"]
        credlist = resp.context["credlist"].object_list
        self.assertTrue(self.tag in taglist)
        self.assertEqual(len(taglist), 1)
        self.assertTrue(self.tagcred in credlist)
        self.assertTrue(self.cred not in credlist)

    def test_detail_normal(self):
        resp = self.norm.get(reverse("cred.views.detail", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.context["cred"].id, self.cred.id)
        self.assertEqual(resp.context["credlogs"], None)
        resp = self.norm.get(reverse("cred.views.detail", args=(self.tagcred.id,)))
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.context["cred"].id, self.tagcred.id)
        self.assertEqual(resp.context["credlogs"], None)

    def test_detail_staff(self):
        resp = self.staff.get(reverse("cred.views.detail", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.context["cred"].id, self.cred.id)
        self.assertNotEqual(resp.context["credlogs"], None)
        resp = self.staff.get(reverse("cred.views.detail", args=(self.tagcred.id,)))
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.context["cred"].id, self.tagcred.id)
        self.assertNotEqual(resp.context["credlogs"], None)

    def test_detail_nobody(self):
        resp = self.nobody.get(reverse("cred.views.detail", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 404)
        resp = self.nobody.get(reverse("cred.views.detail", args=(self.tagcred.id,)))
        self.assertEqual(resp.status_code, 404)

    def test_add_normal(self):
        resp = self.norm.get(reverse("cred.views.add"))
        self.assertEqual(resp.status_code, 200)
        form = resp.context["form"]
        self.assertTrue(not form.is_valid())
        resp = self.norm.post(
            reverse("cred.views.add"),
            {"title": "New Credential", "password": "******", "group": self.group.id, "icon": form["icon"].value()},
            follow=True,
        )
        self.assertEqual(resp.status_code, 200)
        newcred = Cred.objects.get(title="New Credential")
        self.assertEqual(newcred.password, "A password")

    def test_edit_normal(self):
        resp = self.norm.get(reverse("cred.views.edit", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 200)
        form = resp.context["form"]
        post = {}
        for i in form:
            if i.value() is not None:
                post[i.name] = i.value()
        post["title"] = "New Title"
        resp = self.norm.post(reverse("cred.views.edit", args=(self.cred.id,)), post, follow=True)
        self.assertEqual(resp.status_code, 200)
        newcred = Cred.objects.get(id=self.cred.id)
        self.assertEqual(newcred.title, "New Title")

    def test_edit_nobody(self):
        resp = self.nobody.get(reverse("cred.views.edit", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 404)

    def test_delete_norm(self):
        resp = self.norm.get(reverse("cred.views.delete", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 200)
        resp = self.norm.post(reverse("cred.views.delete", args=(self.cred.id,)))
        delcred = Cred.objects.get(id=self.cred.id)
        self.assertTrue(delcred.is_deleted)

    def test_delete_staff(self):
        resp = self.staff.get(reverse("cred.views.delete", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 200)
        resp = self.staff.post(reverse("cred.views.delete", args=(self.cred.id,)), follow=True)
        self.assertEqual(resp.status_code, 200)
        delcred = Cred.objects.get(id=self.cred.id)
        self.assertTrue(delcred.is_deleted)

    def test_delete_nobody(self):
        resp = self.nobody.get(reverse("cred.views.delete", args=(self.cred.id,)))
        self.assertEqual(resp.status_code, 404)
        resp = self.nobody.post(reverse("cred.views.delete", args=(self.cred.id,)), follow=True)
        self.assertEqual(resp.status_code, 404)
        delcred = Cred.objects.get(id=self.cred.id)
        self.assertFalse(delcred.is_deleted)

    def test_tagadd_normal(self):
        resp = self.norm.get(reverse("cred.views.tagadd"))
        self.assertEqual(resp.status_code, 200)
        form = resp.context["form"]
        post = {}
        for i in form:
            if i.value() is not None:
                post[i.name] = i.value()
        post["name"] = "New Tag"
        resp = self.norm.post(reverse("cred.views.tagadd"), post, follow=True)
        self.assertEqual(resp.status_code, 200)
        newcred = Tag.objects.get(name="New Tag")

    def test_tagedit_normal(self):
        resp = self.norm.get(reverse("cred.views.tagedit", args=(self.tag.id,)))
        self.assertEqual(resp.status_code, 200)
        form = resp.context["form"]
        post = {}
        for i in form:
            if i.value() is not None:
                post[i.name] = i.value()
        post["name"] = "A Tag"
        resp = self.norm.post(reverse("cred.views.tagedit", args=(self.tag.id,)), post, follow=True)
        self.assertEqual(resp.status_code, 200)
        newtag = Tag.objects.get(name="A Tag")
        self.assertEqual(newtag.id, self.tag.id)

    def test_tagdelete_normal(self):
        resp = self.norm.get(reverse("cred.views.tagdelete", args=(self.tag.id,)))
        self.assertEqual(resp.status_code, 200)
        resp = self.staff.post(reverse("cred.views.tagdelete", args=(self.tag.id,)), follow=True)
        self.assertEqual(resp.status_code, 200)
        with self.assertRaises(Tag.DoesNotExist):
            deltag = Tag.objects.get(id=self.tag.id)

    def test_viewqueue_normal(self):
        resp = self.norm.get(reverse("cred.views.viewqueue"))
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(len(resp.context["queue"]), 1)
        self.assertEqual(resp.context["queue"][0].cred.id, self.cred.id)

    def test_viewqueue_nobody(self):
        resp = self.nobody.get(reverse("cred.views.viewqueue"))
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(len(resp.context["queue"]), 0)

    def test_addtoqueuestaff(self):
        resp = self.staff.get(reverse("cred.views.addtoqueue", args=(self.tagcred.id,)), follow=True)
        self.assertEqual(resp.status_code, 200)
        self.assertTrue(self.tagcred.on_changeq())
Exemple #7
0
def issue_cred():
    if request.method == "POST":
        data = json.loads(request.data)
        issuer_did = data['issuer_did']
        cred_issues_to = data['cred_issues_to']
        cred_name = data['cred_name']
        cred_description = data['cred_description']
        cred_status = data['cred_status']
        cred_validity = data['cred_validity']

        d = did.query.get(cred_issues_to)
        ipfshash = d.ipfshash
        did_doc = client.cat(ipfshash)
        did_doc = json.loads(did_doc)

        print('id_Docs is the jojj', did_doc)

        print(did_doc['service'][1]['serviceEndpoint'])
        print(did_doc['service'][2]['serviceEndpoint'] +
              "-".join(cred_name.split(' ')))

        resp = requests.post(did_doc['service'][2]['serviceEndpoint'] +
                             "-".join(cred_name.split(' ')))
        print(resp.text)
        resp = resp.json()
        print(resp)
        policy_encrypting_key = resp['result']['policy_encrypting_key']

        subprocess.Popen([
            'nucypher', 'enrico', 'run', '--policy-encrypting-key',
            policy_encrypting_key, '--http-port', '5151'
        ])
        time.sleep(5)

        message = {
            "message":
            str(cred_name + "---" + cred_description + "---" + cred_status)
        }

        resp_encrypt = requests.post(
            did_doc['service'][1]['serviceEndpoint'],
            data=json.dumps(message),
            headers={'Content-Type': 'application/json'})

        print(resp_encrypt.content)
        resp_encrypt = resp_encrypt.json()
        print('resp_encrypted json', resp_encrypt)

        message_kit = resp_encrypt['result']['message_kit']

        c = Cred(cred_name=cred_name,
                 cred_description=cred_description,
                 cred_status=cred_status,
                 cred_issued_to=cred_issues_to,
                 cred_issued_from=issuer_did,
                 cred_encrypted=message_kit,
                 cred_validity=cred_validity)
        db.session.add(c)
        db.session.commit()

        return jsonify({'status': 'Success'})