Example #1
0
 def test_is_valid_correct_no_alias(self):
     """
     Tests that the is_valid property correctly returns False if the Location is not assigned
     an alais at all.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertFalse(handle_location.is_valid)
     del handle_location
Example #2
0
 def test_directives_correct_empty(self):
     """
     Tests that a Location object properly returns an empty list, if no directive was
     assigned to it.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertEqual(handle_location.directives, [])
     del handle_location
Example #3
0
 def test_language_correct_defaults_to_html(self):
     """
     Tests that the language is set by default to 'html' if we don't provide any or if we assign
     it None.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertEqual(handle_location.language, 'html')
     del handle_location
Example #4
0
 def test_directives_wrong_misformatted_signature(self):
     """
     Tests that a ValueError exception is raised if we try to add a directive to a Listen
     object but the directive passed in has a signature that has a wrong format.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(ValueError, setattr, handle_location, "directives",
                       {"signature": "wrong_format"})
     del handle_location
Example #5
0
 def test_is_valid_correct_one_alias(self):
     """
     Tests that the is_valid property correctly returns True if the Location is assigned a
     unique alias.
     """
     handle_location = Location(**{"location": self.valid_location})
     handle_location.alias = self.valid_alias
     self.assertTrue(handle_location.is_valid)
     del handle_location
Example #6
0
 def test_deny_correct_defaults_to_all(self):
     """
     Tests that if we don't pass anything as a deny directives, it defaults to an empty list.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertEqual(handle_location.deny, [])
     handle_location.deny = None
     self.assertEqual(handle_location.deny, [])
     del handle_location
Example #7
0
 def test_language_correct(self):
     """
     Tests that the language property is properly set if we pass in a valid language.
     """
     for language in self.valid_languages:
         handle_location = Location(**{"location": self.valid_location})
         handle_location.language = language
         self.assertEqual(handle_location.language, language)
         del handle_location
Example #8
0
 def test_allow_correct_defaults_to_all(self):
     """
     Tests that if we don't pass anything as an allow directives, it defaults to "all".
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertEqual(handle_location.allow, ["all"])
     handle_location.allow = None
     self.assertEqual(handle_location.allow, ["all"])
     del handle_location
Example #9
0
 def test_directives_wrong_mistyped_signature(self):
     """
     Tests that a TypeError exception is raised if we try to add a directive to a Listen
     object but the directive passed in has a signature that is not a string.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(TypeError, setattr, handle_location, "directives",
                       {"signature": 124})
     del handle_location
Example #10
0
 def test_alias_correct_multiple_times_the_same_alias(self):
     """
     Tests that if a Location object is passed multiple times the same alias, only one is
     stored.
     """
     handle_location = Location(**{"location": self.valid_location})
     for i in range(10):
         handle_location.alias = self.valid_alias
     self.assertEqual(handle_location.alias.count(self.valid_alias), 1)
     del handle_location
Example #11
0
 def test_allow_correct_all_rules_any_other_rule_out(self):
     """
     Tests that if any of the allow directives is "all" then all other allow directives are not
     considered at all.
     """
     allow_directives = ["1.2.3.4", "1.2.3.5/24", "all", "2.2.2.2"]
     handle_location = Location(**{"location": self.valid_location})
     handle_location.allow = allow_directives
     self.assertEqual(handle_location.allow, ["all"])
     del handle_location
Example #12
0
 def test_allow_correct(self):
     """
     Tests that if we pass in a valid set of directives, allow is properly updated to that
     value.
     """
     for valid_allow_directive in self.valid_allow_directives:
         handle_location = Location(**{"location": self.valid_location})
         handle_location.allow = valid_allow_directive
         self.assertEqual(handle_location.allow, valid_allow_directive)
         del handle_location
Example #13
0
 def test_allow_correct_no_dupes(self):
     """
     Tests that if among the allow directives passed in "all" is not present, only a unique copy
     of each allow directive is stored.
     """
     allow_directives = ["1.2.3.4"]
     handle_location = Location(**{"location": self.valid_location})
     handle_location.allow = allow_directives * 5
     self.assertEqual(handle_location.allow, ["1.2.3.4"])
     del handle_location
Example #14
0
 def test_is_valid_correct_multiple_aliases(self):
     """
     Tests that the is_valid property correctly returns False if the Location is assigned two or
     more aliases.
     """
     handle_location = Location(**{"location": self.valid_location})
     handle_location.alias = "foo1"
     handle_location.alias = "foo2"
     self.assertFalse(handle_location.is_valid)
     del handle_location
Example #15
0
 def test_directives_wrong_missing_signature(self):
     """
     Tests that a ValueError exception is raised if we try to add a directive to a Listen
     object but the directive passed in, despite being a dictionary, lacks the 'signature'
     key.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(ValueError, setattr, handle_location, "directives",
                       {"not_signature": 124})
     del handle_location
Example #16
0
 def test_directives_correct_no_dupes(self):
     """
     Tests that a Location object properly returns a unique directive if the same directive
     is added multiple times.
     """
     directive = {"signature": "a:0.0.0.0:80:a.b.c:/"}
     handle_location = Location(**{"location": self.valid_location})
     for i in range(10):
         handle_location.directives = directive
     self.assertEqual(len(handle_location.directives), 1)
     self.assertEqual(directive, handle_location.directives[0])
     del handle_location
Example #17
0
 def test_language_wrong_mistyped(self):
     """
     Tests that a TypeError exception is raised if a language is passed in, but not as a string.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         TypeError,
         setattr,
         handle_location,
         "language",
         123,
     )
     del handle_location
Example #18
0
 def test_init_correct_root(self):
     """
     Tests that an Location object is properly instantiated if a root location, that is a simple
     forward slash, is passed in during initialization.
     """
     handle_location = Location(**{"location": self.valid_location_root})
     self.assertEqual(handle_location.location, self.valid_location_root)
     self.assertEqual(handle_location.language, 'html')
     self.assertEqual(handle_location.alias, [])
     self.assertEqual(handle_location.allow, ["all"])
     self.assertEqual(handle_location.deny, [])
     self.assertFalse(handle_location.is_valid)
     del handle_location
Example #19
0
 def test_language_wrong_invalid(self):
     """
     Tests that a ValueError exception is raised if a language is passed in as a string,
     but its value is not among the valid ones.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         ValueError,
         setattr,
         handle_location,
         "language",
         "not_a_valid_language",
     )
     del handle_location
    def _build(self, *args, **kwargs):
        """
        Turns the input directives into a unique list of Location objects.
        """
        for directive in self.directives:
            alias, ip, port, server_name, location = directive[
                "signature"].split(":")

            if location not in self.locations.keys():
                handle_location = Location(**{
                    "location": location,
                })
                self.locations = handle_location
            self.locations[location].directives = directive
Example #21
0
 def test_alias_wrong_mistyped(self):
     """
     Tests that a TypeError exception is raised if a Location is assigned an alias that is not
     a string.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         TypeError,
         setattr,
         handle_location,
         "alias",
         123,
     )
     del handle_location
Example #22
0
 def test_alias_wrong_misformatted(self):
     """
     Tests that a TypeError exception is raised if a Location is assigned an empty string as an
     alias.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         ValueError,
         setattr,
         handle_location,
         "alias",
         "",
     )
     del handle_location
 def test_locations_correct(self):
     """
     Tests that if a ServerName object properly returns the stored location(s).
     """
     location = "/var/www/foo/"
     handle_servername = ServerName(**{
         "domain": self.valid_domain,
     })
     handle_location = Location(**{"location": location})
     handle_servername.locations = handle_location
     self.assertEqual(handle_servername.locations[location].location,
                      location)
     del handle_location
     del handle_servername
Example #24
0
 def test_directives_wrong_missing_directive(self):
     """
     Tests that a ValueError exception is raised if we try to add a directive to a ServerName
     object but we don't pass any.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         ValueError,
         setattr,
         handle_location,
         "directives",
         None,
     )
     del handle_location
Example #25
0
 def test_directives_wrong_mistyped_directive(self):
     """
     Tests that a TypeError exception is raised if we try to add a directive to a Listen
     object but the directive passed in is not a dictionary.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         TypeError,
         setattr,
         handle_location,
         "directives",
         "not_a_dictionary",
     )
     del handle_location
Example #26
0
 def test_alias_wrong_missing(self):
     """
     Tests that a ValueError exception is raised if a Location is assigned an alias, but no
     alias is passed in.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         ValueError,
         setattr,
         handle_location,
         "alias",
         None,
     )
     del handle_location
Example #27
0
 def test_allow_wrong_mistyped(self):
     """
     Tests that a TypeError exception is raised if allow directives are passed in but not as a
     list.
     """
     handle_location = Location(**{"location": self.valid_location})
     self.assertRaises(
         TypeError,
         setattr,
         handle_location,
         "allow",
         "not_a_list",
     )
     del handle_location
Example #28
0
    def test_language_configuration_wrong_mistyped(self):
        """
        Tests that a TypeError exception is raised if the language configuration is passed in, but
        not as a dictionary.
        """
        handle_location = Location(**{"location": self.valid_location})

        self.assertRaises(
            TypeError,
            setattr,
            handle_location,
            "language_configuration",
            123,
        )
        del handle_location
 def test_locations_correct_multiple_times_the_same_location(self):
     """
     Tests that if a ServerName object is passed multiple times the same Location, only one is
     added.
     """
     location = "/var/www/foo/"
     handle_servername = ServerName(**{
         "domain": self.valid_domain,
     })
     for i in range(10):
         handle_location = Location(**{"location": location})
         handle_servername.locations = handle_location
     self.assertEqual(len(handle_servername.locations), 1)
     self.assertEqual(handle_servername.locations[location].location,
                      location)
     del handle_servername
Example #30
0
 def test_language_configuration_correct_python_default_values(self):
     """
     Tests that setting the language as Python but not providing any configuration parameter for
     Gunicorn gets it to the default 127.0.0.1:8000 address.
     """
     parameters = {"language": "python"}
     directive = {
         "signature": "a:0.0.0.0:80:a.b.c:/",
         "parameters": parameters
     }
     handle_location = Location(**{"location": self.valid_location})
     handle_location.directives = directive
     self.assertEqual(handle_location.language_configuration["ip"],
                      "127.0.0.1")
     self.assertEqual(handle_location.language_configuration["port"],
                      "8000")
     del handle_location