Esempio n. 1
0
 def test_get_no_login(self):
     self.client.logout()
     r = self.client.get(self.uri)
     self.assertFalse(r.context["auth_create"])
     self.assertFalse(r.context["auth_update"])
     self.assertFalse(r.context["auth_delete"])
     colls = r.context['collections']
     self.assertEqual(len(colls), len(init_collection_keys))
     for id in init_collections:
         self.assertEqual(colls[id]["annal:id"],   id)
         self.assertEqual(colls[id]["annal:url"],  init_collections[id]["annal:url"])
         self.assertEqual(colls[id]["rdfs:label"], init_collections[id]["rdfs:label"])
     # Check returned HTML (checks template logic)
     # (Don't need to keep doing this as logic can be tested through context as above)
     # (See: http://stackoverflow.com/questions/2257958/)
     s = BeautifulSoup(r.content, "html.parser")
     self.assertEqual(s.html.title.string, site_title())
     homelink = s.find(class_="title-area").find(class_="name").h1.a
     self.assertEqual(homelink.string,   "Home")
     self.assertEqual(homelink['href'],  self.uri)
     menuitems = s.find(class_="top-bar-section").find(class_="right").find_all("li")
     self.assertEqualIgnoreWS(menuitems[0].a.string,  "Login")
     self.assertEqual(menuitems[0].a['href'],         self.profileuri)
     # Check displayed collections
     trows = s.form.find_all("div", class_="tbody")
     self.assertEqual(len(trows), len(init_collection_keys))
     self.assertEqual(trows[0].div.div('div')[1].a.string,  "_annalist_site")
     self.assertEqual(trows[0].div.div('div')[1].a['href'], collection_view_url("_annalist_site"))
     self.assertEqual(trows[1].div.div('div')[1].a.string,  "coll1")
     self.assertEqual(trows[1].div.div('div')[1].a['href'], collection_view_url("coll1"))
     self.assertEqual(trows[2].div.div('div')[1].a.string,  "coll2")
     self.assertEqual(trows[2].div.div('div')[1].a['href'], collection_view_url("coll2"))
     self.assertEqual(trows[3].div.div('div')[1].a.string,  "coll3")
     self.assertEqual(trows[3].div.div('div')[1].a['href'], collection_view_url("coll3"))
     return
 def test_get_view_no_collection(self):
     u = collection_view_url(coll_id="no_collection")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   404)
     self.assertEqual(r.reason_phrase, "Not found")
     self.assertContains(r, "<p>Collection no_collection does not exist</p>", status_code=404)
     return
 def test_get_view_newer_version(self):
     collmeta = collection_create_values(coll_id="newer_version")
     self.testsite.add_collection("newer_version", collmeta, annal_ver="99.99.99")
     u = collection_view_url(coll_id="newer_version")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   500)
     self.assertEqual(r.reason_phrase, "Server error")
     self.assertContains(r, "created by software version 99.99.99", status_code=500)
     return
Esempio n. 4
0
 def test_get_view_no_collection(self):
     u = collection_view_url(coll_id="no_collection")
     r = self.client.get(u)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertEqual(r.content, "")
     u1 = TestHostUri + entitydata_list_all_url(coll_id="no_collection")
     self.assertEqual(r['location'], u1)
     r1 = self.client.get(u1)
     self.assertEqual(r1.status_code, 404)
     self.assertEqual(r1.reason_phrase, "Not found")
     return
Esempio n. 5
0
 def _check_collection_data_values(self, coll_id=None):
     """
     Helper function checks content of annalist collection data
     """
     self.assertTrue(Collection.exists(self.testsite, coll_id))
     t = Collection.load(self.testsite, coll_id)
     self.assertEqual(t.get_id(), coll_id)
     self.assertEqual(t.get_view_url_path(), collection_view_url(coll_id="testcoll"))
     v = collectiondata_values(coll_id=coll_id)
     self.assertDictionaryMatch(t.get_values(), v)
     return t
Esempio n. 6
0
 def _check_collection_data_values(self, coll_id=None):
     """
     Helper function checks content of annalist collection data
     """
     self.assertTrue(Collection.exists(self.testsite, coll_id))
     t = Collection.load(self.testsite, coll_id)
     self.assertEqual(t.get_id(), coll_id)
     self.assertEqual(t.get_view_url_path(),
                      collection_view_url(coll_id="testcoll"))
     v = collectiondata_values(coll_id=coll_id)
     self.assertDictionaryMatch(t.get_values(), v)
     return t
 def test_collection_init(self):
     log.debug("test_collection_init: TestBaseUri %s, TestBaseDir %s"%(TestBaseUri,TestBaseDir))
     s = Site(TestBaseUri, TestBaseDir)
     c = Collection(s, "testcoll")
     self.assertEqual(c._entitytype,     ANNAL.CURIE.Collection)
     self.assertEqual(c._entityfile,     layout.COLL_META_REF)
     self.assertEqual(c._entityref,      layout.META_COLL_REF)
     self.assertEqual(c._entityid,       "testcoll")
     self.assertEqual(c._entityurl,      TestHostUri + collection_view_url(coll_id="testcoll"))
     self.assertEqual(c._entitydir,      collection_dir(coll_id="testcoll"))
     self.assertEqual(c._values,         None)
     return
 def setUp(self):
     init_annalist_test_site()
     self.testsite = Site(TestBaseUri, TestBaseDir)
     self.coll1    = Collection.load(self.testsite, "coll1")
     self.view_url = collection_view_url(coll_id="coll1")
     self.edit_url = collection_edit_url(coll_id="coll1")
     self.continuation = "?" + continuation_url_param(self.edit_url)
     # Login and permissions
     create_test_user(self.coll1, "testuser", "testpassword")
     self.client = Client(HTTP_HOST=TestHost)
     loggedin = self.client.login(username="******", password="******")
     self.assertTrue(loggedin)
     return
 def test_post_close_no_continuation(self):
     # 'Close' button on list view with no continuation URI given in form
     f = entitylist_form_data("close", 
         entities=["testtype/entity1", "testtype/entity2"], 
         continuation_url=""
         )
     u = entitydata_list_type_url("testcoll", "testtype")
     r = self.client.post(u, f)
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertEqual(r.content,       "")
     v = TestHostUri + collection_view_url(coll_id="testcoll")
     self.assertEqual(v, r['location'])
     return
Esempio n. 10
0
 def test_get_collection_data_json(self):
     """
     Request collection data as JSON-LD
     """
     collection_url = collection_view_url(coll_id="testcoll")
     u = collectiondata_url(coll_id="testcoll")
     r = self.client.get(u, HTTP_ACCEPT="application/ld+json")
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     v = r['Location']
     self.assertEqual(v, TestHostUri+collection_url+layout.COLL_META_REF)
     r = self.client.get(v)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     return
 def test_post_new_all_entity(self):
     # Also tests continuation_url parameter handling
     #@@ s = site_view_url()
     s = collection_view_url(coll_id="testcoll")
     f = entitylist_form_data("new", list_id="Field_list", continuation_url=s)
     u = entitydata_list_all_url("testcoll", list_id="Field_list")
     r = self.client.post(u, f)
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertEqual(r.content,       "")
     v = TestHostUri + entitydata_edit_url(
         "new", "testcoll", layout.FIELD_TYPEID, view_id="Field_view"
         )
     c = continuation_url_param(u, continuation_url_param(s))
     self.assertIn(v, r['location'])
     self.assertIn(c, r['location'])
     return
Esempio n. 12
0
 def test_edit_collection_metadata(self):
     # This test performs a GET to retrieve values used in a form,
     # then a POST to save updated collection metadata.
     # This test is intended to test a problem encountered with updated 
     # entity copying logic that needs to take special account of collection
     # entities being presented as offspring of the site while being stored
     # as part of a collection.
     #
     coll_id = "testcoll"
     self.assertTrue(Collection.exists(self.testsite, coll_id))
     c = Collection.load(self.testsite, coll_id)
     self.assertEqual(c.get_id(), coll_id)
     self.assertEqual(c.get_view_url_path(), collection_view_url(coll_id="testcoll"))
     # GET collection metadata form data, and test values
     u = collectiondata_url(coll_id="testcoll")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     self.assertEqual(r.context['coll_id'],          layout.SITEDATA_ID)
     self.assertEqual(r.context['type_id'],          layout.COLL_TYPEID)
     self.assertEqual(r.context['entity_id'],        "testcoll")
     self.assertEqual(r.context['orig_id'],          "testcoll")
     self.assertEqual(r.context['orig_coll'],        layout.SITEDATA_ID)
     self.assertEqual(r.context['action'],           "view")
     self.assertEqual(r.context['continuation_url'], "")
     orig_coll = r.context['orig_coll']
     # Assemble and POST form data to =updated collection metadata
     new_label = "Updated collection metadata"
     f = coll_view_form_data(
         coll_id="testcoll", 
         action="edit", 
         coll_label=new_label,
         # orig_coll="None"
         orig_coll=layout.SITEDATA_ID
         )
     u = collectiondata_view_url(coll_id="testcoll", action="edit")
     r = self.client.post(u, f)
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertEqual(r.content,       "")
     self.assertEqual(r['location'],   TestBaseUri+"/c/_annalist_site/d/_coll/")
     # Check updated collection data
     self._check_collection_data_values(coll_id="testcoll", coll_label=new_label)
     return
Esempio n. 13
0
 def test_get_collection_data_view(self):
     collection_url = collection_view_url(coll_id="testcoll")
     u = collectiondata_url(coll_id="testcoll")
     r = self.client.get(u)
     self.assertEqual(r.status_code,   200)
     self.assertEqual(r.reason_phrase, "OK")
     self.assertEqual(r.context['coll_id'],          layout.SITEDATA_ID)
     self.assertEqual(r.context['type_id'],          layout.COLL_TYPEID)
     self.assertEqual(r.context['entity_id'],        "testcoll")
     self.assertEqual(r.context['orig_id'],          "testcoll")
     self.assertEqual(r.context['action'],           "view")
     self.assertEqual(r.context['continuation_url'], "")
     self.assertEqual(
         r.context['entity_data_ref'],      
         collection_url+layout.COLL_META_REF
         )
     self.assertEqual(
         r.context['entity_data_ref_json'], 
         collection_url+layout.COLL_META_REF+"?type=application/json"
         )
     return
Esempio n. 14
0
def default_fields(coll_id=None,
                   type_id=None,
                   entity_id=None,
                   width=12,
                   **kwargs):
    """
    Returns a function that accepts a field width and returns a dictionary of entity values
    for testing.  The goal is to isolate default entity value settings from the test cases.
    """
    def_label = kwargs.get(
        "default_label",
        default_label(coll_id=coll_id, type_id=type_id, entity_id=entity_id))
    def_comment = kwargs.get(
        "default_comment",
        default_comment(coll_id=coll_id, type_id=type_id, entity_id=entity_id))
    def_label_esc = def_label.replace("'", "&#39;")
    def_comment_esc = def_comment.replace("'", "&#39;")
    def_entity_url = collection_entity_view_url(coll_id=coll_id,
                                                type_id=type_id,
                                                entity_id=entity_id)
    collection_url = collection_view_url(coll_id).rstrip("/")

    def def_fields(width=12):
        fields = layout_classes(width=width)
        fields.update({
            'coll_id': coll_id,
            'type_id': type_id,
            'entity_id': entity_id,
            'default_label': def_label,
            'default_comment': def_comment,
            'default_label_esc': def_label_esc,
            'default_comment_esc': def_comment_esc,
            'default_entity_url': def_entity_url,
            'collection_url': collection_url
        })
        if kwargs:
            fields.update(kwargs)
        return fields

    return def_fields
 def test_post_default_form_default_view(self):
     # Set default entity view, then ensure collection view redirects to it
     self._create_entity_data("entitydefaultview")
     f = entitydata_default_view_form_data(
         entity_id="entitydefaultview",
         action="view",
         default_view="default_view",
     )
     f.pop('entity_id', None)
     u = entitydata_edit_url(action="view",
                             view_id="Default_view",
                             coll_id="testcoll",
                             type_id="testtype",
                             entity_id="entitydefaultview")
     r = self.client.post(u, f)
     self.assertEqual(r.status_code, 302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertEqual(r.content, "")
     v = TestHostUri + u
     self.assertIn(v, r['location'])
     ih = "info_head=Action%20completed"
     im = (
         "info_message=" +
         "Default%20view%20for%20collection%20testcoll%20changed%20to%20" +
         "Default_view/testtype/entitydefaultview")
     self.assertIn(ih, r['location'])
     self.assertIn(im, r['location'])
     # Get collection root and check redirect to entity view
     u2 = collection_view_url(coll_id="testcoll")
     r2 = self.client.get(u2)
     self.assertEqual(r2.status_code, 302)
     self.assertEqual(r2.reason_phrase, "FOUND")
     self.assertEqual(r2.content, "")
     v2 = TestHostUri + entitydata_edit_url(coll_id="testcoll",
                                            view_id="Default_view",
                                            type_id="testtype",
                                            entity_id="entitydefaultview")
     self.assertEqual(v2, r2['location'])
     return
Esempio n. 16
0
 def test_post_default_form_default_view(self):
     # Set default entity view, then ensure collection view redirects to it
     self._create_entity_data("entitydefaultview")
     f = default_view_form_data(
         entity_id="entitydefaultview",
         action="view",
         default_view="default_view",
     )
     f.pop('entity_id', None)
     u = entitydata_edit_url(action="view",
                             view_id="Default_view",
                             coll_id="testcoll",
                             type_id="testtype",
                             entity_id="entitydefaultview")
     r = self.client.post(u, f)
     self.assertEqual(r.status_code, 302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertEqual(r.content, "")
     v = TestHostUri + u
     self.assertIn(v, r['location'])
     ih = "info_head=" + make_quoted_message(message.ACTION_COMPLETED)
     im = "info_message=" + make_quoted_message(
         message.DEFAULT_VIEW_UPDATED,
         view_id="Default_view",
         entity_id="entitydefaultview")
     self.assertIn(ih, r['location'])
     self.assertIn(im, r['location'])
     # Get collection root and check redirect to entity view
     u2 = collection_view_url(coll_id="testcoll")
     r2 = self.client.get(u2)
     self.assertEqual(r2.status_code, 302)
     self.assertEqual(r2.reason_phrase, "FOUND")
     self.assertEqual(r2.content, "")
     v2 = TestHostUri + entitydata_edit_url(coll_id="testcoll",
                                            view_id="Default_view",
                                            type_id="testtype",
                                            entity_id="entitydefaultview")
     self.assertEqual(v2, r2['location'])
     return
 def test_post_default_form_default_view(self):
     # Set default entity view, then ensure collection view redirects to it
     self._create_entity_data("entitydefaultview")
     f = entitydata_default_view_form_data(
             entity_id="entitydefaultview", action="view",
             default_view="default_view", 
             )
     f.pop('entity_id', None)
     u = entitydata_edit_url(
         action="view", view_id="Default_view",
         coll_id="testcoll", type_id="testtype", entity_id="entitydefaultview"
         )
     r = self.client.post(u, f)
     self.assertEqual(r.status_code,   302)
     self.assertEqual(r.reason_phrase, "FOUND")
     self.assertEqual(r.content,       "")
     v = TestHostUri + u
     self.assertIn(v, r['location'])
     ih = "info_head=Action%20completed"
     im = (
         "info_message="+
         "Default%20view%20for%20collection%20testcoll%20changed%20to%20"+
         "Default_view/testtype/entitydefaultview"
         )
     self.assertIn(ih, r['location'])
     self.assertIn(im, r['location'])
     # Get collection root and check redirect to entity view
     u2 = collection_view_url(coll_id="testcoll")
     r2 = self.client.get(u2)
     self.assertEqual(r2.status_code,   302)
     self.assertEqual(r2.reason_phrase, "FOUND")
     self.assertEqual(r2.content,       "")
     v2 = TestHostUri + entitydata_edit_url(
         coll_id="testcoll", view_id="Default_view", type_id="testtype", entity_id="entitydefaultview"
         )
     self.assertEqual(v2, r2['location'])
     return
Esempio n. 18
0
 def test_get_with_login(self):
     r = self.client.get(self.uri)
     # Preferred way to test main view logic
     self.assertTrue(r.context["auth_create"])
     self.assertTrue(r.context["auth_update"])
     self.assertTrue(r.context["auth_delete"])
     self.assertTrue(r.context["auth_create_coll"])
     self.assertTrue(r.context["auth_delete_coll"])
     colls = r.context['collections']
     self.assertEqual(len(colls), len(init_collection_keys))
     for id in init_collections:
         # First two here added in models.site.site_data()
         self.assertEqual(colls[id]["id"],         id)
         self.assertEqual(colls[id]["url"],        init_collections[id]["annal:url"])
         self.assertEqual(colls[id]["annal:id"],   id)
         self.assertEqual(colls[id]["annal:url"],  init_collections[id]["annal:url"])
         self.assertEqual(colls[id]["rdfs:label"], init_collections[id]["rdfs:label"])
     # Check returned HTML (checks template logic)
     # (Don't need to keep doing this as logic can be tested through context as above)
     # (See: http://stackoverflow.com/questions/2257958/)
     s = BeautifulSoup(r.content, "html.parser")
     # title and top menu
     self.assertEqual(s.html.title.string, site_title())
     homelink = s.find(class_="title-area").find(class_="name").h1.a
     self.assertEqual(homelink.string,   "Home")
     self.assertEqual(homelink['href'],  self.uri)
     menuitems = s.find(class_="top-bar-section").find(class_="right").find_all("li")
     self.assertEqualIgnoreWS(menuitems[0].a.string, "User testuser")
     self.assertEqual(menuitems[0].a['href'],        TestBasePath+"/profile/")
     self.assertEqualIgnoreWS(menuitems[1].a.string, "Logout")
     self.assertEqual(menuitems[1].a['href'],        TestBasePath+"/logout/")
     # Displayed colllections and check-buttons
     # trows = s.form.find_all("div", class_="tbody")
     trows = s.select("form > div > div > div")
     self.assertEqual(len(trows), len(init_collection_keys)+4)
     site_data = (
         [ (1, "checkbox", "select", "_annalist_site")
         , (2, "checkbox", "select", "coll1")
         , (3, "checkbox", "select", "coll2")
         , (4, "checkbox", "select", "coll3")
         ])
     for i, itype, iname, ivalue in site_data:
         # tcols = trows[i].find_all("div", class_="view-value")
         tcols = trows[i].select("div > div > div")
         self.assertEqual(tcols[0].input['type'],   itype)
         self.assertEqual(tcols[0].input['name'],   iname)
         self.assertEqual(tcols[0].input['value'],  ivalue)
         self.assertEqual(tcols[1].a.string,        ivalue)
         self.assertEqual(tcols[1].a['href'],       collection_view_url(ivalue))
     # buttons to view/edit/remove selected
     btn_view = trows[5].select("div > input")[0]
     self.assertEqual(btn_view["type"],  "submit")
     self.assertEqual(btn_view["name"],  "view")
     btn_edit = trows[5].select("div > input")[1]
     self.assertEqual(btn_edit["type"],  "submit")
     self.assertEqual(btn_edit["name"],  "edit")
     btn_remove = trows[5].select("div > input")[2]
     self.assertEqual(btn_remove["type"],  "submit")
     self.assertEqual(btn_remove["name"],  "remove")
     # Input fields for new collection
     add_fields = trows[6].select("div > div > div")
     field_id    = add_fields[1].input
     field_label = add_fields[2].input
     self.assertEqual(field_id["type"],    "text")
     self.assertEqual(field_id["name"],    "new_id")
     self.assertEqual(field_label["type"], "text")
     self.assertEqual(field_label["name"], "new_label")
     # Button for new collection
     btn_new = trows[7].select("div > input")[0]
     self.assertEqual(btn_new["type"],     "submit")
     self.assertEqual(btn_new["name"],     "new")
     return
Esempio n. 19
0
 def test_get_with_login(self):
     r = self.client.get(self.uri)
     # Preferred way to test main view logic
     self.assertTrue(r.context["auth_create"])
     self.assertTrue(r.context["auth_update"])
     self.assertTrue(r.context["auth_delete"])
     self.assertTrue(r.context["auth_create_coll"])
     self.assertTrue(r.context["auth_delete_coll"])
     colls = r.context['collections']
     self.assertEqual(len(colls), 4)
     for id in init_collections:
         # First two here added in models.site.site_data()
         self.assertEqual(colls[id]["id"], id)
         self.assertEqual(colls[id]["url"],
                          init_collections[id]["annal:url"])
         self.assertEqual(colls[id]["annal:id"], id)
         self.assertEqual(colls[id]["annal:url"],
                          init_collections[id]["annal:url"])
         self.assertEqual(colls[id]["rdfs:label"],
                          init_collections[id]["rdfs:label"])
     # Check returned HTML (checks template logic)
     # (Don't need to keep doing this as logic can be tested through context as above)
     # (See: http://stackoverflow.com/questions/2257958/)
     s = BeautifulSoup(r.content)
     # title and top menu
     self.assertEqual(s.html.title.string, site_title())
     homelink = s.find(class_="title-area").find(class_="name").h1.a
     self.assertEqual(homelink.string, "Home")
     self.assertEqual(homelink['href'], self.uri)
     menuitems = s.find(class_="top-bar-section").find(
         class_="right").find_all("li")
     self.assertEqual(menuitems[0].a.string, "User testuser")
     self.assertEqual(menuitems[0].a['href'], TestBasePath + "/profile/")
     self.assertEqual(menuitems[1].a.string, "Logout")
     self.assertEqual(menuitems[1].a['href'], TestBasePath + "/logout/")
     # Displayed colllections and check-buttons
     trows = s.form.find_all("div", class_="row")
     self.assertEqual(len(trows), 7)
     tcols1 = trows[1].find_all("div")
     self.assertEqual(tcols1[0].a.string, "coll1")
     self.assertEqual(tcols1[0].a['href'], collection_view_url("coll1"))
     self.assertEqual(tcols1[2].input['type'], "checkbox")
     self.assertEqual(tcols1[2].input['name'], "select")
     self.assertEqual(tcols1[2].input['value'], "coll1")
     tcols2 = trows[2].find_all("div")
     self.assertEqual(tcols2[0].a.string, "coll2")
     self.assertEqual(tcols2[0].a['href'], collection_view_url("coll2"))
     self.assertEqual(tcols2[2].input['type'], "checkbox")
     self.assertEqual(tcols2[2].input['name'], "select")
     self.assertEqual(tcols2[2].input['value'], "coll2")
     tcols3 = trows[3].find_all("div")
     self.assertEqual(tcols3[0].a.string, "coll3")
     self.assertEqual(tcols3[0].a['href'], collection_view_url("coll3"))
     self.assertEqual(tcols3[2].input['type'], "checkbox")
     self.assertEqual(tcols3[2].input['name'], "select")
     self.assertEqual(tcols3[2].input['value'], "coll3")
     tcols4 = trows[4].find_all("div")
     self.assertEqual(tcols4[0].a.string, "testcoll")
     self.assertEqual(tcols4[0].a['href'], collection_view_url("testcoll"))
     self.assertEqual(tcols4[2].input['type'], "checkbox")
     self.assertEqual(tcols4[2].input['name'], "select")
     self.assertEqual(tcols4[2].input['value'], "testcoll")
     # Remove/new collection buttons
     btn_remove = trows[5].find("div", class_="right")
     self.assertEqual(btn_remove.input["type"], "submit")
     self.assertEqual(btn_remove.input["name"], "remove")
     # Input fields and button for new collection
     field_id = trows[6].find_all("div")[0]
     self.assertEqual(field_id.input["type"], "text")
     self.assertEqual(field_id.input["name"], "new_id")
     field_id = trows[6].find_all("div")[1]
     self.assertEqual(field_id.input["type"], "text")
     self.assertEqual(field_id.input["name"], "new_label")
     btn_new = trows[6].find_all("div")[2]
     self.assertEqual(btn_new.input["type"], "submit")
     self.assertEqual(btn_new.input["name"], "new")
     return